- 2008-08-22 (Fri) 01:43
- ソフトウェア ( Linux/coLinux )
残った点の解決法.
Match Address を sshd_config に書くのが一番スマートな解決法にみえる.ただ,サブネットマスクのビット長が25というのがちょっと引っかかる.OpenSSHのバージョンが 5.1であれば
Match Address xxx.xxx.xxx.128/25 PasswordAuthentication yes
とかのアドレス/マスクのビット数というマッチングが効いてくれるのだけど,残念なことにサーバに入ってるのは5.1未満で上の表記が使えない.サブネットが/24だったらワイルドカードを使ったxxx.xxx.xxx.*の表記で問題ないけど/25だとうまく書くすべがない気がする….
別の手法としては,別ポートで内部向けのsshdを立ち上げておいて,iptablesで内側からのssh接続要求をそのポートに回してしまう方法がある.たとえば内向きのsshdが2222で待っているとして
iptables -t nat -A PREROUTING -p tcp -s xxx.xxx.xxx.128/25 -d xxx.xxx.xxx.yyy --dport 22 -j DNAT --to-destination xxx.xxx.xxx.yyy:2222
とか追加してみるとできる(xxx.xxx.xxx.yyyをサーバとして).んで,内部向けのsshdはxinetdで立ち上げるのが設定ファイルの記述量やらの点で一番楽そうな気がする./etc/services に
ssh_internal 2222/tcp
とか追加して, /etc/xited.d/ssh_internal を
service ssh_internal { only_from = xxx.xxx.xxx.128/25 disable = no socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i -f /etc/ssh/sshd_config.internal log_on_success += DURATION USERID log_on_failure += USERID nice = 10 }
とか書いて,内向きのsshd_config を /etc/ssh/sshd_config.internal として
PasswordAuthentication yes
と書いてみる. …あほか?
まあ,内側からパスワードで入らなきゃならん機会ってのは共用マシンからのログイン時だけ&そんなことをする人間も少ないので,内側からのパスワード認証を許可しなくても問題ない気配.
- Newer: ことはじめ