shhの接続ポートをデフォルト(22播)のままにするの良くない!
sshの接続ポートをデフォルトの22番のままにしておくと、攻撃対象にされやすく、大変鬱陶しい!!というお話です。
つい先日、保守案件にて、以下のようなアラートが届きました
-
対象外サーバにおきまして、ディスク使用率98%超過を検知致しました。
特に下記ファイルにて、ディスク使用量が多くなっています。
/var/log/btmp
btmpファイルって何だ?
調べてみると、btmpはログイン失敗の履歴が記録されているファイルのようです。
何故にそんなファイルが肥大化してしまうのか・・・。
はっ・・・。もしかしてsshで攻撃受けてる?って事でファイルの確認をしてみました。
btmpファイルの確認方法
ひとまず、btmpファイルをサーバーからダウンロードしたのですが、バイナリファイルだったので開けず・・。
btmpの参照には、lastbコマンドを利用する必要があります。
1 2 3 4 5 6 7 8 9 |
lastb ---------------実行結果↓--------------- root ssh:notty XXX.XX.XXX.XXX Tue Sep 12 10:52 - 10:52 (00:00) root ssh:notty XXX.XX.XXX.XXX Tue Sep 12 10:52 - 10:52 (00:00) root ssh:notty XXX.XX.XXX.XXX Tue Sep 12 10:52 - 10:52 (00:00) root ssh:notty XXX.XX.XXX.XXX Tue Sep 12 10:52 - 10:52 (00:00) : : 以下略 |
とんでもない量のssh接続失敗のログが吐き出されていました。やはり、不正ログイン仕掛けられてる・・・。
IPアドレスから発信源を調べる
whois gatewayでIPアドレスを調べてみると中国とか、ブラジルからのアクセスが多数。
どのアドレスから何回アクセスがあったか調べる
1 2 3 4 5 6 7 8 9 10 11 |
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -30 ------------実行結果↓---------------- 335461 xxx.xxx.xx.xx 51704 xxx.xxx.xx.xx 41345 xxx.xxx.xx.xx 3963 xxx.xxx.xx.xx 2954 xxx.xxx.xx.xx : : 以下略 |
色々なアドレスからアクセスされてますね。。これはキリがない。
同じようにどのユーザーでログインしようとされているのかも調べてみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
lastb | awk '{print $1}' | sort | uniq -c | sort -nr | head -30 ---------------実行結果↓------------------- 50296 root 73 admin 16 git 14 test 12 ts3 12 postgres 12 csgoserv 11 user 10 oracle 9 mysql 7 www |
良く使われそうなユーザー名ばかりですが、やっぱりrootが多いですね。
普段使っているユーザー名でのアクセスはありませんでしたが、ID,PASSでのSSHログイン不可にする対応は必須ですね。(特にrootユーザーは)
sshdのポート番号を変更
SSHへのブルートフォースアタック(ID, PASS 総当たり攻撃)に一番効果的なのはポート番号の変更のようです。
これでユーザーroot、ポート22でアクセスされても、Connection refusedになり、ログも残りません。
ポート番号変更
1 2 3 4 |
sudo vi /etc/ssh/sshd_config ------変更箇所↓-------- Port 887506 |
sshdを再起動し、設定を反映します
1 |
sudo /etc/init.d/sshd restart |
/var/log/btmpの削除
容量を圧迫していたbtmpファイルの削除します。
1 |
sudo rm /var/log/btmp |
ログが再取得されるようbtmpを再作成しておくことを忘れずに。
touchしてから600にしておきます。
1 2 |
sudo touch /var/log/btmp sudo chmod 600 /var/log/btmp |
平和な世界が訪れた。
再度、lastbコマンドを実行してもログが全く吐き出されなくなりました!やったね!
今度また、ポートが特定されて攻撃を受けるようならログローテの処理も入れたいと思います。
どちらにしろ、サーバーのセキュリティ知識は必須ですね・・・。
こんな記事も見つけたので、サーバー構築する機会があった際には参考にしたいと思います
【追記】sshポート変更する際の注意点
平和な世界が訪れたと思ったのも束の間、なんと外部サーバーからsshでバックアップを取得していたことが判明し、慌ててバックアップシェルの修正を行い、事なきを得ました。
sshポートを変更する際に考慮すべきことを、まとめておきたいと思います(随時追加予定)
- バックアップサーバーからscpでアクセスがないか?(crontabコマンドなどでチェック)
- お客様向けのssh用ユーザーなどが存在していないか?(cat /etc/passwd & ヒアリング)
この記事がお役に立てたら、是非シェアをお願いします^^