「Audit フレームワーク」の版間の差分
(英語版より部分的に翻訳) |
(翻訳完了) |
||
3行目: | 3行目: | ||
Linux の audit フレームワークは CAPP (Controlled Access Protection Profiles) に準拠した監査システムであり、システム上のセキュリティに関係した(または無関係な)イベントを収集できます。これを使うことにより、システム上で行われた動作を追跡できるようになります。 |
Linux の audit フレームワークは CAPP (Controlled Access Protection Profiles) に準拠した監査システムであり、システム上のセキュリティに関係した(または無関係な)イベントを収集できます。これを使うことにより、システム上で行われた動作を追跡できるようになります。 |
||
+ | Linux audit はシステム上で何が起きているかを詳細に分析できる手段であり、システムをよりセキュアにするために役に立ちます。しかしそれ自体がなにかセキュリティを強化するものではありません。つまり、それ自体が悪意のあるコードや様々な悪用からシステムを守ってくれるものではありません。そうではなく、これらの問題を追跡し、セキュリティ対策を施すための情報を audit は提供します。 |
||
− | Linux audit helps make your system more secure by providing you with a means to analyze what is happening on your system in great detail. It does not, however, provide additional security itself—it does not protect your system from code malfunctions or any kind of exploits. Instead, Audit is useful for tracking these issues and helps you take additional security measures, to prevent them. |
||
audit フレームワークはカーネルが報告するイベントを受信し、ログファイルに書き込みます。 |
audit フレームワークはカーネルが報告するイベントを受信し、ログファイルに書き込みます。 |
||
58行目: | 58行目: | ||
===システムコールを監査する=== |
===システムコールを監査する=== |
||
+ | {{ic|-a}} オプションをつけると、システムコール呼び出しを監査できます。 |
||
− | The audit framework allow you to audit the syscalls performed with the {{ic|-a}} option. |
||
+ | セキュリティに関連したルールの例として、{{ic|chmod システムコール}} を追跡し、ファイル所有権の変更を検出します: |
||
− | A security related rule is to track the {{ic|chmod syscall}}, to detect file ownership changes : |
||
auditctl -a entry,always -S chmod |
auditctl -a entry,always -S chmod |
||
+ | 全てのシステムコールのリストを見るには: man syscalls |
||
− | For a list of all syscalls : man syscalls |
||
− | + | たくさんのルールと方法が考えられます。man auditctl と man audit.rules を参照してください。 |
|
==ログを検索する== |
==ログを検索する== |
||
90行目: | 90行目: | ||
===異常を探す=== |
===異常を探す=== |
||
+ | {{ic|aureport}} を使うと異常なイベントの発生を素早く報告させることができます。異常なイベントとは、ネットワークインターフェイスがプロミスキャスモードに設定された、プロセスまたはスレッドが ENOMEM エラーで異常終了した、などです。 |
||
− | The {{ic|aureport}} tool can be used to quicly report any anormal event performed on the system, it include network interface used in promiscous mode, process or thread crashing or exiting with ENOMEM error etc. |
||
− | + | {{ic|aureport}} の一番簡単な使い方は : |
|
# aureport -n |
# aureport -n |
||
+ | aureport を使ってカスタムレポートを生成することもできます。man aureport を参照してください。 |
||
− | aureport can be used to generate custom report, see man aureport. |
||
==どのファイル・システムコールを監査すべきか?== |
==どのファイル・システムコールを監査すべきか?== |
||
+ | ルールを追加するとログの量も増えます。その情報量が処理できる範囲内でなければならないことを忘れないで下さい。 |
||
− | Keep in mind that each audit rule added will generate logs, so you must be ready to treat this amount of information. |
||
+ | 基本的に、セキュリティに関係したイベント・ファイルは監視しなければなりません。ids、ips、anti-rootkits などです。 |
||
− | Basically, each security-related event/file must be monitored, like ids, ips, anti-rootkits etc. |
||
+ | 逆に、全ての write システムコールを追跡することはまったく無意味です。ちょっとコンパイルしただけでログが溢れてしまうでしょう。 |
||
− | On the other side, it's totally useless to track every write syscall, the smallest compilation will fill your logs with this event. |
||
+ | 粒度を非常に小さくして複雑なルールセットを構成することもできます。もしそうしたい場合は auditctl の man ページは読む価値があります。 |
||
− | More complex set of rules can be set up, performing auditing on a very fine-grained base. If you want to do so, the man pages of auditctl are worth-reading. |
||
==他のホストからのログを収集する== |
==他のホストからのログを収集する== |
||
+ | audit フレームワークはプラグインシステムを備えており、それによりローカルのログファイルをリモートの auditd に送ることができます。 |
||
− | The audit framework has an plugin system which provides the possibility to send local logfiles to an remote auditd. |
||
=== ログファイルを送信する === |
=== ログファイルを送信する === |
||
+ | ログファイルをリモートホストに送るには、{{ic|audisp-remote}} プラグインが必要です。これは {{Pkg|audit}} パッケージにより自動的にインストールされます。このパッケージを有効にするには: |
||
− | To send your logfiles to an remote host you need the {{ic|audisp-remote}} plugin which comes automatically with the {{Pkg|audit}} package. |
||
− | Activate the plugin: |
||
{{hc|head=/etc/audisp/plugins.d/au-remote.conf|output= |
{{hc|head=/etc/audisp/plugins.d/au-remote.conf|output= |
||
active = yes |
active = yes |
||
119行目: | 118行目: | ||
}} |
}} |
||
+ | そしてログの送り先になるリモートホストを設定します: |
||
− | and set the remote host where the logs should be send to: |
||
{{hc|head=/etc/audisp/audisp-remote.conf|output= |
{{hc|head=/etc/audisp/audisp-remote.conf|output= |
||
129行目: | 128行目: | ||
=== ログファイルを受け取る === |
=== ログファイルを受け取る === |
||
+ | リモートの audispds からのメッセージを受信できるようにするには、tcp オプションをセットするだけです: |
||
− | To make audit listen for remote audispds you just need to set the tcp options: |
||
{{hc|head=/etc/audit/auditd.conf|output= |
{{hc|head=/etc/audit/auditd.conf|output= |
||
tcp_listen_port = 60 |
tcp_listen_port = 60 |
||
tcp_listen_queue = 5 |
tcp_listen_queue = 5 |
||
tcp_max_per_addr = 1 |
tcp_max_per_addr = 1 |
||
− | ##tcp_client_ports = 1024-65535 # |
+ | ##tcp_client_ports = 1024-65535 #任意 |
tcp_client_max_idle = 0 |
tcp_client_max_idle = 0 |
||
}} |
}} |
||
+ | これで設定した'''全部の'''ホストのログが受信する auditd のログファイルに書き込まれるようになります。 |
||
− | Now you can view the logs of '''all''' configured hosts in the logfiles of the recieving auditd. |
2016年1月24日 (日) 16:41時点における版
Linux の audit フレームワークは CAPP (Controlled Access Protection Profiles) に準拠した監査システムであり、システム上のセキュリティに関係した(または無関係な)イベントを収集できます。これを使うことにより、システム上で行われた動作を追跡できるようになります。
Linux audit はシステム上で何が起きているかを詳細に分析できる手段であり、システムをよりセキュアにするために役に立ちます。しかしそれ自体がなにかセキュリティを強化するものではありません。つまり、それ自体が悪意のあるコードや様々な悪用からシステムを守ってくれるものではありません。そうではなく、これらの問題を追跡し、セキュリティ対策を施すための情報を audit は提供します。
audit フレームワークはカーネルが報告するイベントを受信し、ログファイルに書き込みます。
目次
インストール
CONFIG_AUDIT を有効にしたカスタムカーネルをインストールします。 audit をインストールし、次を実行します:
# systemctl enable auditd.service # systemctl start auditd.service
audit フレームワークは auditd デーモンから構成されます。アプリケーションやシステムの動作によりカーネルの audit インターフェイスが発動し、audit インターフェイスが生成した audit メッセージを auditd が書き込みます。
このデーモンはいくつかのコマンドとファイルにより制御されます:
- auditctl : その場でデーモンの挙動をコントロールします。ルールを追加するなど
- /etc/audit/audit.rules : ルールや auditd のパラメータを記述します
- aureport : システムの動作レポートを生成します
- ausearch : イベントを検索します
- auditspd : イベント通知をディスク上のログに書き込む代わりに他のアプリケーションに中継するデーモンです
- autrace : プロセスをトレースするためのコマンド。straceに似ています
- /etc/audit/auditd.conf : ログに関する設定ファイルです
ルールの追加
ルールを追加する前に注意しなければならないのは、audit フレームワークは非常に饒舌で、ルールを実際に運用する前に注意深くテストする必要があることです。実際、たった1つのルールにより2,3分でログを溢れてしまうこともあり得ます。
ファイルとディレクトリへのアクセスを監査する
audit フレームワークの一番簡単な使い方は、特定のファイルへのアクセスをログに記録することです。
それには -w
オプションを使います。
一番簡単なルールの例として passwd ファイルへのアクセスを追跡する:
# auditctl -w /etc/passwd -p rwxa
フォルダへのアクセスを追跡するには:
# auditctl -w /etc/security/
最初のルールは /etc/passwd
への読み込み r
、書き込み w
、実行 x
、属性変更 a
を追跡します。
2番目のルールは /etc/security/
への全てのアクセスを追跡します。
有効なルールのリストを表示するには:
# auditctl -l
全てのルールを削除するには:
# auditctl -D
ルールが正しく動作することを確認したら、それを /etc/audit/audit.rules
に書きます:
-w /etc/audit/audit.rules -p rwxa -w /etc/security/
システムコールを監査する
-a
オプションをつけると、システムコール呼び出しを監査できます。
セキュリティに関連したルールの例として、chmod システムコール
を追跡し、ファイル所有権の変更を検出します:
auditctl -a entry,always -S chmod
全てのシステムコールのリストを見るには: man syscalls
たくさんのルールと方法が考えられます。man auditctl と man audit.rules を参照してください。
ログを検索する
audit フレームワークにはシステム上で発生したイベントを調べるためのツールがいくつか含まれています。
PIDを指定する
特定の PID に関係するイベントを検索するには ausearch
を使います:
# ausearch -p 1
このコマンドを実行すると、ルールに応じて記録されたイベントの中から PID 1 (systemd) に関係するものすべてを表示します。
キーの使い方
イベントを管理するためにキーを使うことが推奨されます。
イベントの検索を容易にするために、ルールに -k
オプションをつけます:
# auditctl -w /etc/passwd -p rwxa -k KEY_pwd
するとキー KEY_pwd
を使ってイベントを検索できるようになります。次のコマンドにより /etc/passwd
に関係するイベントだけを表示できます:
# ausearch -k KEY_pwd
異常を探す
aureport
を使うと異常なイベントの発生を素早く報告させることができます。異常なイベントとは、ネットワークインターフェイスがプロミスキャスモードに設定された、プロセスまたはスレッドが ENOMEM エラーで異常終了した、などです。
aureport
の一番簡単な使い方は :
# aureport -n
aureport を使ってカスタムレポートを生成することもできます。man aureport を参照してください。
どのファイル・システムコールを監査すべきか?
ルールを追加するとログの量も増えます。その情報量が処理できる範囲内でなければならないことを忘れないで下さい。 基本的に、セキュリティに関係したイベント・ファイルは監視しなければなりません。ids、ips、anti-rootkits などです。 逆に、全ての write システムコールを追跡することはまったく無意味です。ちょっとコンパイルしただけでログが溢れてしまうでしょう。
粒度を非常に小さくして複雑なルールセットを構成することもできます。もしそうしたい場合は auditctl の man ページは読む価値があります。
他のホストからのログを収集する
audit フレームワークはプラグインシステムを備えており、それによりローカルのログファイルをリモートの auditd に送ることができます。
ログファイルを送信する
ログファイルをリモートホストに送るには、audisp-remote
プラグインが必要です。これは audit パッケージにより自動的にインストールされます。このパッケージを有効にするには:
/etc/audisp/plugins.d/au-remote.conf
active = yes direction = out path = /usr/bin/audisp-remote type = always format = string
そしてログの送り先になるリモートホストを設定します:
/etc/audisp/audisp-remote.conf
remote_server = domain.name.or.ip port = 60 ##local_port = optional transport = tcp
ログファイルを受け取る
リモートの audispds からのメッセージを受信できるようにするには、tcp オプションをセットするだけです:
/etc/audit/auditd.conf
tcp_listen_port = 60 tcp_listen_queue = 5 tcp_max_per_addr = 1 ##tcp_client_ports = 1024-65535 #任意 tcp_client_max_idle = 0
これで設定した全部のホストのログが受信する auditd のログファイルに書き込まれるようになります。