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-19 (Sat)

_ [security] sudo から interactive shell が実行させたくないわけ

sudo から interactive shell が実行できないようにするには の続き。

そもそもなぜ sudo から interactive shell を実行させたくないかというと、 その shell から打ち込まれたコマンドが syslog に残らないからなのだが、 そう考えていくと実はいわゆる shell と呼ばれるものだけを制限するのでは不十分で、 irb みたいに対話的に script を実行できるものも制限したくなるし、 vi とか Emacs みたいに中から shell を呼べるものも制限したくなる。

こう考えていって、「じゃあいっそのことユーザーのキータイプをすべてモニタして 記録する shell を作ってしまえ」というコンセプトで作られたのが sudoshなのだと思う。 ただ、

  • 実行されたコマンドからエディタのキータイプまで全部記録してくれても、そんなの全部見る気にはならない。
  • log は /var/log/sudosh/ に吐かれるわけだが、sudosh 起動してる時は root なんだから、消したり改竄したりできちゃうよね、コレ。syslog みたいにリモートにログ転送することも出来ないし・・・

ってことで、イマイチ気に入ってない。 後者については、FreeBSD だったら chflags(2) で schg つけるように sudosh を改造すればマシになる *1 のだが。。。

ちなみに、最近の sudo だと sudoedit というのがくっついてくる。 これは

  • 引数で与えられたファイルの内容を、sudo で移行したユーザー(通常 root)の権限で /var/tmp 以下にコピーする。
  • 元のユーザーの権限でエディタを起動し、上記ファイルを開く。
  • エディタを終了したら、編集したファイルを sudo で移行したユーザーの権限で書き戻す。

ということをするもの。つまり、元のユーザー権限でエディタを開くことによって、 エディタの中からコマンドを起動されちゃう可能性を防ぐことができる。 ただ、sudoedit から立ち上げたエディタからだと、 root しか編集できない別のファイルを :e で開いても編集できなかったりして (エディタが元のユーザーの権限で動いてるから)、 これまたイマイチ気に入らなくて使ってなかったりする・・・

結局、「いろいろ考えたけど、まぁ世の中難しいよね・・・」 という結論になってしまったり。。。

_ [security] sudosh のログを chflags schg する patch

サクッと作ってみた

*1 ただし、securelevel が 1 以上でないと schg を外せてしまうので、FreeBSD の default (securelevel が -1) ではあまり意味がない。

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