悪質なBOTからのアクセスを制限

 

Mission Impossible     

* このページは、常時更新中です。

本サイトに設置したPerlのアクセス解析プログラムのログとWordPressのプラグイン「NewStatPress」の分析結果を調査しました。
その結果、相変わらず、自身をBOTと名乗らない迷惑BOTから大量のアクセスがある事が確認できました。

そのBOTについてですが、当サイトでは以下のような種類を確認しています。

(1) 手当たり次第に掲示板やコメントフィールドへ商品の宣伝を書き込む「SPAM・BOT」
⇒ “Google No CAPTCHA reCAPTCHA”により、全てガードされています。

(2) WordPressへのログインを試みる「ハッキングBOT」(Brute Force Attack)
⇒ “Google No CAPTCHA reCAPTCHA”により、全てガードされていますし、更に、強固なパスワードに変更していますので、まず大丈夫でしょう。

* 4月20日 追記
その後、更にログ解析を進めた結果、ログイン名とパスワードをWordPressのxmlrpc.phpへ送信する方法で、裏口からの侵入を試みる多数のハッキングサイトを確認しました。 因って、そのIPアドレスを本日ブロックしました。

(3) プラグインの脆弱性を利用し、記事の書き換えを試みる「ハッキングBOT」
⇒ 当該プラグインは当サイトでは使用していません。なお、当サイトでは、プラグイン「Revslider」等へのアタックを確認しています。 ⇒ wp-config.phpを閲覧することで、彼らはDBやWebサイトへの侵入を企んでいます。

これらのアタックサイトに関しては、Windows XPやWindows 2000等のセキュリティが脆弱なPCやWebサイトがウィルスに感染し、それを踏み台にして邪悪なBOTへと変貌している可能性が考えられます。

上記の調査結果を踏まえ、これ以上、悪質なBOTの行為を許す事が出来なくなりましたので、この度、特に悪質なBOTへの大規模なアクセス制限を実施しました。

以下は、Apacheの「.htaccess」に追記した当サーバーへのアクセス拒否設定の一部です。
* 10月1日時点において、合計で302個のIPアドレスを昇順に定義しています。

 

これで、BOTで賑わっていた当サイトがかなり静かになりました。 (笑)

【アクセス制限について】
アクセス解析の結果、ApacheによるIPアドレスからホスト名への逆引きが不可能なケースを散見しましたので、ホスト名ではなく、全てIPアドレスの記述により、アクセス制限を実施しました。
例として、以下のように複数のIPアドレスを使って攻撃してくるBOTについては、IPのサブネットマスクを指定する事で対象IPを纏めて拒否するよう設定しました。

 

【サブネットマスクの指定方法について】
これ以降、情報処理技術者の方は読み飛ばして下さって結構です。
迷惑BOTの疑いのあるホスト名またはIPアドレスを以下のwhoisデータベースのサイトで、サーバー情報を取得します。

https://www.cman.jp/network/support/ip.html

実例として、「195.154.188.41」を検索します。
その結果、以下のように当該ネットワークが使用するIPアドレスの範囲が確認出来ます。

inetnum: 195.154.128.0 – 195.154.255.255

これを二進数に展開します。

11000011 10011010 10000000 10000000
11000011 10011010 10000000 10000001
11000011 10011010 10000000 10000010
11000011 10011010 10000000 10000011



11000011 10011010 11111111 11111110
11000011 10011010 11111111 11111111

これで、上位17bitが固定で、下位15bitが可変である事が解ります。
よって、上位17bitを固定するためのサブネットマスクは、以下のように表記出来ます。

11111111 11111111 10000000 00000000

対象IPアドレスに対し、このサブネットマスクと二進数の論理積の演算結果の値が一致すれば、制限IPアドレスという事になります。
このサブネットマスクは、「.htaccess」の中で以下のように記述します。

195.154.0.0/17
または
195.154.0.0/255.255.128.0

未だ全てのBOTを排除していないので、小さなBOTは居ますが、以前よりはかなり静かになった感じがします。
以下は、BOTへのアクセス制限を行った後におけるPerlのアクセス解析プログラムのモニター画面です。

*4月9日 追記
念のため、ログイン画面への総当たり攻撃を防御するためのプラグイン「Jetpack-Protect」も本日有効にしておきました。

*4月17日 追記
不正ログインをチェックするために開発された日本製のプラグイン「Crazy Bone」をインストールしました。

*9月18日 追記
先日、韓国からのDOSアタックやウクライナからのSPAMアタックを受け、サーバがダウンしたため、「.htaccess」を更新しました。以下の記述はその一部です。

なお、robots.txtにおいても、以下のように迷惑BOTからのアクセスを拒否しています。
因みに、SteelerとShim-Crawlerは、東京大学の研究室から来るクローラです。

 

*9月26日 追記
アクセスログの解析から、WordPressのピングバック機能を利用したDDOS攻撃の形跡も確認しましたので、本サイトのピングバック機能を無効に設定しました。
参考記事は、こちら ⇒ 注意喚起:WordPressの機能を悪用したDDoS攻撃対策のお願い

プラグイン「Disable XML-RPC Pingback」をインストールする事でピングバック機能を無効にし、更に、「.htaccess」に以下の定義を追加し、リモート投稿プログラム「xmlrpc.php」へのアクセスも禁止に設定しました。

Google No CAPTCHA reCAPTCHA

本サイトは、ログインフォームやコメントフォームにおいて、ロボットからの自動SPAM投稿を排除するためGoogleが開発した最新のAPI「No CAPTCHA reCAPTCHA」を採用しています。
なお、reCAPTCHAのオリジナルは、2007年にカーネギーメロン大学ピッツバーグ本校にて開発されました。

しかし、今までインターネットエクスプローラーを使っている上では、一番目の画面(reCAPTCHA)に示した文字認証しか見た事が無かったんですが、昨日、GoogleのChromeでログインしたところ、やっと新しい形式の画像認証画面(No CAPTCHA reCAPTCHA)が表示されました。
この文字入力不要の認証画面は、面白いです!
これをロボットで判別するのは難しいかもですね。 (^_^;)

なお、このプラグインの説明については、こちらをご参照下さい ⇒ WordPressマルチリンガルサイトの推奨プラグインを全解説!

迷惑BOTを排除

先ほど、このサーバーが突然重くなったので、その原因を調査しました。

そこで、先日、組み込んだperlのアクセス解析プログラムの画面を覗いたところ、
有名なドイツのSPAMロボット「clients.your-server.de」からの攻撃を受けている事が判明しました。

Spam Bot

Spam Bot

早速、Apache の「.htaccess」に以下の行を追加し、当サーバーへのアクセスを拒否しました。

 

なお、yandex.comは、ロシア最大の検索エンジンらしいのですが、このBOTも頻繁に来るので、ちょっと迷惑しています。

その下のkyivstar.netは、whoisで調べてみると、どうやらウクライナのネット企業のようです。 Wikipediaによると、ウクライナ最大のモバイルネットワーク事業者との事。
おそらく、これもBOTと思われます。

その後、中国から短時間に1000件近くの異常なアクセスがあったので、そのIPアドレス(湖北省)もアクセス拒否にしています。

今後、どうするかは未だ決めていませんが、検索系のBOT(GooglebotやBingbotなどのクローラー)は除外とし、それ以外のSPAM系BOTはどんどんサーバーレベルで排除していこうと思います。