【wordpressの不正ログイン対策】WP-Ban Pluginの国別で拒否設定方法&ホスト名リスト

WEB制作, wordpress

最近になって当ブログへのブルートフォースアタックがかなり増えてきたので、不正ログイン対策としてwp-ban Pluginの設定を見直してみた。一応パスワードはかなり強固なものにしてあるので、数百回の試行程度では破られないものと自負してますが、サーバーに負荷が掛かるのが嫌なので、対策してみました。

ブルートフォースアタックとは
Brute Forceとは「力ずくで、強引に」という意味で、文字どおり力ずくで暗号を解読して、パスワードを取得する攻撃手段のことを指す。

パスワードの取得のため、辞書ツールを使いあらゆる文字の組み合わせで総当たりを試み、暗号の解読のためには考えられるすべての暗号鍵をリストアップして暗号文の切れ端を復号化できるか試みる。
引用元-セキュリティ用語事典[ブルートフォースアタック]

スポンサーリンク

狂骨でログイン履歴を確認

不正ログイン対策の第一段階として、wordpressへのログイン試行履歴を残し閲覧できる、Crazy Bone(狂骨)を導入。

導入すると管理画面の【ユーザー】に【ログイン履歴】のメニューが追加されるので、入力されたユーザー名やIP、ホスト(国)、時間、ユーザーエージェント等が確認出来る。

ログを見てみた結果
不正ログインを試みようとする輩には以下の様な傾向が見られた。

・全て海外からのアクセス
・同一IPでの試行が5割
・1秒おきにIPを変更し、数時間に渡りログインしようと試みている。

長いときは1秒おきに1時間もの間の攻撃もあり、こんなんされたらサーバーに負荷が掛かってブログのレスポンスが悪くなるし、攻撃されている最中に記事とか書いてたら、接続も頻繁に切断される事があるみたいです。

実際記事執筆中に接続が中断され、【接続が中断されました。記事のバックアップを保存しています。】的なメッセージを結構な頻度で見ています。

今までの対策

今までは不正ログインしようとしてきたIPごとに、IPをコピーペーストして対策してました。(めっちゃ骨が折れる)

wp-banの設定

wp-banの設定

同一IPで攻撃を仕掛けてくる相手には、有効ですが、最近になって1秒ごとにIPを変更して攻撃してきたので、この対策方法ではイタチゴッコみたいなもので、どんどん設定に書くIPが増えていき設定ファイルの容量も膨大なものになって逆にレスポンスが悪くなるのではないかと思い、国別にアクセス拒否する事にしました。

国別のアクセスを拒否するwp-banの設定

IPアドレスでのアクセス拒否以外の項目は、よく理解していなかったので使っていませんでしたが、ちゃんと調べたらとても便利な設定方法がある事を発見。

海外からの攻撃がほぼ全てなので、不正ログインしようとした国(ホスト名)ごと拒否すれば楽じゃないかと。

それでログを確認し早速攻撃元のホスト名でのアク禁を設定。

wp-ban国ごとの設定

wp-ban国ごとの設定

wp-banの設定項目
【Banned Host Names】の所に対象となるホスト名を上記画像のように入力して保存するだけです。

この設定後には一日に数百件あったログイン履歴が、全く無くなりました。

国ごとのホスト名リスト

現状だと日本からの攻撃の場合は、IPで弾くようにするしかありません。
日本からのアクセス弾いたら、アクセス数が無くなっちゃいますしね(;´Д`)

wp-banで国別のアクセス拒否を設定する場合、いちいち調べて設定するのも面倒なので、下記にまとめました。

そのままコピペ出来る様に書いています。

ブラウザの検索機能【ctrl + F】等で国名や、狂骨に表示されたIPアドレスの欄の国名をコピペして検索するとホスト名を見つけやすいかと思います。
wp-banに入力する例 国名
*.ad Andorra(アンドラ)
*.ae United Arab Emirates(アラブ首長国連邦)
*.ag Antigua And Barbuda(アンチグア・バーブーダ)
*.ai Anguilla(アンギラ)
*.al Albania(アルバニア)
*.am Armenia(アルメニア)
*.an Netherlands Antilles(アンティル)
*.ao Angola(アンゴラ)
*.aq Antarctica(南極大陸)
*.ar Argentina(アルゼンチン)
*.at Austria(オーストリア)
*.au Australia(オーストラリア)
*.aw Aruba(アルバ)
*.az Azerbaijan(アゼルバイジャン)
*.ba Bosnia And Herzegowina(ボスニア・ヘルツェゴビナ)
*.bb Barbados(バルバトス)
*.be Belgium(ベルギー)
*.bf Burkina Faso(ブルキナファソ)
*.bg Bulgaria(ブルガリア)
*.bh Bahrain(バーレーン)
*.bi Burundi(ブルンジ)
*.bj Benin(ベナン)
*.bm Bermuda(バミューダ)
*.bn Brunei Darussalam(ブルネイ・ダルサラーム)
*.bo Bolivia(ボリビア)
*.br Brazil(ブラジル)
*.bs Bahamas(バハマ)
*.bw Botswana(ボツワナ)
*.by Belarus(ベラルーシ)
*.bz Belize(ベリーズ)
*.ca Canada(カナダ)
*.cf Central African Republic(中央アフリカ共和国)
*.cg Congo(コンゴ)
*.ch Switzerland(スイス)
*.ci Cote D’Ivoire(コートジボアール)
*.ck Cook Islands(クック諸島)
*.cl Chile(チリ)
*.cm Cameroon(カメルーン)
*.cn China(中国)
*.co Colombia(コロンビア)
*.cr Costa Rica(コスタリカ)
*.cu Cuba(キューバ)
*.cv Cape Verde(カーボベルデ)
*.cy Cyprus(キプロス)
*.cz Czech Republic(チェコ共和国)
*.de Germany(ドイツ)
*.dj Djibouti(ジブチ)
*.dk Denmark(デンマーク)
*.dm Dominica(ドミニカ)
*.do Dominican Republic(ドミニカ共和国)
*.dz Algeria(アルジェリア)
*.ec Ecuador(エクアドル)
*.ee Estonia(エストニア)
*.eg Egypt(エジプト)
*.er Eritrea(エリトリア)
*.es Spain(スペイン)
*.et Ethiopia(エチオピア)
*.fi Finland(フィンランド)
*.fj Fiji(フィジー)
*.fm Micronesia(ミクロネシア)
*.fo Faroe Islands(フェロー諸島)
*.fr France(フランス)
*.gb Great Britain(UK)(グレートブリテン)
*.gd Grenada(グレナダ)
*.ge Georgia(グルジア)
*.gf French Guiana(フランス領ギアナ)
*.gg Guernsey(ガンジー)
*.gh Ghana(ガーナ)
*.gi Gibraltar(ジブラルタル)
*.gl Greenland(グリーンランド)
*.gn Guinea(ギニア)
*.gp Guadeloupe(グアドループ)
*.gr Greece(ギリシア)
*.gt Guatemala(グアテマラ)
*.gu Guam(グアム)
*.gy Guyana(ガイアナ)
*.hk Hong Kong(香港)
*.hn Honduras(ホンジュラス)
*.hr Croatia(クロアチア)
*.hu Hungary(ハンガリー)
*.id Indonesia(インドネシア)
*.ie Ireland(アイルランド)
*.il Israel(イスラエル)
*.im Isle of Man(マン島)
*.in India(インド)
*.ir Iran(イランド)
*.is Iceland(アイスランド)
*.it Italy(イタリア)
*.je Jersey(ジャージー)
*.jm Jamaica(ジャマイカ)
*.jo Jordan(ヨルダン)
*.ke Kenya(ケニヤ)
*.kh Cambodia(カンボジア)
*.kj Kiribati(キリバス)
*.kn Saint Kitts And Nevis(セントクリストファ-ネイビス)
*.kr Korea, Republic Of(韓国)
*.kw Kuwait(クウェート)
*.ky Cayman Islands(ケーマン諸島)
*.kz Kazakhstan(カザフスタン)
*.la Lao People’s Democratic Republic(ラオス)
*.lb Lebanon(レバノン)
*.lc Saint Lucia(セントルシア)
*.li Liechtenstein(リヒテンシュタイン)
*.lk Sri Lanka(スリランカ)
*.ls Lesotho(レソト)
*.lt Lithuania(リトアニア)
*.lu Luxembourg(ルクセンブルグ)
*.lv Latvia(ラトビア)
*.ma Morocco(モロッコ)
*.mc Monaco(モナコ)
*.md Moldova(モルドバ)
*.mg Madagascar(マダガスカル)
*.mh Marshall Islands(マーシャル諸島)
*.mk Macedonia(マケドニア)
*.ml Mali(マリ)
*.mn Mongolia(モンゴリア)
*.mo Macau(マカオ)
*.mp Northern Mariana Islands(北マリアナ諸島)
*.mr Mauritania(モーリタニア)
*.mt Malta(マルタ)
*.mu Mauritius(モーリシャス)
*.mv Maldives(モルジブ)
*.mw Malawi(マラウイ)
*.mx Mexico(メキシコ)
*.my Malaysia(マレーシア)
*.mz Mozambique(モザンビーク)
*.na Namibia(ナミビア)
*.nc New Caledonia(ニューカレドニア)
*.ne Niger(ニジェール)
*.nf Norfolk Island(ノーフォーク島)
*.ng Nigeria(ナイジェリア)
*.ni Nicaragua(ニカラグア)
*.nl Netherlands(オランダ)
*.no Norway(ノルウェー)
*.np Nepal(ネパール)
*.nz New Zealand(ニュージーランド)
*.om Oman(オマーン)
*.pa Panama(パナマ)
*.pe Peru(ペルー)
*.pf French Polynesia(フランス領ポリネシア)
*.pg Papua New Guinea(パプアニューギニア)
*.ph Philippines(フィリピン)
*.pk Pakistan(パキスタン)
*.pl Poland(ポーランド)
*.pr Puerto Rico(プエルトリコ)
*.pt Portugal(ポルトガル)
*.py Paraguay(パラグアイ)
*.qa Qatar(カタール)
*.ro Romania(ルーマニア)
*.ru Russian Federation(ロシア連邦)
*.rw Rwanda(ルワンダ)
*.sa Saudi Arabia(サウジアラビア)
*.sb Solomon Islands(ソロモン諸島)
*.se Sweden(スウェーデン)
*.sg Singapore(シンガポール)
*.si Slovenia(スロベニア)
*.sk Slovakia(スロバキア)
*.sm San Marino(サンマリノ)
*.sn Senegal(セネガル)
*.sr Suriname(スリナム)
*.su Soviet Union(旧ソビエト連邦)
*.sv El Salvador(エルサルバドル)
*.sy Syrian Arab Republic(シリア)
*.sz Swaziland(スワジランド)
*.tg Togo(トーゴ)
*.th Thailand(タイ)
*.tn Tunisia(チュニジア)
*.to Tonga(トンガ)
*.tr Turkey(トルコ)
*.tt Trinidad And Tobago(トリニダード・トバゴ)
*.tv Tuvalu(ツバル)
*.tw Taiwan(台湾)
*.tz Tanzania(タンザニア)
*.ua Ukraine(ウクライナ)
*.ug Uganda(ウガンダ)
*.uk United Kingdom(イギリス)
*.us United States(アメリカ)
*.uy Uruguay(ウルグアイ)
*.uz Uzbekistan(ウズベキスタン)
*.va Vatican City State(バチカン市国)
*.vc Saint Vincent And The Grenadines(セントビンセント)
*.ve Venezuela(ベネズエラ)
*.vi Virgin Islands (U.S.)(アメリカ領ヴァージン諸島)
*.vn Viet Nam(ベトナム)
*.vu Vanuatu(バヌアツ)
*.ws Samoa(サモア)
*.ye Yemen(イエメン)
*.yu Yugoslavia(ユーゴスラビア)
*.za South Africa(南アフリカ共和国)
*.zm Zambia(ザンビア)
*.zr Zaire(ザイール)
*.zw Zimbabwe(ジンバブエ)

この記事が気に入ったら
『いいね』しよう!