RedHat ELサーバースタックへのアクセスを外部検索ツールに提供するように求められました(「いいえ」はオプションではありません)。このツールを使用するには、コマンドリストへのsudoアクセスが必要です。これらのほとんどは簡単なリストであるか、単一のオプションでロックできます。しかし、sudo /usr/bin/findも必要です。
明らかに私はこれに満足していません。 find は -exec と友達を介してコマンドを実行し、任意のファイルを削除できるからです。これは無制限のルートアクセスを提供するのと同じくらい良いです。
単純なsudoコマンドエイリアスも役に立たないと思います。これは、パスワイルドカード(最初の引数)を含める必要があり、その後の引数も許可されるためです。 sudoで実行するときに/usr/bin/findで安全でないコマンドを無効にすることは可能/実行可能ですか?
結論として:
一般的な検索が行われるようにします。
/usr/bin/sudo /usr/bin/find /some/path/or/other -mtime +3 -print /usr/bin/sudo /usr/bin/find /home -executable -ls
exec/execdir/delete 使用禁止: 例:
/usr/bin/sudo /usr/bin/find /some/path/or/other -name '*' -type f -exec /bin/rm -f {} \; /usr/bin/sudo /usr/bin/find / -ctime -1 -delete
答え1
コマンドへのアクセスを提供してルールを迂回する必要があると言われましたsudo
。sudo
他のRBAC実装のデフォルトの拒否位置で特定のアクセスを許可するのではなく、アクセスが許可された後にアクセスをロックしようとするため、作業に最適なツールではありません。
私は制限なしにアクセスできる監査人を決して信頼しません。彼らの使命は、セキュリティプロファイルを破壊し、脆弱性を見つけることです。システムが安全になるほど、彼らと悪意のある人がロックを選ぶのが難しくなります。
ルールは順番に適用されます。sudo
実行を許可するコマンドから始めて、そのコマンドのさまざまなオプションを制限するルールを追加します。sudoers
以下を使用するようにファイルを変更できます。
%auditor ALL = /usr/bin/lsattr,
/usr/bin/find,
! /usr/bin/find *-exec*,
! /usr/bin/find *-ok*,
! /usr/bin/find *-delete*
これにより、監査人が-exec、-execdir、-ok、-okdir、または-deleteを使用して実行することを許可せずにfindを実行できます。また、すべてのファイルをすべてのコンテンツで上書きすることを許可するブロックと述語を考慮する-fprint
こと-fprintf
もできます。-fls
find no-execution.txt
または同じコマンドもブロックしますfind . -name '*-ok*'
。
tom@evil:~$ sudo id
uid=0(root) gid=0(root) groups=0(root),999(lightsd)
tom@evil:~$ sudo find . -mtime -50
.
./.bashrc
./.kshrc
./.bash_history
./.bash_logout
./.profile
tom@evil:~$ sudo find . -mtime 5 -exec ls -la {} \;
Sorry, user tom is not allowed to execute '/usr/bin/find . -mtime 5 -exec ls -la {} ;' as root on localhost.
tom@evil:~$ sudo find . -mtime -5 -name .kshrc -delete
Sorry, user tom is not allowed to execute '/usr/bin/find . -mtime -5 -name .kshrc -delete' as root on localhost.
これは良いsudoersプロファイルを構築し維持するためのPITAですが、特にコンプライアンス環境では努力する価値があると思います。
答え2
root でエスカレーションできる部分的に信頼できるユーザーにアクセス権を付与する必要がある場合は、ロギングに集中し、ロギングを回避するために「sudo su」の一部のバリエーションを使用することは廃止され、悪意のある操作と見なされますなることを明確にします。
信頼できるユーザーのサブセットがアクセスできないリモートログサーバーにログインし、ログサーバーが監視対象システムへの継続的なネットワーク接続を監視するようにします(したがって、ネットワークを停止してログエントリを単純に抑制することはできません)。