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 | 会社 | 鯖缶 | 全学ゼミ |

Apple Store(Japan)

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 は この順番でないといけないので注意。

  1. まず、すべてのコマンドを許可
  2. shell を不許可に
  3. ただし、-c つきの場合は許可

って感じで解釈されるみたい。

これでどうしても interactive shell が使いたいって人が出たら、 sudosh を入れて許可してもいいかも。

本日のツッコミ(全3件) [ツッコミを入れる]
_ kyn (2005-11-17 (Thu) 19:23)

% sudo bash -c /bin/sh とかされたら抜けられそうな気がするんですけど、大丈夫なんですか?

_ koma2 (2005-11-17 (Thu) 23:01)

もちろん、大丈夫なわけないですがな。(爆)
ってか、やっぱ穴があったか。(苦笑)

・ Bourne shell の syntax が使える
・ interactive shell としては使えない
・ 呼び出せるコマンドが制限できる

restricted shell があるといいのだがなぁ。。。

_ tamo (2005-11-21 (Mon) 17:19)

env PATH=/var/restricted /bin/bash --restricted -c *
とかではどうなんでしょう。

/var/restricted に必要最低限のコマンドだけ
ln -s しておくんです。

手元にある OpenBSD pdksh では
ksh -r -c /bin/sh は (絶対 path なので) ちゃんと不許可です。

本日のリンク元
アンテナ
その他のリンク元
検索