スポンサーリンク

セキュリティは大事だよ、色んな意味でブロックしまくりwordpress

コラム

私だけなのか分かりませんが、このサイト「ラズパイダ」は、共産圏の脅威にさらされています。…というのは大袈裟な物言いです。ただ、アタックが激しい。そんなことから、仕方なくセキュリティ的にアレコレと設定しました。

同じWordpressを使っている人もそろそろ対策した方が良いと思います。具体的なツールなど参考になればと思い公開します。

スポンサーリンク

アクセスログ

この規模のサイトでどうなのか比較もできませんが、酷い時はアクセスログのサイズが70MBなどになってしまっていました。(対策後は16MB以下です)

昨年にサイトの記事を丸パクリされてからは、アクセスログを見る頻度も増えました。これまでは大目にみていたのですけど、あまりにもサイトが重くなったり、HTTPヘッダインジェクションの攻撃などが目立ってきたため、日によってはログがえらいことになっています。

現在は、連携していたSNSサービスもないので、思い切って対策し、それが効いてきました。

アクセスログやエラーログは小規模サイトでもザッと目を通した方が良いですよ。

収まるまでRSS/feedの配信は完全に止めました。利便性が良く使っている人も多いとは思います。

しかし、feedはパクられたりした経験と、スパムが酷いので一時的に全停止しています。サイトとしてSNSも辞めたので、個人的には拡散しないなら必要がありません。

WordPressのテーマによっては対応しているテーマもあります。手動でやるなら、テーマの関数(functions.php)へ書きます。

必ずFTPからバックアップ(ダウンロード)してから追記しましょう。間違えるとサイトは真っ白になります。間違えたら再度、バックアップした元のfunctions.phpを上書きアップロードすれば元に戻せます。

//フィード配信を停止
remove_action('do_feed_rdf', 'do_feed_rdf');
remove_action('do_feed_rss', 'do_feed_rss');
remove_action('do_feed_rss2', 'do_feed_rss2');
remove_action('do_feed_atom', 'do_feed_atom');
//フィードリンクを除去
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
//rssのキャッシュさせない
function do_not_cache_feeds(&$feed) {
$feed->enable_cache(false);
}
スポンサーリンク

セキュリティのプラグイン

特に管理画面への攻撃と、フォーラムの会員登録への攻撃が顕著で、困りました。あとは先のようにRSSのアクセスが多く、片っ端からクローラーは排除し、セキュリティ対策のプラグインや設定を施しました。

おすすめのワードプレスプラグイン

組み合わせの相性もあるので、万人向けではないと思います。参考までに。

無料版でもこの2つの組み合わせはオススメです。Wordfenceの設定が難しいのが玉に瑕です。
BBQ Firewallの方はただ入れるだけで何も設定しなくてもそれなりに効いています。(というか、無料版では設定できるオプションはない)

Wordfenceの設定で、以前は有料だった2段階認証が無料でできるようになっています。これは面倒にはなりますがオススメです。

ついでにパスワードも長いのに変え、2段階認証は間違ったら即ロックならガチガチでしょう。面倒くさいけど。

この辺の設定はとても難しいため、きちんと設定しないと意味もありません。無料版であってもかなり強力にディフェンスできます。

需要があれば設定方法も公開したいと思います。(現在は色々と試しています!)

.htaccessファイル

ちょっと難しいのでオススメはしかねますが、サーバーにある.htaccessで設定でかなり対処が可能です。

これこそ、間違えると大変なので、書式のルールはもちろん、正しい設定記述をしないとなりません。サーバーをレンタルし、独自ドメインで運営している人は触ったことがあるかも知れません。

私も元々、サイトのスピードアップのために設定を施していた程度でした。また、httpからhttpsへssl設定する際に必要で覚えました。

これもプラグインで対応しているものがあります。とはいえ、プラグインばかりとはいかないので、現在は直接書き込んでbot対策をしています。

これが古いおっさんには辛くて、Apacheが2.4以降になってからdenyなど書き方が変わってしまったのに四苦八苦です。(特にbotのIP拒否)
慣れればなんてことないんですけど、最初、なんで?!ってなる。

これはApache2.2までの書き方

Order deny,allow
deny from all
allow from XXX.XXX.XXX.XXX
Apache2.4から

<RequireAny>
Require all denied
Require ip XXX.XXX.XXX.XXX
</RequireAny>

このように最初、古いフォーマットで記載しても効いていませんでしたので、ディレクティブでの記述に対応させました。(サーバーによっては互換もあるようです。)面倒なのでこの形に落ち着きました。

例として1つ

SetEnvIf User-Agent "Hatena::Russia::Crawler" bad_bot
SetEnvIf User-Agent "〜任意のユーザーエージェント" bad_bot
<RequireAll>
    Require all granted
  <RequireNone>
       Require env bad_bot
  </RequireNone>
</RequireAll>

このような指南は、たくさんのサイトがあります。主に参考にしたのは「Apache 2.2とApache 2.4のアクセス制御を比較」です。

Require not ip 〜も試しましたが、内容によって難しかったので現在は、RequireNoneの中にnotではなく記載しています。まぁ、論理的に意味は同じになります。RequireAllだけで括れば、それはnot ipなどとします。

bad_botは環境変数です。先に複数指定したものも一括で反映させるためです。これは便利。

ある程度アクセスがあり、サーバーを借りているなら避けては通れなくなりました。

特定の国の排除

国別の拒否はあまりやりたくなかった。中にはちゃんとしたアクセスもありますからね。

ただ、2020年にアクセスログを眺めていると、ほぼ3つの国に集約されていました。

  • チュウゴク
  • ろしあ
  • うくらいな

これだけで割合的には半分以上は解決してしまいます。あとは割合が数%程度が大半なので誤差です。しかし、見事に真っ赤な国ばかりですな!

ただ、問題はアメリカさんなんですよね。

海外からだとやはり米国はそれなりにアクセスがあります。コードなど英語で書かれている部分もあるので仕方ありません。

流石にアメリカは分母も大きいからブロックできない。アメリカとやり取りするサービス系も個別に許可させるしかない。

ぶっちゃけ日本国内だけで良いんですよ、ウチのサイトは。米国だけは仕方なく、IP毎やリファラー毎でしか対策していません。

このように特定の国は一時的に排除しています。

今回はiQ Block Countryを使ってみました。

これで上記の3つの国をブロックしたところ、だいぶ転送量が減りました。この間にブロックしなくても良い対策ができたらまた解除します。それか、このままでもいいかなとも思っていますけど。

Raspberry Pi ジャンルは仕方ない

扱っているジャンルがRaspberry Pi というのは特に某国の人には好かれるみたいです。彼らの国で生産されている関連パーツが多いですからね。

ただ、もう見境がないですよ。

まるで地引き網漁のように手当たり次第でしょう。ネットの中身は何でもありの状態です。

Amazonも日本とは思えないくらい某国の業者が多い。Googleの検索エンジンもそう。まさに無法地帯。

酷いアクセスの例

ラズパイダに訪れたアクセスから一例をご紹介します。

これ、1秒間に8回も同じIPアドレスからアクセスがあります。

これは直近の2/1です。同じ時刻に8回計測されています!

その後も都合4秒間に10回もアクセスされています。しかもこれ、全部同じIPアドレスです。国名をみればお分かりかと。

すべて503エラーになっています。

実は相手がアクセスしているURLは存在しないのです。もちろんブロックしているからということではあります。

次の画像の通り、ワードプレスの検索フォームの結果にアクセスしています。

当然ながら、=のあとには検索文字列が入るはずですが、なぜか某国のURLが入っています。

中には/search/〜というウチには全くないものにもアクセスされています。

私はセキュリティには詳しくありませんが、推測するとリファラースパムと同じでキャッシュに対して記録するためでしょうか?

とにかくマズイのは、このスラッシュより前のアドレスは、raspida.comだからです。気休め程度に検索フォームも削除しようかと思いましたが、検索機能が有効なら意味はありません。これはワードプレスのデフォルトの機能だからです。

とりあえずブロックすることで対処しています。特定できればIPの指定、そうでなければ、許可しないURLは全てブロックするという手段、または国をブロックしています。

一言

ラズパイダはそんなに影響力はありませんよ。某国の皆さんは他のサイトを巡回してください。

ちなみにアクセスのあるIPアドレスは、世界でも巨大な、某国では最大のIT会社でした。

ブロックしているんだから、もう来ないで。お願い。

ある意味でGoogleさえもブロックしたい気分です! 全部を気にせずに無視していれば、それなりにアクセス数は増え右肩上がりです。でも、サイトが激重になったり、パクられたり、更新しても良いことが少なくなってきましたね。

セキュリティ系は、WindowsなどのOSのみならず、ブログのようなサーバー、そして今後はRaspberry Piも気をつけないとなりませんね。

想像ですが、たぶん、はてなブログなどのサービスを利用した方が良かったかも知れません。少なくてもセキュリティはお任せできます。

以上、アタック&ブロックの現場からでした。

\ 初めてのRaspberry Pi はセットで始めよう /
NewLife NewDesingストア

2台目にも最適な最小基本セット!

\ 初めてのRaspberry Pi はセットで始めよう /
NewLife NewDesingストア

2台目にも最適な最小基本セット!

スポンサーリンク
ラズパイダ

コメント ご感想をお願いします。

タイトルとURLをコピーしました