daily memorandum 2.3.0
CBUG | FreeBSD | Hiki | Knoppix | Mac | Ruby | W-ZERO3 | Windows | ad | amd64 | ks | linux | momonga | net | print | security | tdiary | unix | www | 会社 | 鯖缶 | 全学ゼミ | 本
2006-10-06 (Fri)
_ [security] 自分で仕掛けた罠に自分でハマり、罠に存在した抜け穴から抜け出す
私が管理している鯖では、 以前書いた方法で 私以外の人間が sudo から shell を呼べないようにしてあります。 さらに、最近では su や sudo, visudo も制限してたりします。 具体的には、sudoers にこんな感じで書いてある、と。
User_Alias USER_SYSADM = koma2 User_Alias USER_WWWADM = koma2, hoge Cmnd_Alias CMND_SHELLS = /bin/sh, /bin/csh, /bin/tcsh, /bin/bash Cmnd_Alias CMND_SU = /bin/su, /usr/bin/sudo, /usr/sbin/visudo USER_WWWADM ALL=(root) ALL, !CMND_SHELLS, !CMND_SU USER_SYSADM ALL=(root) ALL
で、ここに新たに USER_ZOPEADM みたいな User_Alias を追加しようとして、
User_Alias USER_SYSADM = koma2 User_Alias USER_WWWADM = koma2, hoge User_Alias USER_ZOPEADM = koma2, fuga Cmnd_Alias CMND_SHELLS = /bin/sh, /bin/csh, /bin/tcsh, /bin/bash Cmnd_Alias CMND_SU = /bin/su, /usr/bin/sudo, /usr/sbin/visudo USER_WWWADM ALL=(root) ALL, !CMND_SHELLS, !CMND_SU USER_SYSADM ALL=(root) ALL USER_ZOPEADM ALL=(root,zope) ALL, !CMND_SHELLS, !CMND_SU
とか書いてやったら… visudo(8) 実行できなくなりますた。orz 後に書いた USER_ZOPEADM のエントリが優先されてしまうらしい。
直そうにも visudo(8) 呼べないし、 sudo sh -c visudo なんて「抜け穴」も自分で禁止してしまったし、 さてどうすべぇと考えてたら…
shell を呼び出す「抜け穴」なんてほかにいくらでもあることに気付き *1 、無事に visudo を呼び出すことが出来たのでした。 (^.^; ということで、この「制限」、「抜け穴」に気付かない人相手にしか役に立ちませんな。^^; *2
_ [FreeBSD][linux][security] Linux-PAM には auth_as_self に相当するものはないのかな?
FreeBSD の PAM (Open PAM) だと、pam_unix.so(8) に auth_as_self という オプションがあって、これを使うと su(8) で root になるときに root のパスワードではなく su(8) を実行するユーザーのパスワードで 認証することが出来ます。 (参考)
で、これに相当するものって Linux-PAM にはないんですかねぇ。。。? ドキュメントを結構マジメに読んだつもりなのだけど、 それらしいものは見付かりませんでした。
ちなみに、上のエントリで sudo の代わりに su を実行しなかったのは、 root パスワードを * で潰してしまっていたからでした。(*.*; Linux でコレをやるのはキケンらしい。
まぁ、root パスワードは私だけが知っていればいいので、 パスワードを設定しておきましたが、 複数人が知らないといけない場合(しかも、共有はしたくない)はどうするのかな…? 古典的だけど、uid 0 なユーザーを複数作るしかないか…