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 | 会社 | 鯖缶 | 全学ゼミ | 本
2005-11-17 (Thu)
_ [security] sudo から interactive shell が実行できないようにするには
% sudo tcsh
とか
% sudo -s
で interactive shell を実行されてしまうと、 何が実行されたか syslog に残らなくてイヤンなので、 sudoers にこんなこと書いて制限かけてみる:
Cmnd_Alias SHELLS = /bin/sh, /bin/csh, /bin/tcsh, /usr/local/bin/bash
Cmnd_Alias SHELLS_NONINTERACTIVE = /bin/sh -c *, /bin/csh -c *, \
/bin/tcsh -c *, /usr/local/bin/bash -c *
koma2 ALL=(root) ALL, !SHELLS, SHELLS_NONINTERACTIVE
この時、ALL, !SHELLS, SHELLS_NONINTERACTIVE は この順番でないといけないので注意。
- まず、すべてのコマンドを許可
- shell を不許可に
- ただし、-c つきの場合は許可
って感じで解釈されるみたい。
これでどうしても interactive shell が使いたいって人が出たら、 sudosh を入れて許可してもいいかも。
[]
% sudo bash -c /bin/sh とかされたら抜けられそうな気がするんですけど、大丈夫なんですか?
もちろん、大丈夫なわけないですがな。(爆)<br>ってか、やっぱ穴があったか。(苦笑)<br><br>・ Bourne shell の syntax が使える<br>・ interactive shell としては使えない<br>・ 呼び出せるコマンドが制限できる<br><br>restricted shell があるといいのだがなぁ。。。
env PATH=/var/restricted /bin/bash --restricted -c *<br>とかではどうなんでしょう。<br><br>/var/restricted に必要最低限のコマンドだけ<br>ln -s しておくんです。<br><br>手元にある OpenBSD pdksh では<br>ksh -r -c /bin/sh は (絶対 path なので) ちゃんと不許可です。