[Time4VPS][CentOS] 特定 IP アドレスをブロックする
以前 CentOS への不正ログイン対策として、SSH ポート番号を変更したことについて書いた。
[Time4VPS][CentOS] SSH ポートを変更する – with a Christian Wife
https://wacw.cf/2021/06/30/changing-ssh-port-number/
しかし、標準ポート番号ほどではなくとも、まだ攻撃は続いている。2ヶ月ぶりにログインすると以下のように表示された。月に 600 回以上アクセスが試みられている。
There were 1302 failed login attempts since the last successful login.
失敗したログインのログを以下のコマンドで確認してみる。
# cat /var/log/secure* | grep "sshd" | grep "Failed password"
結構同じ IP からのアクセスが多いようなので、一旦これらの IP アドレスからのアクセスをブロックすることにした。
環境:
・Time4VPS「Linux 8」(CPU: 2 x 2.60 GHz、RAM: 8192 MB、Storage: 80 GB、Bandwidth: 8 TB、Port speed: 100 Mbps、Virtualization: KVM)、CentOS 7.8
・FileMaker Server for Linux 19.0.1.22(英語)
・macOS Catalina Version 10.15.6(英語環境) で SSH 接続
・Freenom のドメイン(サブドメイン)
(1)以下のコマンドで重複した IP アドレスを除いて表示する。ユーザー名が root と、root 以外でコマンドを分けているのは、cut コマンドで指定する項目番号が root と root 以外でずれるからだ。
1# cat /var/log/secure* | grep "sshd" | grep "Failed password" | grep " root " | cut -f 11 -d ' ' | sort | uniq -c | sort -nr
2 4854 yyy.yy.yy.yyy
3 4546 xxx.xx.x.xxx
4 1302 from
1# cat /var/log/secure* | grep "sshd" | grep "invalid user" | cut -f 13 -d ' ' | sort | uniq -c | sort -nr
2 29770
3 18108 xxx.xx.x.xxx
4 11114 yyy.yy.yy.yyy
5 547 from
from がカウントされているが理由はよく分からない。
大量のクセスがあるわりに、実態はたった2つの IP アドレスである。以下のサイトで調べると、インドとドイツだった。
Where is my IP location? (Geolocation)
https://www.iplocation.net/
(2)/etc/hosts.deny に以下の書式でブロックしたい IP アドレスを記述する。複数あるのでスペースで区切る。保存。
sshd: xxx.xx.x.xxx yyy.yy.yy.yyy
これでしばらく様子を見てみよう。
参考:
[Linux] SSHのログイン時にIPアドレス制限を行う
https://blog.katsubemakito.net/linux/sshd-ipaddress-check
TCP Wrapper で SSH のアクセス制限 – さくらのクラウド超入門・サーバ編(2) – Qiita
https://qiita.com/zembutsu/items/c432a3e096729e181df9
cutコマンドについてまとめました 【Linuxコマンド集】
https://eng-entrance.com/linux-command-cut#-f–fields
【 uniq 】コマンド――重複している行を削除する:Linux基本コマンドTips(64) – @IT
https://www.atmarkit.co.jp/ait/articles/1611/14/news021.html
【 grep 】コマンド――特定の文字を含む行を抽出する:Linux基本コマンドTips(9) – @IT
https://www.atmarkit.co.jp/ait/articles/1604/07/news018.html
【Linuxコマンド】cutでファイルから指定部分を取り出す方法 | 侍エンジニアブログ
https://www.sejuku.net/blog/51830
Linuxコマンド【 cut 】ファイルの各行から一部分を切り出す – Linux入門 – Webkaru
https://webkaru.net/linux/cut-command/
【 cut 】コマンド――行から固定長またはフィールド単位で切り出す:Linux基本コマンドTips(60) – @IT
https://www.atmarkit.co.jp/ait/articles/1610/31/news026.html
【 sort 】コマンド――テキストファイルを行単位で並べ替える:Linux基本コマンドTips(63) – @IT
https://www.atmarkit.co.jp/ait/articles/1611/09/news020.html
sort と uniq でさくっとランキングを出力する – blog.nomadscafe.jp
https://blog.nomadscafe.jp/2012/07/sort-uniq.html