Closed19

debian

hagewashihagewashi

オープンソースセキュリティの2大陣営 AppArmor と SELinux
従来のコンピュータセキュリティ対策 = 重要なサービスへのアクセスを制限する方法
しかし、コンピュータを保護するということは、コンピュータ本体ではなくアプリケーションを保護すること
AppArmor:アプリケーションをロックダウンし、アプリケーションに必要なファイルについては、一般的な読み取り/書き込みアクセスモードに従って絶対パス名でアクセスするようにする。
つまり、個々のアプリケーションに焦点を当て、各アプリケーションが必要不可欠なライブラリやファイルのみにアクセスするよう制限している。

また、AppArmorはLinux下のファイルアクセスに関してはDACモデルを利用している。まず、アプリケーションを実行するユーザーは、そのプログラムを実行しファイルにアクセスするための権限を持たなければならない。その後で、AppArmorがMandatory Access Control(MAC)のメカニズムを適用し、各プログラムにその仕事を行うのに必要な権限だけを与える。従って、プログラムXがライブラリYへのアクセスを必要とする場合は、まず、そのために必要な権限を持っているかどうかがDACによって確認される。その後、ようやくAppArmorが登場して、権限をより細かくロックダウンする。

AppArmorの機能を最大限に活用するためには、対象アプリケーションの仕組みを細部までよく知る必要がある。いったんプロファイルを設定すると、そのプロファイルに含め忘れた機能にはアクセスできなくなる。慎重に設定しないと、AppArmorの柔軟性が困った事態をもたらすおそれがあるのだ。これを回避するには、さまざまなファイルとライブラリに対する参照を1つ1つ確認し、すべての参照について適切な権限を選択するようにする。ワイルドカード文字を使用するときは特に注意する。

SELinux:オペレーティングシステム全体を制御しており、ディストリビューション内の情報のフローまでも管理している。SELinuxのアプローチはArmorよりも対象範囲が広く、MACやMulti-Level Security(MLS)といった強力なセキュリティ技術に基づいている。ただし、そのぶんだけセットアップは難しくなっている。

どちらのソリューションも、ローカルコンピュータと外界との境界領域で動作しているアプリケーションを保護することを目的としている点は同じである。
https://www.itmedia.co.jp/enterprise/articles/0612/14/news056_3.html
https://www.usupi.org/sysad/220.html

hagewashihagewashi

Debianのapt、apt-get、aptitudeの違い
パッケージ管理はAPT(Advanced Package Tool)で行われる
そのコマンドが上記の三種類
apt推奨:apptitiudeは外部プロジェクトとして誕生した派生APT。aptはapt-getの改良版。
https://ac-as.net/apt-apt-get-aptitude-difference/

hagewashihagewashi

SSH
https://8oclockis.blogspot.com/2018/04/virtualbox.html
https://webkaru.net/linux/ssh-prohibit-root-login/
Q. なぜrootユーザーのSSH接続を禁止するのか

  1. 特権ユーザーの権限が大きすぎる
    rootユーザーは、システム内のあらゆるリソースに完全なアクセス権を持っています。つまり、すべてのファイル、プロセス、ユーザーアカウントなどにアクセスできます。したがって、rootユーザーでログインすると、攻撃者がリモートからシステムにアクセスするために使用することができる、非常に強力な権限を提供してしまいます。

  2. 人為的ミスによるシステムの破壊
    rootユーザーによる操作は、システムに深刻な影響を与える可能性があります。誤って重要なファイルを削除したり、システムの設定を変更したりすることで、システムの安定性や機能性が損なわれることがあります。また、rootユーザーでログインすることで、通常は許可されていない操作を実行することができるため、誤ってシステムに悪影響を与えることもあります。

  3. 不正アクセスのリスク
    rootユーザーでSSH接続することは、攻撃者にとって非常に魅力的な攻撃ベクトルとなります。攻撃者がrootユーザーでログインすることができれば、システムの全ての情報にアクセスできるだけでなく、攻撃者が不正な操作を行うための完全な権限を得ることができます。また、攻撃者がrootユーザーのパスワードを入手することで、システムを完全に制御することができるため、非常に危険です。

sshコマンド
apt show ssh (sshのパッケージ情報)
SSHが起動できているか
$ sudo systemctl status ssh
SSH接続ができているか確認
$ ssh <user-name>@<host-name>
特定のユーザーでsshのportを開く
$ ssh -p 4242 ユーザー名@ホスト名
ポートの解放状態の確認
$ ss -nltu
-n : ポート番号をサービス名変換しない(例えば:httpと表示せず:80と表示する)
-l : Listen(待ち受け)ポートのみを表示する
-t : TCP を表示する
-u : UDP を表示する
(ssコマンドはnetstatコマンドと同じようなもの)

hagewashihagewashi

https://atmarkit.itmedia.co.jp/ait/articles/1612/12/news016.html
https://nekodeki.com/linuxのユーザー名を変更する/
https://qiita.com/tukiyo3/items/eb160174fa0bad551a45
ユーザーが所属しているグループ名を表示
$ id -Gn <user-name>
新しいユーザー作成
$ sudo adduser newuser
新しいグループを作成
$ sudo groupadd 新グループ名
ユーザーをグループに追加
$ gpasswd -a ユーザー名 グループ名
ユーザーをグループから削除
$ sudo gpasswd -d [ユーザー名] [グループ名]
ユーザー一覧を出すコマンド
$ cut -d: -f1 /etc/passwd
グループとそれに所属するユーザーの一覧
$ cat /etc/group
パスワード変更
$ passwd ユーザー名
ユーザーの削除
$ sudo userdel -r <ユーザ名>

hagewashihagewashi

https://wiki.debian.org/Uncomplicated Firewall (ufw)
UbuntuやDebianなどのLinuxディストリビューションで使われる、簡単にファイアウォールを設定するためのツール
ファイアウォール(Firewall)とは、コンピュータネットワークにおいて、ネットワークトラフィックを監視し、許可された通信だけを許可し、不正な通信を遮断するためのセキュリティシステムのこと

ufw command
ufw enable
ufw disable
ufw allow <port number>
ufwの起動確認
$ ufw status
or
$ sudo systemctl status ufw
ufwでどのポートが開いているか確認
$ sudo ufw status
ufwでのポートの削除の仕方
$ sudo ufw status numbered
$sudo ufw delete 上記コマンドで出た削除したいポートの番号

hagewashihagewashi

https://orebibou.com/ja/home/201706/20170619_001/
https://ja.getdocs.org/how-to-edit-the-sudoers-file
https://qiita.com/progrhyme/items/6f936033b9d23efb1741

sudo command
su - ユーザーネーム
sudo [ option ]
-h ヘルプオプション
-l 許可・禁止されているコマンド
-u [ユーザー名] コマンドを実行するユーザーを指定

visudo
Ctrl + s (保存)
Ctrl + x (終了)

ホストネーム変更
$ vim /etc/hostname
$ sudo hostnamectl set-hostname 新ホスト名

hagewashihagewashi

IPアドレス:インターネット上における住所に当たり、ネットワークに存在する機器を識別するための数値(識別子)です。
ドメイン名: IPアドレスの数値は最大12桁の数字により成り立っているので利用者が覚えやすいように、数値を名前に変換したものがドメイン名になります。

hagewashihagewashi

passwordポリシー
apt -y install libpam-pwquality
/etc/login.defs でvim編集
有効期限は30日:160行目
最短利用日数は2日:161行目
有効期限の7日前に警告メッセージを発する:162行目
/etc/security/pwquality.conf でvim編集
10文字以上:10行目
大文字と数字を含む:15、20行目
最大連続文字数は3:33行目
ユーザ名を含まない : 55行目
変更前に含まれる文字が変更後のパスワードに7文字以上含まれてはならない

https://zenn.dev/pictogram/scraps/709d94e8751f15
https://www.debian.org/doc/manuals/debian-reference/ch04.ja.html

hagewashihagewashi

シェルスクリプト課題関連

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-meminfo

LVM (Logical Volume Manager) がアクティブかどうかとは、LVMが使用されているストレージボリュームグループがシステムにマウントされているかどうかを指します。LVMは、複数の物理ボリュームを1つの仮想ボリュームグループにまとめ、論理ボリュームとして扱うことができる機能を提供するため、ストレージの管理を柔軟に行うことができます。したがって、LVMがアクティブであることは、ストレージの正常な動作に必要な状態であると言えます。LVMがアクティブでない場合、ストレージのアクセスや管理に関する問題が発生する可能性があります。

"Active connections" とは、あるシステムまたはサーバーが現在処理しているネットワーク接続の数を指します。これには、TCP / IPネットワーク上でアクティブな接続が含まれます。具体的には、Webサーバーにアクセスするユーザー、データベースサーバーに接続するクライアント、SSHで接続しているユーザーなどが該当します。これらの接続がアクティブであることは、システムリソースの消費やネットワークの負荷に影響を与える可能性があるため、管理者にとって重要な情報です。

uname オプション
-a  全ての情報
-o  OS名
-m ハードウェア名
-v カーネルバージョン
grep -c はマッチした行数を表示

hagewashihagewashi

CPUの使用率

https://milestone-of-se.nesuke.com/sv-basic/linux-basic/top-command/

https://lanchesters.site/linux-cpu-use/

https://qiita.com/miyuki_samitani/items/8016af0f6df7a296d303

[root@centos8 ~]# vmstat
s -----------memory----------- ---swap-- -----io---- -system-- ------cpu-----
b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 481508 2216 688484 0 0 361 65 229 402 2 2 93 4 0

vmstatコマンドの結果のcpuの項目(us、sy、id、wa、st)を足すと100になります。
従って、CPU使用率は
CPU使用率(%)=100 - idの値
となります。

各種ツール(sar, vmstat, mpstat等)で得られるCPU使用率のうち、%steal は仮想化環境におけるCPU資源の競合具合(特に競合に負けて盗まれた(=stealされた)分)をあらわしている。

hagewashihagewashi

ssh command
SSHが起動できているか
$ systemctl status ssh
SSH接続ができているか確認
$ ssh <user-name>@<host-name>

hagewashihagewashi

cron
https://www.server-memo.net/tips/crontab.html
https://utano.jp/entry/2016/04/cron-sudo-require-tty/

rootユーザーのcronジョブ編集
$ sudo crontab -e
monitoring,shの場所
/usr/local/bin/monitoring.sh
全ユーザーのジョブ表示(上のコマンドで作るジョブの格納場所)
$ cat /var/spool/cron/crontabs/*
or
$ crontab -l
cronが動いてるか確認
$ systemctl status cron
logファイルを確認
$ cat /var/log/cron.log
cronのログがどこにあるか?
$ cat /etc/rsyslog.conf
で確認し、 /var/log/cron.logにあることを確認できる
cronを停止する
$ sudo systemtl disable cron
cronを起動する
$ sudo systemctl enable cron

hagewashihagewashi

便利コマンド
ファイルがどこのディレクトリにあるか知りたい時
whereis <ファイル名>
rebootする
$ sudo reboot

このスクラップは2023/01/24にクローズされました