サーバを運営していると、SSH経由でユーザ名とパスワートの総当たりで不正な接続を試みる攻撃 (ブルートフォースアタック) を受けることが多い。ログ監視ツール Logwatch から毎日送られてくるレポートでも多数確認できる。root には数千件の数で試みられているのが見受けられることも。
対策は、ssh のポート番号を変更すること。デフォルトのポート番号 22 での接続を避ける。
デフォルトのポート番号 22 から別の番号に変更することで断続的な不正アクセスを無くして、サーバの負荷軽減にもなる。
ということで、sshのポート番号を変更。
設定ファイルを編集。
$ vi /etc/ssh/sshd_config
デフォルトではコメントアウトでポート番号 22 が使われているので、任意のポート番号 **** に変更。ポート番号は、使用されていない 0~1023 (ウェルノウンポート) 以外のポート番号に変更しましょう。
#Port 22
Port ****
SSHを再起動。
$ /etc/init.d/sshd restart
iptablesの設定
iptables でファイアウォールの設定をしている場合、変更したポートを通す必要があります。設定せずに ssh の接続を切ってしまうと、ssh に接続できなくなるので要注意。
$ vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
から
-A INPUT -p tcp -m tcp --dport 任意のポート番号 -j ACCEPT
に変更。
iptablesを再起動して、設定を再読み込み。
$ /etc/rc.d/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
接続確認
接続確認は、念のため元のターミナルでの接続を保ちつつ、新規ウインドウでターミナルを立ち上げて接続を確認することをおすすめします。
まずはポート番号 22 で接続。
$ ssh ユーザID@ホスト名
$ ssh: connect to host **.**.**.** port 22: Connection refused
ポート番号 22 では接続が拒否される。
変更したポート番号で接続。
$ ssh -p ポート番号 ユーザID@ホスト名
接続できれば完了。