はじめに
何かしらのサーバを外部に公開したことがある方であれば分かると思うのですが、一度公開したサーバは一斉に攻撃の対象にされるという事をご存じでしょうか。その証拠に次のログを見てください。
# less /var/log/secure
Feb 18 21:50:48 ip-172-31-40-104 sshd[28139]: Invalid user user from 103.66.96.230 port 2460
Feb 18 21:50:48 ip-172-31-40-104 sshd[28139]: input_userauth_request: invalid user user [preauth]
Feb 18 21:50:49 ip-172-31-40-104 sshd[28139]: Received disconnect from 103.66.96.230 port 2460:11: Bye Bye [preauth]
Feb 18 21:50:49 ip-172-31-40-104 sshd[28139]: Disconnected from 103.66.96.230 port 2460 [preauth]
Feb 18 21:51:01 ip-172-31-40-104 sshd[28271]: Invalid user pyqt from 210.16.121.22 port 40670
Feb 18 21:51:01 ip-172-31-40-104 sshd[28271]: input_userauth_request: invalid user pyqt [preauth]
Feb 18 21:51:01 ip-172-31-40-104 sshd[28271]: Received disconnect from 210.16.121.22 port 40670:11: Bye Bye [preauth]
Feb 18 21:51:01 ip-172-31-40-104 sshd[28271]: Disconnected from 210.16.121.22 port 40670 [preauth]
これはほんの一部のログですが、知らないIPからてきとうなユーザ名でログインを試みているのが分かります。公開鍵接続のため事実上突破されない事は分かっているのですが、毎分ブルートフォースアタックされているのはあまりいい気分がしません。
対策
そこでどうするのかというと、先述の通り公開鍵でのみ接続許可をするか、sshのポート番号を変更するというのが一般的な対策となっております。次の様にポート番号を変えてみます。
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
# vi /etc/ssh/sshd_config
# diff /etc/ssh/sshd_config.bk /etc/ssh/sshd_config
# diff /etc/ssh/sshd_config.bk /etc/ssh/sshd_config
17c17
< #Port 22
---
> Port 50022
# systemctl restart sshd
firewalldやセキュリティグループの設定から既存のsshを削除し、50022ポートを追加して下さい。変更したポート番号にして接続が出来れば成功です。
# netstat -anp | grep ssh
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 24377/sshd
tcp 0 36 172.31.40.104:50022 xxx.xxx.xxx.xxx:63932 ESTABLISHED 27897/sshd: centos
tcp 0 0 172.31.40.104:22 xxx.xxx.xxx.xxx:50501 ESTABLISHED 4792/sshd: centos [
tcp6 0 0 :::50022 :::* LISTEN 24377/sshd
netstat
コマンドのオプション覚書き↓
- -a
- 全接続表示
- -n
- 名前解決せず数字表示
- -p
- 各ソケットが使用しているプロセスIDとプログラム名を表示
接続が確立されました。