■概要

SSHサーバーは、Telnet同様にクライアントからサーバーへリモート接続して、遠隔地からサーバーを操作することができるサーバー。
ただし、Telnetが暗号化しないでそのままデータを送受信するのに対して、SSHでは通信内容を暗号化するため、盗聴されても問題ない。
ここでは、内部からだけではなく外部からも安全にサーバーにリモート接続できるようにするため、鍵方式によるログインのみを許可することにより、クラッカーによるパスワードアタックで不正にSSHサーバーへログインされてしまわないようにする。
また、SSHサーバーへの接続方式にはSSH1とSSH2があるが(SSH1とSSH2の違いについて)、より安全なSSH2による接続のみ許可することとする。
※管理者以外の一般ユーザへリモート接続を開放する場合は、SSHサーバー構築(OpenSSH+Chroot)を推奨。

なお、SSHサーバーを外部に開放せず、内部ユーザも信頼できる場合は、SSHサーバーの設定はデフォルトのままで、パスワード方式によるログイン方式でもよい。


■管理者ユーザ鍵方式ログイン設定

SSHサーバーを鍵方式によるログイン方式のみ許可するように設定する前に、管理者ユーザを鍵方式ログインできるようにする⇒WindowsからSSHサーバーへリモート接続(Poderosa鍵方式ログイン編)参照

■SSHサーバー設定

[root@centos ~]# vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集
#Protocol 2,1
↓
Protocol 2 ← SSH2のみで接続を許可

#PermitRootLogin yes
↓
PermitRootLogin no ← rootでのログインを禁止

#PasswordAuthentication yes
↓
PasswordAuthentication no ← パスワードでのログインを禁止(鍵方式によるログインのみ許可)

#PermitEmptyPasswords no
↓
PermitEmptyPasswords no ← パスワードなしでのログインを禁止

■SSHサーバー再起動

(1)SSHサーバー再起動
[root@centos ~]# /etc/rc.d/init.d/sshd restart ← SSHサーバー再起動
sshdを停止中:                                              [  OK  ]
sshdを起動中:                                              [  OK  ]

(2)ポート22番のOPEN
ルーター側の設定でポート22番をOPENする。

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:wakuwakustation.com)、「port番号」に22と入力して「ポートチェック」ボタン押下し、「ホスト=wakuwakustation.com ポート=22 にアクセスできました。」と表示されることを確認。

■SSHアクセス制限

SSHでは、ユーザ名とパスワードをランダムにかえてログインを連続試行してくる攻撃ツールが出回っているため、サーバーを一定期間運営していると以下のようなログが大量に記録されるようになる。
当サイトではパスワードによる認証は許可していないのでログインされてしまうことはないが、ログが大量に記録されて煩わしいので、SSHサーバーへアクセスできるホストを制限する。

Invalid user fluffy from xxx.xxx.xxx.xxx
Invalid user admin from xxx.xxx.xxx.xxx
Invalid user test from xxx.xxx.xxx.xxx
Invalid user guest from xxx.xxx.xxx.xxx
Invalid user webmaster from xxx.xxx.xxx.xxx
Invalid user mysql from xxx.xxx.xxx.xxx
Invalid user oracle from xxx.xxx.xxx.xxx

[root@centos ~]# echo "sshd:127.0.0.1" >> /etc/hosts.allow ← サーバー自身からのsshへのアクセスを許可

[root@centos ~]# echo "sshd: 192.168.1." >> /etc/hosts.allow ← 内部(例:192.168.1.XXXからのsshアクセスを許可)

[root@centos ~]# echo "sshd: .ppp.asahi-net.or.jp"  >> /etc/hosts.allow ← 外部(例:xxx.ppp.asahi-net.or.jpからのsshアクセスを許可)

[root@centos ~]# echo "sshd: ALL" >> /etc/hosts.deny ← sshへの全てのアクセスを禁止
※上記では、内部(例:192.168.1.XXX)と外部(例:xxx.ppp.asahi-net.or.jp)からのみ、SSHへのアクセスを許可している