FreeBSD/SSHD の変更点


*''SSHD'' [#zcf653f8]
FreeBSDでは標準でsshdが起動するようになっていますが、~
5.0くらいからsshdがSSH2が標準になっている為、telenet+ttsshでログインすることができないようになっています。~
設定ファイルを編集して、telnet+ttsshでログインできるようにします。~
~
ssh/tcp: bind: Address already in use というエラーが頻繁しているのを発見~
解決方法を記述した。~

+[[''sshd_configの編集''>#A]]
+[[''/etc/inetd.confを確認''>#B]]
+[[''/etc/rc.confの確認''>#C]]
+[[''起動''>#D]]
+[[''パスワードミス回数にしきい値を設定''>#F]]
+[[''ssh/tcp: bind: Address already in use というエラーが頻繁''>#G]]
+[[sshの接続が切断されないようにする。>#j15874c2]]

**''環境'' [#ff15db41]
FreeBSD 5.4~
FreeBSD 6.0~

**''/etc/ssh/sshd_config の編集''&aname(A); [#h941499b]
以下の2箇所を編集する。~
 -----------------------------編集個所----------------------------------
 #可能なプロトコルのバージョンを指定 SSH2のみ(今回修正してSSH1も接続可能に戻し)
 #Protocol 2
 Protocol 2,1
 ・・・
 # 認証を可能にするためには YESを指定する
 # パスフレーズだけじゃなくて、一般のパスワードで利用したい場合にはこれを変更しないとダメ
 # Change to yes to enable built-in password authentication.
 #PasswordAuthentication no
 PasswordAuthentication yes
 -----------------------------編集個所----------------------------------

**''/etc/inetd.confを確認''&aname(B); [#mf887cb1]
rc.confでのssh起動とinetdでの起動とできるようになっているが、両方が起動していると~
ポートが塞がっていて使えないとエラーがでる。~
/etc/inetd.confを確認し下記の部分がコメントアウトになっていることを確認。~
なっていなければ、コメントアウト(#)をつける。~
 -----------------------------確認個所----------------------------------
 #ssh    stream  tcp     nowait  root    /usr/sbin/sshd          sshd -i -4
 #ssh    stream  tcp6    nowait  root    /usr/sbin/sshd          sshd -i -6
 -----------------------------確認個所----------------------------------

**''etc/rc.confの確認''&aname(C); [#e8988b11]
/etc/rc.confにてsshが有効になっているか確認する。~
以下の記述が入っていればOK。~
 sshd_enable="YES"

**''起動''&aname(D); [#m964518c]
 # sh /etc/rc.d/sshd start
後は、sshで接続してみて、テストしてください。~

**''パスワードミス回数にしきい値を設定''&aname(F); [#y1ef7414]
たとえば、SSH なら、
 ssh     stream  tcp     nowait/0/3/2    root .....
なんて記述をしておきます。
 この 0/3/2 って記述ですが。
      : : :
      1 2 3
 
 1	最大子プロセス数(0は無制限)
 2	同一IPからの1分以内の最大接続数
 3	同一IPからの最大子プロセス数
となります。~
上記の設定の場合は inetd から生成される ssh のプロセス数は無制限で、~
同一IPからの一分以内のコネクションリクエスト数は3回まで、さらに同一IPから~
接続が確立して生成された ssh プロセス数は2つまで。ということになります。~
~
1分以内に接続に3回失敗すると、そのIPからのコネクションリクエストは ~
refuse されます。が、1分経過するとまた許可されます。~

-''ssh/tcp: bind: Address already in use というエラーが頻繁''&aname(G);~
~
■原因~
sshが重複して起動していたためであった.つまり,FreeBSDのインストール時に,~
sshdのログインを許すか,という問いにyesと答えた上に,inetdからもsshdが起動される~
ように設定していたことが原因であった. ~
~
■解決方法~
上記の状態では,設定ファイル /etc/rc.conf において, 
 sshd_enable="YES"
 inetd_enable="YES"
の両方が存在し,さらに /etc/inetd.conf において, 
 ssh     stream  tcp     nowait  root    /usr/sbin/sshd          sshd -i -4
となっている. ~
sshdはinetdから起動すればふつうは十分であるから,/etc/rc.conf において 
 sshd_enable="YES"
を削除し,マシンを再起動した.

**rootでログインできないようにする。 [#jbf22ed5]
 # vi /etc/ssh/sshd_config
 PermitRootLogin yes
       ↓
 PermitRootLogin no

**sshの接続が切断されないようにする。 [#j15874c2]
 # vi /etc/ssh/sshd_config
 ClientAliveInterval 60
 ClientAliveCountMax 5
 
 # /etc/rc.d/sshd restart
60秒x5回=300秒