hns - 日記自動生成システム - Version 2.19.9

先月 2008年08月 来月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2008年08月28日(木) 旧暦 [n年日記] [更新:"2011/03/20 21:41:01"]

#1 [NetBSD] ssh を chroot 環境にする

ssh で入った先の環境を chroot にして利用を制限する場合がある。 以前は openssh に patch を当てる必要があったが 4.9 辺りから機能が組込ま れたようだ。例えば NetBSD/4.0 だと、おそらく、次の版が入っている。
ttyqc:makoto@genova 10:06:55/080830(...wip/cygwin-gcc)> ssh -version
OpenSSH_4.4 NetBSD_Secure_Shell-20061114, OpenSSL 0.9.8e 23 Feb 2007
Bad escape character 'rsion'.
これでは多分 chroot の機能はない。そこで /usr/pkgsrc/security/openssh を make package する。これで、次のように 5.0 が入る。
ttyp2:makoto@hostname  10:31:36/080830(~)> ssh -v
OpenSSH_5.0p1, OpenSSL 0.9.8e 23 Feb 2007
起動用の手続を写す:
cp /usr/pkg/share/examples/rc.d/sshd /etc/rc.d/sshd
設定は /usr/pkg/etc/ssh/sshd_config に行なう。 その後起動した場合に、もし以前の /etc/ssh/sshd_config が残っていると、それを知らせる 表示が出るので、消すか、名前を変えておく。 この後は、その sshd_config に
ChrootDirectory /export/ssh/chroot
のような設定をすれば良い。このディレクトリは / からの全ての枝で root 所有 にし、group writable は無にしておく必要がある。

特定の userid だけを chroot にしたい時には

Match User hoge
        ChrootDirectory /export/ssh/chroot
Match User foo
        ChrootDirectory /export/ssh/chroot
のようにして上書きの設定が可能。一致の条件には User だけ でなく Group, Host, Address なども使える。 実はここから先が少し大変。 ChrootDirectory で指定した先には
  1. 多分 scp は最低必要 (shell 無で scp のみ許す場合)
  2. shell を許すなら /bin/sh 等が必要
  3. 上のものが shared library を必要とするなら、 それらと ld.elf_so が必要 (usr/lib/ld.elf_so)。 安易に、全て置けば、ということで /etc/fstab に次のように書いて見る
    /usr/lib        /export/ssh/chroot/usr/lib      null    ro
    /lib            /export/ssh/chroot/lib          null    ro
    #libexec        /export/ssh/chroot/libexec      null    ro
    
    (実はまだ再起動していないのでこれらで良いか未確認) libexec は ld.elf_so だけで良い。
  4. passwd 関係も必要
    vipw -d /export/ssh/chroot
    
    のようにして作成。userid については本来の環境と chroot の両方 に必要で、例えば home については 本来の環境の方にも同じことを 書いておく必要がある
  5. etc/nsswitch.conf が必要なので写しておく
  6. etc/group を (passwd から参照している) 必要行だけを書いて作成
  7. dev/null が必要なので作っておく
    mkdir dev; mknod dev/null c 2 2;chmod 666 dev/null
    
  8. home も当然それなりに必要 (例えば home/user/.ssh)
「どこからか実行形式を写して来て自分の directory に置いて実行」 を防ぐ方法は ? .. やはり shell は禁止するか rssh (restricted shell) を使うべき ? ... 既に chroot しているのだから何を実行されてもいいという気もするけれど。

rssh:

pkgsrc/shells/rssh/DESCR には次のように書いてある。
Rssh is a restricted shell for use with OpenSSH, allowing only scp and/or sftp. For example, if you have a server which you only want to allow users to copy files off of via scp, without providing shell access, you can use rssh to do that.
shell の設定は「本来の passwd と chroot の両方に設定する」

rssh は /usr/pkg/etc/rssh.conf に設定が必要。安易には次の五つを 有効にすれば良い ?

allowscp
allowsftp
allowcvs
allowrdist
allowrsync
( 上記の chroot の設定をしているとこれだけでは公開鍵を読んでくれない ?)。 rssh は chroot のない openssh のためのものの気もする。 rssh を使うくらいなら openssh 側には chroot は要らない ?

何故 shell にこだわるかと言うと ls くらいは使えた方がいいかな と思っているから。
(という訳は現在は rssh は使わない方向で考えている)

readonly にしておけば良い ?:

「どこからか実行形式を写して来て自分の directory に置いて実行」 を防ぐ
と書いたが、これは scp で写すことを想定している。実際 scp -p を使えば、実行形式を写すことは可能だけれど、 ~/ を dr--r--r-- にしておけば良いのではないかな ? ( /tmp も Read Only にしておく必要がある) でもそうすると管理者側が書くの が少し面倒だから union_mount で上に R/O を被せておく ?

Match Group って動くのかな:

何とはなく sshd_config の Match Group が動かない気がする

(以下 2011/03/20 追記)
chroot on netbsd5




最近の日記
2024年05月05日
Windows 10 version
serial connection
bc bench
2024年05月04日
Trial on 10.99.10
another version (later trial) to succeed
2024年04月29日
dkim
2024年03月10日
停電 (瞬電)
2024年03月03日
the second try on bare-metal
useradd
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)