ポートスキャン(SHODAN)
※ かなりイラッとしたのでこの記事はちょとふざけた部分があります。ご了承ください。そうでもしないと怒りが収まらないのです。
メールサーバのログに短時間で大量の 「lost connection」が出ていました。
$ grep "lost connection" /var/log/mail.log ・ ・ ・ Jul 2 17:38:56 eirspi11 postfix/smtpd[18515]: lost connection after CONNECT from red.census.shodan.io[185.165.190.34] Jul 2 17:38:56 eirspi11 postfix/smtpd[18520]: lost connection after CONNECT from red.census.shodan.io[185.165.190.34] Jul 2 17:38:56 eirspi11 postfix/smtpd[18515]: lost connection after CONNECT from red.census.shodan.io[185.165.190.34] Jul 2 17:39:03 eirspi11 postfix/smtpd[18520]: lost connection after CONNECT from red.census.shodan.io[185.165.190.34] Jul 2 17:39:04 eirspi11 postfix/smtpd[18515]: lost connection after STARTTLS from red.census.shodan.io[185.165.190.34] Jul 2 17:39:05 eirspi11 postfix/smtpd[18520]: lost connection after STARTTLS from red.census.shodan.io[185.165.190.34] ・ ・ ・
shodan.io ? 誰だ?
SHODANはインターネットに接続されたデバイスの中から、ポートが開放されている機器を調べるツールとして知られている。
https://eset-info.canon-its.jp/malware_info/special/detail/201015.html
で、shodan.io は勝手にポートスキャンしてデータベースに登録して、誰でも見れるようにしてくれているサイトのようです。
何だこれ、限りなく黒じゃん。勝手にポートスキャンするんじゃないよ。しかも、データベースに登録して、公開するって・・・。真っ黒。
一週間に一回程度ポートスキャンするらしいです。確認してみたら、しっかり 25 番ポートが空いていると表示されました。いいですよ、ドメイン外へのリレーはできないようにしてあるから。しかし、この情報を利用して攻撃対象に選ばれたら、無駄な負荷がかかってしまいます。
もともとは、セキュリティ意識を高めるため、「こ〜んなに一杯ザルセキュリティの IoT 機器がありますよ」と警鐘を鳴らすことが目的だったんでしょうけど、やってることはクラッカーです。多分、スクリプトキディにとって便利なツールに成り下がっていると思います。
ありがた迷惑な行為です。
さて、(冷静になって)調べてみると、他にも同様なプロジェクトがあるようです。表面に出ていないものもあります。ポートスキャンに対してなにか対策をする必要があるようです。
ファイヤーウォールで弾く
SHODAN の IP アドレスは以下のようです。まあ、警鐘を鳴らすことが目的と言っているので、IP アドレスくらい公開してもらわないとねぇ。
| ホスト | IP アドレス |
|---|---|
| atlantic.census.shodan.io | 188.138.9.50 |
| atlantic.dns.shodan.io | 209.126.110.38 |
| battery.census.shodan.io | 93.174.95.106 |
| blog.shodan.io | 104.236.198.48 |
| blue.census.shodan.io | 185.142.236.40 |
| blue2.census.shodan.io | 185.142.236.43 |
| border.census.shodan.io | 198.20.87.98 |
| burger.census.shodan.io | 66.240.219.146 |
| census1.shodan.io | 198.20.69.74 |
| census2.shodan.io | 198.20.69.98 |
| census3.shodan.io | 198.20.70.114 |
| census4.shodan.io | 198.20.99.130 |
| census6.shodan.io | 66.240.236.119 |
| census7.shodan.io | 71.6.135.131 |
| census8.shodan.io | 66.240.192.138 |
| census9.shodan.io | 71.6.167.142 |
| census10.shodan.io | 82.221.105.6 |
| census11.shodan.io | 82.221.105.7 |
| census12.shodan.io | 71.6.165.200 |
| cloud.census.shodan.io | 94.102.49.193 |
| debian814285.aspadmin.net | 71.6.142.85 |
| dojo.census.shodan.io | 80.82.77.139 |
| flower.census.shodan.io | 94.102.49.190 |
| goldfish.census.shodan.io | 185.163.109.66 |
| hat.census.shodan.io | 185.142.236.34 |
| house.census.shodan.io | 89.248.172.16 |
| inspire.census.shodan.io | 71.6.146.186 |
| malware–hunter.census.shodan.io | 66.240.205.34 |
| mason.census.shodan.io | 89.248.167.131 |
| ninja.census.shodan.io | 71.6.158.166 |
| ny.private.shodan.io | 159.203.176.62 |
| pacific.census.shodan.io | 85.25.103.50 |
| pirate.census.shodan.io | 71.6.146.185 |
| red.census.shodan.io | 185.165.190.34 |
| red3.census.shodan.io | 195.144.21.56 |
| rim.census.shodan.io | 85.25.43.94 |
| sky.census.shodan.io | 80.82.77.33 |
| turtle.census.shodan.io | 185.181.102.18 |
| refrigerator.census.shodan.io | 71.6.146.130 |
| einstein.census.shodan.io | 71.6.199.23 |
| wine.census.shodan.io | 185.142.236.35 |
| shodan.io | 104.18.12.238 104.18.13.238 216.117.2.180 |
| 不明 | 43.245.222.163 |
不明は除いてそれ以外の IP アドレスからのパケットはドロップさせるようにファイヤーウォールの設定をしていきます。しかし、この数でやるということは、ポートスキャンする気満々ですね。
次のような SHELL スクリプトで一気に拒否設定をしました。
#!/bin/bash
while
read ip
do
sudo ufw deny from ${ip}
done << EOF
188.138.9.50
209.126.110.38
93.174.95.106
104.236.198.48
185.142.236.40
185.142.236.43
198.20.87.98
66.240.219.146
198.20.69.74
198.20.69.98
198.20.70.114
198.20.99.130
66.240.236.119
71.6.135.131
66.240.192.138
71.6.167.142
82.221.105.6
82.221.105.7
71.6.165.200
94.102.49.193
71.6.142.85
80.82.77.139
94.102.49.190
185.163.109.66
185.142.236.34
89.248.172.16
71.6.146.186
66.240.205.34
89.248.167.131
71.6.158.166
159.203.176.62
85.25.103.50
71.6.146.185
185.165.190.34
195.144.21.56
85.25.43.94
80.82.77.33
185.181.102.18
71.6.146.130
71.6.199.23
185.142.236.35
104.18.12.238
104.18.13.238
216.117.2.180
EOF
sudo service ufw restart
時々見直すべきだとは思います。
fail2ban で弾く
これは難しいですが、ポートスキャンしたほとんどの場合、25 番ポートへの不正なアクセスがあるので、これを利用して弾くように設定する方法があると思います。
ログを見ると、「lost connection after」があります。このワードは、fail2ban のフィルターの中に既にあるので、これを有効にします。
$ sudo vi /etc/fail2ban/jail.d/postfix-ddos.conf
次の内容にします。
[postfix-ddos] enabled = true filter = postfix[mode=ddos] logpath = %(postfix_log)s maxretry = 1 findtime = 86400 bantime = 5184000 backend = %(postfix_backend)s ignoreip = xxx.xxx.xxx.xxx
普段受信しているメールサーバで、lost connection を出すサーバがあります。emberpoint.com です。メール代行業者のようです。このサーバが lost connection after RSET を出すので、ブロックしないように ignoreip にこのサーバの ip アドレスを書いておきました。それ以外は、1回「lost connection after」したら、2 ヶ月ブロックします。
2021.07.11 追記
どうも emberpoint.com は多数のホストからメールを出すようで IP アドレスで許可していくのは現実的ではないようです。他の方法で対処しました。
追記ここまで
確認
$ sudo fail2ban-client status postfix-ddos
Status for the jail: postfix-ddos
|- Filter
| |- Currently failed: 0
| |- Total failed: 1
| `- File list: /var/log/mail.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 184.105.139.68
あ、早速引っかかりました。これは、Shadowserver.org です。善意でポートスキャンするありがた迷惑なサイトです。

ディスカッション
コメント一覧
まだ、コメントがありません