
最近サーバーへのアタックが多くなり、しっかりとしたIPリストを導入しました。
スパムも増えてきており、WordPress やメールソフトウェア(MTA)で個別にアタックやスパムの対策をするのでは無く、サーバー全体でIPをブロックしてしまった方が楽です。
目次
WordPress のログインはユーザー名がバレているのであと必要なのはパスワードだけ
WordPress は結構ログインの仕組みが脆弱で、ユーザー名とパスワードでログインするのですが、実はユーザー名は通常はソースに出力されるので誰でも簡単に分かります。
ユーザー名と記事を書いた人として表示されるニックネームを異なるものにしている人は希です。それぞれ個別に設定できるのもほとんどの人が知りませんし、テーマによってはニックネームではなくユーザー名を出力してしまっているかもしれません。
さらに、administrator は ID が 1番ですから、ID が 1番のユーザーにWEBからアクセスしてみれば良いのです。WordPress はURLルーティングの仕組みが悪いのです。
よって、WordPress のログインに必要なのは事実上パスワードだけです。
ログインのためのユーザー名を変更したいと思うわけですが、WordPress のシステム上ではできません。何でできるようにしないのでしょう?
実はユーザー名はデータベースを弄れば変更できます。ユーザー名を変更させるのはそんなに大変なシステムではありません。
WordPress はセキュリティ問題が広く知られるようになってからも、ユーザー名を変更する機能がずっと追加されないのが不思議です。
データベースを弄れる人はユーザー名を変更した方が良いです。というか、変更すべきです。ユーザー名はバレています。
"wp_users" テーブルで変更できます。
私はユーザー名を自動生成したものすごく長い文字列にしています。
あと、ログインにワンタイムパスワードが必要なように変えておくとより安心です。プラグインでたくさんあります。
さらにログインに失敗したらIPをブロックするプラグインがありますので、それも利用しましょう。
WordPress のコメントの脆弱性を突いた見事なスパムがあった
ログインのアタックは上の方法でそこそこはじいているのですが、先日見事なアタックというかスパムがありました。
WordPress はコメントシステムが弱いのですが、そこを付いたスパムです。
WordPress は記事へのコメントを設定で制限することができますが、実はメディアファイル(記事に添付される画像、動画など)へのコメントは制限できません。
WordPress は何故かメディアファイル個別のページが自動生成されます。これもルーティングの仕組みが悪いのです。
WordPress って何てダメなシステムなんだろう…。
PHPファイルを弄る必要がありますが、対応策があります。短いので載せておきます。
テーマの "functions.php" に以下を追加します。
function stop_media_comments($open, $post_id) {
$post = get_post($post_id);
if($post->post_type === 'attachment') $open = false;
return $open;
}
add_filter('comments_open', 'stop_media_comments', 10, 2 );
これで OK です。
ブロックのための、しっかりしたIPリストを導入
アタックやスパムはIPをブロックしてしまえば楽になります。ログインやスパムを試みられる前に、そもそもアクセスできない方が安心です。
IPのブロックは WordPress の設定やプラグインでは行いません。サーバー全体でブロックしたいからです。
問題はIPのブロックリストに何を選ぶかです。
私はこれまで Hestia の Malicious Block List を使っていたのですが、これではかなり不十分です。メールのスパムIPリストの SPAMHAUS も足りません。
今は色々とブロックリストがありますが、あまりにもアグレッシブなIPブロックだと誤ってブロックしてしまって困ります。
Apple が自社の iCloud メールで導入している proofpoint は悪名高いアグレッシブなIPブロッカーで、普通のメールも誤ってブロックされます。
少し見たところ AbuseIPDB は信頼できそうなリストで、私のサーバーに来たアタックやスパムのIPアドレスをこちらでチェックするとしっかり載っています。良さそうですが、無料で使いたいとなるとちょっと厳しそう(価格表)。
実は GitHub で AbuseIPDB の法的に問題ないところのIPリストをまとめて公開してくれている人が結構います。こちらを利用します。
これだけでは不十分でしょうから、FireHOL をメインにします。たくさんの種類のリストがあり、良さげなところをピックアップして導入します。
FireHOL はIPで検索できないのがちょっと使いにくいですね。自分のサーバーにアタックが来たIPを検索して、それが載っているIPリストを使いたいのですが…。
FireHOL のリストは頻繁にアップデートされます。危険なIPを保持する期間が1日間、7日間など分かれており、アタックに使われるIPが頻繁に変わる世界なので有り難いです。
なぜこのように分かれているかというと、アタッカーはIPをコロコロと変えますので、何も知らない人が危険指定されたIPに割り当てられてしまう可能性があるからです。共有IPの可能性もあります。
つまり、長く1つのIPをブロックしてしまうと誤ブロックがあるのです。
そういうのを怖れる場合、ブロックIPの保持期間が短いもの=1day などを選ぶと良いでしょう。
IPリストを無料で公開されているのは本当に助かります。