毎日何十回もサーバーへスキャンが来るCensysなどについて。IPを弾くには
サーバーを立てているとアタックやスキャンがとても多いことが分かります。
下はメールソフトウェアのログですが、TLS で接続が来てすぐに切断するのでログにエラーとして残ります。これがスキャンですね。
- TLS error on connection from cloud-scanner-6b91ac1d.internet-research-project.net (masscan) [173.255.226.212] (gnutls_handshake): The TLS connection was non-properly terminated.
- TLS error on connection from li482-57.members.linode.com (masscan) [50.116.63.57] (gnutls_handshake): The TLS connection was non-properly terminated.
- TLS error on connection from scanner-06.ch1.censys-scanner.com [74.120.14.40] (recv): The TLS connection was non-properly terminated.
- scanner-04.ch1.censys-scanner.com [162.142.125.37] (recv): The TLS connection was non-properly terminated.
で、毎日何十回もスキャンが来てログに大量に残っているのは "*.censys-scanner.com" というドメインからのアクセス。
ドメインに思いっきり "Scanner" と書かれています。
fail2ban でアクセスを遮断はできますが、そうすると censys-scanner.com が持つ他のサーバーからスキャンが来ます。それも fail2ban で弾いて…の繰り返しがログに残っています。
あまりにもアクセスが多いので調べてみるとミシガン大学のプロジェクトらしい。
Censys was started as a research project at the University of Michigan by the creators of ZMap and inventors of fast Internet-wide scanning. Today, Censys, Inc. is led by a team of industry and academic security and networking leaders, and provides both best-in-class Internet data and Attack Surface Management.
脆弱なIoT機器への「偵察行為」激化 正体不明のスキャンシステムが多数存在 - ITmedia NEWS
米ミシガン大学の研究者らが立ち上げた「Censys」は、セキュリティに関する調査・研究を目的に開発されたもので、1000種類以上のポートに対してスキャンを行っています。目的はもちろん、中身もホワイトボックスとして公開されており、スキャンを拒否したい場合のオプトアウトの仕組みも用意していることが特徴です。
他に、日本ではあまり知られていませんが「ZoomEye」というスキャンエンジンもあります。これは中国ベースのスキャンシステムで、Shodanと同様に、多くのIoT機器やデバイスの情報を収集しています。
Censys はサーバーのポートをスキャンして、どこが開いているかなどを調べ、それをデータベース化して売っています。無料でも少し見せてくれます。
私のところに来た internet-research-project.net からのアクセスもスキャンで、情報を集めているようです。
ログに書かれている masscan は使っているツールの名前です。大量に素速くスキャンできるツールらしい。
こうしたサーバーへのスキャンを大量に行って情報を集めているところが他にもたくさんあるようです。
日本政府もスキャンを実施
日本でも IoT 機器の穴を見つけて連絡する試みが行われています。
この試みは良さげです。例えば家に置いたWEBカメラへ不正アクセスされる可能性があるなら、それを通達してくれるのは有り難いです。
ログを見られる人ならアタックだと思ってぞっとしますけどね。「うわ、よくあるパスワードで入り込もうとしてる」と。
ログ汚しの Censys をブロックする
スキャンしてセキュリティホールの存在を通達してくれるのなら有り難いのですが、Censys や Internet Research Project などのスキャンはこちらへ利益がありません。
無駄なトラフィックだし、ログにも残って本当のアタックを読み取りにくくなります。
ブロックしても問題ないでしょう。Censys はスキャンに使うIPアドレスを公開していて、これを遮断すればOKです。
Frequently Asked Questions – Censys
- 74.120.14.0/24
- 162.142.125.0/24
- 167.248.133.0/24
- 192.35.168.0/23
Censys はHTTPへのアクセスは下の User-Agent を使っています。
- Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)
スキャナーの中では Censys はスキャンに用いるIPアドレスを公開しているだけ良心的です。
fail2ban でスキャンを弾く
他のスキャナーに対応するため、以前から使っている fail2ban で弾いてみます。fail2ban についてはこちらに Tips を書いています。

今回は exim 用に作りますので、元々ある exim 用のコンフィグをコピーして編集します。
# cp /etc/fail2ban/filter.d/exim.conf /etc/fail2ban/filter.d/exim-scan.conf
# vi /etc/fail2ban/filter.d/exim-scan.conf
中身は大きく変え、
[INCLUDES]
[Definition]
prefix = ^.*exim(?:\[[^:]+?\])?:(?: [\d-]+ [\d:]+)?
failregex = %(prefix)s TLS error.+?\(masscan\) \[<HOST>\]
%(prefix)s TLS error.+?from .*?scanner.+? \[<HOST>\]
こんな感じでどうでしょうか? "failregex" の右側はインデントを揃えて下さい。上記のコードは空白が取り除かれているのでインデントが揃っていません。
"(masscan)" があればヒット、ドメインに "scanner" が入っているとヒット。
これを "jail.local" に登録します。Hestia を使っているので action は Hestia のものを流用します。
# vi /etc/fail2ban/jail.local
[exim-scan]
enabled = true
filter = exim-scan
action = hestia[name=RECIDIVE]
logpath = /var/log/exim4.log
maxretry = 1
bantime = 1w
BANは厳しくして、一回でも引っかかれば1週間のBANにしています。Hestia の "RECIDIVE" での BAN は対象のIPを全ポートで遮断します。
これで様子を見てみます。