すべてのSUIDプログラムのすべての呼び出しを記録しますか?


12

ユーザーがsuidプログラムを実行するたびに、ユーザー名、プログラム、それに渡されるコマンドライン引数を含むエントリを含むログファイルが欲しいです。Linuxでこれを達成する標準的な方法はありますか?

回答:


7

監査サブシステムを介して、特定の実行可能ファイル(setuidかどうか)のすべての呼び出しを記録できます。ドキュメントはかなりまばらです。auditctlのmanページ、またはおそらくこのチュートリアルから始めてください。最新のディストリビューションにはauditdパッケージが同梱されています。それをインストールして、auditdデーモンが実行されていることを確認してから

auditctl -A exit,always -F path=/path/to/executable -S execve

コールがログインするのを監視します/var/log/audit/audit.log(または、ディストリビューションがこれを設定した場所)。


1
最初にfindを使用してすべてのSUIDバイナリを取得し、各ソリューションを使用するスクリプトを作成できると思います。エレガントではありませんが、確かに実行可能です。ありがとう!
キム

2
@Kim:私はあなたが交換することによりないrootユーザーでrootにsetuidバイナリのすべての呼び出しをログに記録することができると思う-F path=…-F euid=0 -F 'uid!=0'か、それのようなもの。によって呼び出されるsetxidコードにexecveフックが表示されず、監査サブシステムに特定のsetxidウォッチも表示されません。または、もちろん、すべてexecveを記録して後処理することもできます。
ジル 'SO-悪であるのをやめる'

面白い。これについて聞いたことがない。どれほど広く使われているのだろうか。Debianポプコンにはのエントリがありませんauditd
ファヒームミタ

findすべてのSUIDファイルをリストするコマンド:find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMithaこれにはポプコンエントリがあります:qa.debian.org/popcon-graph.php
packages=
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.