事の発端

サーバが落ちてたので何気に再起動させたんですが、その数時間後また落ちる・・・。
何故ー?と思って原因を調べてみたところ、国外からのスパムがヒドくて落ちてたようです。
以前ちょろっとスパム対策してたので割と放置してたんですが甘かったです。
今回更にスパム対策を色々試してみたんですが、ボットの投稿がウザいとかそういう問題じゃないんです・・・、アタックのアクセスが多すぎてサーバ落ちるのが問題。

対策の方針

WPのサイトを運営しているのが良くないようでかなり攻撃されます。
相当頭に来たので、ブチ切れモードで海外からのWEBアクセスを全て遮断してやりましょう!w

今回の対策はNginx側で国内IPのアクセスのみを許可して他を全て切り捨てるという強引な方法になります。

対応内容

まず、IPアドレスのリストをダウンロードします。
このサイトからダウンロードできますね、今回は「cidr.txt.gz」というものを使わせて頂くことにします。
http://nami.jp/ipv4bycc/

$ cd /usr/local/src ← 書き込み権限アリにしてあります
$ mkdir ip_list
$ cd ip_list
$ wget http://nami.jp/ipv4bycc/cidr.txt.gz
$ gunzip cidr.txt.gz

次にNginx用の設定ファイルを作成して、Nginxの基本の設定ファイルを書き換えます。

$ su -
# cd /usr/local/src/ip_list
# sed -n 's/^JP\t\(.*\)/allow \1;/p' cidr.txt > /etc/nginx/allowip.conf
# vi /etc/nginx/nginx.conf

こんな感じ

http {
    ・・・
    # Allow IP
    include /etc/nginx/allowip.conf;
    deny all;

    include /etc/nginx/conf.d/*.conf;
}

そしてNginxを再起動すれば海外からのアクセスを全て遮断することになります。
ちなみにApacheと違ってallowとdenyを書く順序は逆になるみたいですね。 ^^A

# /etc/init.d/nginx restart

おわり

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.