最高セキュリティ責任者(CSO)は、特権アカウント(ルート)の活動を記録しようとします。で説明されているように、ユーザー入力(キー入力)とコンソール/ターミナル出力(stdout / stderr)を記録するようにsudoを設定できます。「sudo su -」にコマンドを書き込むには?。ただし、コンテンツは常にローカルファイルに書き込まれます。 rootユーザーは簡単にファイルを消去することができます!
/etc/sudoers ログインを有効にしました。
Defaults>root log_input, log_output
Defaults iolog_dir=/var/log/sudo-io
またはそれに対応する
root ALL = (ALL) LOG_INPUT: LOG_OUTPUT: ALL
ファイルが削除されないように保護する方法は?
答え1
サーバーでローカルに実行するすべての操作は、管理者またはハッカーの裁量によって管理者またはハッカーがバイパスすることができます。ログの整合性を保証する唯一の方法は、ログをリモートsyslogサーバーに記録(または少なくともコピー)することです。これを行う方法はよく知られている概念なので、詳しくは説明しません。わからない場合は検索してお読みくださいsyslog-ng
。リモートsyslogサーバーはCSOチームのみにアクセスでき、sysadminチームの誰もアクセスできないことを確認してください。業務分離は、ログが改ざんされないようにする唯一の方法です。私があなたのCSOであれば、オペレータやシステム管理者がアクセスできない場所に物理的にサーバーを配置します。なぜなら、どのボックスにも物理的にアクセスできるようになるとセキュリティが消えるからです。私の2セント。
答え2
2つのオプション:
ローカルロギング(ただし、ルートアカウントは何らかの方法でファイルを消去できます)
chattr +a
ディレクトリを使用して作成できます追加のみ。ただし、残念ながら、このプロパティは新しいファイルとディレクトリに継承されません("chattr +a"はディレクトリに対して何をしますか?)。
chattr -R +a /var/log/sudo-io
その後、カーネルのinotify機能を利用するツールを使用して設定できます。追加のみ新しいファイルとディレクトリのプロパティ(参照: 新しく作成されたファイル/フォルダの追加プロパティを自動的に設定しますか?)。 (ここでタイミング攻撃がある可能性があります)
SELinuxはここでユーザー権限アカウントを制限するのに間違いなく役立つかもしれません! (ログにアクセスできないstaff_u
)sysadm_u
リモート録音
残念ながら、ログファイルのレイアウトと形式により、syslog転送(セッションごとに5つのファイル)を使用することは困難です。
/var/log/sudo-io
/var/log/sudo-io/seq
/var/log/sudo-io/00
/var/log/sudo-io/00/00
/var/log/sudo-io/00/00/02
/var/log/sudo-io/00/00/02/stdout
/var/log/sudo-io/00/00/02/log
/var/log/sudo-io/00/00/02/timing
/var/log/sudo-io/00/00/02/stderr
/var/log/sudo-io/00/00/02/ttyout
/var/log/sudo-io/00/00/01
/var/log/sudo-io/00/00/01/stdin
/var/log/sudo-io/00/00/01/stdout
/var/log/sudo-io/00/00/01/log
/var/log/sudo-io/00/00/01/timing
/var/log/sudo-io/00/00/01/ttyin
/var/log/sudo-io/00/00/01/stderr
/var/log/sudo-io/00/00/01/ttyout
iolog_dir
NFS / CIFSを使用してsudoとして指定されたディレクトリをリモートサーバーにマウントすると、ログファイルをリモートサーバーに簡単に書き込むことができます。 NFSエクスポートディレクトリは、上記のものとchattr +
同じである必要があります。
明らかに、サーバーは、ユーザーがサーバーに接続してファイルを削除できないように、より安全でなければなりません。 :-).
気づくsudoは実行を拒否しますログファイルを生成できない場合:sudo: /var/log/sudo-io/seq を開けません: 権限が拒否されました。