WordPress防御対策(DOS攻撃対策)

運用開始して数日後

データベース接続エラーが発生。
mySQLが落ちているようなのでとりあえずはリスタートで対応。
が、毎日続く。なぜ?
外部から何かされている?

  • phpadminはいれてない
  • loginページも変えてある
  • xml-rpcもユーザ制限かけている

nginxのログをみても上記へのアクセスはあるけど404等でちゃんとはじいている
ど~やら大量にアクセスされてRaspberryPi本体が捌ききれずmySQLを落としている模様。
nginx自体の処理軽減とそれ以前でのガード対応が必要

対策

php-fpmの設定

php-fpmの起動数を動的→静的とする
あと念のためphp-fpmを一定の捌き件数で再起動させるようにする

/etc/php5/fpm/pool.d/www.conf
pm = static
pm.max_children = 10
pm.max_requests = 250

iptables の設定追加

RaspeberryPi特有の準備

ipablesの設定ファイルを扱うためにパッケージ導入

sudo aptitude install iptables-persistent
導入途中でIP4・IP6それぞれ導入するか聞かれるので両方YESで
ルールファイルの設定

一定期間に大量のアクセスがあった場合に除外するようにする

/etc/iptables/rules.v4
#HTTP_DOSの設定
-N HTTP_DOS
-A HTTP_DOS -p tcp -m multiport --dports 80 -m hashlimit --hashlimit 5/s --hashlimit-burst 100 --hashlimit-htable-expire 300000 --hashlimit-mode srcip --hashlimit-name t_http_DOS -j RETURN

# 解説
# -m hashlimit                       limitではなくhashlimit を利用する
# --hashlimit 3/s                    秒間3接続を上限とする
# --hashlimit-burst 5               上限を5回連続超えると制限
# --hashlimit-htable-expire 300000   管理テーブル中のレコードの有効時間(ms単位、例では30秒有効)
# --hashlimit-mode srcip             送信元アドレスでリクエスト数を管理する
# --hashlimit-name t_HTTP_DOS        /proc/net/ipt_hashlimit に保存されるハッシュテーブル名
# -j RETURN                          制限にかからなければ、親チェーンに戻る

# 制限を超えた接続の破棄とロギング
-A HTTP_DOS -j LOG --log-prefix "http_dos_attack: "
-A HTTP_DOS -j DROP

# HTTPへのパケットは "HTTP_DOS" チェーンへジャンプ
-A INPUT -p tcp -m multiport --dports 80 -j HTTP_DOS
以下の理由よりDOS対策はhttpポートだけ
– 上位ルーターでsshとhttp以外は受け入れないようにしている
– sshのポート番号は変更している

参考にさせていただいたサイト
「WordPressのxmlrpc.phpに注意」結果的にDDos攻撃受けサーバを何度も落とされた

iptablesのルール適用は以下のコマンド

sudo netfilter-persistent reload
[追記]パラメータ等修正
-A INPUT -p tcp -m tcp --dport 80 -m hashlimit --hashlimit-upto 1/s --hashlimit-burst 100 --hashlimit-mode srcip --hashlimit-name HTTP_HASHLIMIT --hashlimit-htable-expire 120000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j LOG --log-prefix "[IPTABLES INPUT WEB DOS]"
-A INPUT -p tcp -m tcp --dport 80 -j DROP

Google のProject shiledへの参画

アメリカのGoogleProxyからのアクセスが非常に多い。
踏み台にされている模様。
Googleさん側でなんかしてくれてないか探していたらgoogle Project Shiledなるものを発見したので、登録。

以降

上記3点セットの設定して3日で落ちた。
DOSのログは大量に出ている。
さらに調査必要?