auditd によるシステム監査
システム監査は非常に重要なタスクであり、すべてのサーバーに含める必要があります。これにより、システム内で正確に何が起こっているかに関連する詳細を監査できます。 auditd は、Linux 監査システムのユーザー空間コンポーネントです。これは、システム ユーザーが auditd を実行して、Linux システムで機能を監査するためのルールとアラートを構成できることを意味します。
auditd の最も優れた点の 1 つは、カーネルと緊密に統合されていることです。これにより、必要なほぼすべてを監視することができます。ユーザーが何が起こっているかを確認できるようにするために、auditd は監査関連のすべてのイベントをディスクに記録し、ausearch や aureport などのさまざまなツールを使用してログ ファイルを調べることができます。
デフォルトでは、構成されているルールはありません。 /etc/audit/audit.rules にルールを記述する必要があります。 構成ファイルが読み取られ、対応する監査アクションが適用されます。
Auditd のインストール
これで、auditd が何であるかをある程度理解できたので、先に進んで、上記の使用例で auditd を操作してみましょう:
1. auditd パッケージをインストールします。 auditd パッケージは、CentOS 7 システムのデフォルト インストールの一部です。次のコマンドで確認できます:
# rpm -qa | grep audit audit-libs-2.6.5-3.el7_3.1.x86_64 audit-2.6.5-3.el7_3.1.x86_64 audit-libs-python-2.6.5-3.el7_3.1.x86_64
2. パッケージがシステムの一部でない場合は、先に進んでインストールできます:
# yum install audit
3. 監査デーモンが実行されていることを確認します。次のコマンドを使用します:
# systemctl status auditd auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-10-24 04:33:48 UTC; 4min 21s ago Docs: man:auditd(8) https://people.redhat.com/sgrubb/audit/ Process: 425 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Main PID: 424 (auditd) CGroup: /system.slice/auditd.service └─424 /sbin/auditd -n
監査デーモンを稼働させているので、auditd を使用して 4 つのユースケースすべてを実現する方法を見てみましょう。
コマンドのコピー、移動、削除、削除の監査規則
1. 既存の構成ファイル (監査ルール) のバックアップを取ります:
# cp /etc/audit/audit.rules /etc/audit/audit.rules.bkp
2. /etc/audit/audit.rules ファイルを編集します。 次のルールを追加して永続化します:
# vi /etc/audit/audit.rules # Audit Copy, Move, Delete & Create file commands -a exit,always -F arch=b64 -S execve -F path=/bin/cp -k Copy -a exit,always -F arch=b64 -S execve -F path=/bin/mv -k Move_Rename -a exit,always -F arch=b64 -S execve -F path=/bin/rm -k Delete -a exit,always -F arch=b64 -S execve -F path=/bin/vi -k Create_Edit_View_File # Audit shutdown & Reboot command -a exit,always -F arch=b64 -S execve -F path=/sbin/reboot -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/init -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/poweroff -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/shutdown -k Reboot # Audit mount unmount commands -a exit,always -F arch=b64 -S execve -F path=/bin/mount -k mount_device -a exit,always -F arch=b64 -S execve -F path=/bin/umount -k unmount_device # Kill Process -a exit,always -F arch=b64 -S kill -k Kill_Process
3. auditd サービスを再起動して変更を適用します。
# service auditd restart
4. 追加されたルールを一覧表示して、これらが正しいことを確認します:
# auditctl -l注意 :bash (および他の多くのシェル) には、実際には /usr/bin/kill を実行しない組み込みの「kill」コマンドがあります。したがって、代わりに組み込みコマンドを実行すると、 comm=bash 正しい。システムに強制的に /usr/bin/kill 外部プログラムを使用させる方法はありません。 comm=kill シェルは「kill」という名前の外部プログラムを実行せずにシステムコールを直接呼び出すことができるため、すべての場合に発生するわけではありません