52
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

海外からのサーバーアタックがあった時の暫定対応

Posted at

サーバーが応答しなくなった

管理しているサイト及びサーバーが大量のアクセスによって応答しなくなってしまい、やむなくインスタンスの再起動をしました。いわゆるDos攻撃かDDosです。

再起動後にアクセスログを確認

普段とは明らかに異なる大量のアクセス数があり、アクセス元のIPアドレスがいくつかのパターンに限定されたので、アクセス元のIPアドレスがどこの国のIPアドレスか調べました。

どこの国のIPアドレスか確認

いくつかIPアドレスから国を割り出すサイトがありますが、今回はこちらのサイトを使用しました。

怪しいアクセス元をいくつか検索したところ全て
「判別結果は「CN」でした。」
と表示されたので、中国からのアクセスである事が確実になりました。

不正アクセス元の国からアクセスを遮断する

幸い中国でサービス展開はしていないので、国単位でのアクセス遮断で問題無いとの判断になり、対応する事に。以下手順です

サーバー設定をする

今回はNginxでのお話しです。
サーバーにログイン後、以下手順で設定します。

1.各国のIPアドレスリストを取得

wget http://nami.jp/ipv4bycc/cidr.txt.gz

2.解凍

gunzip cidr.txt.gz

3.特定の国からのアクセス拒否をするconfを生成

sed -n 's/^CN\t\(.*\)/deny \1;/p' cidr.txt > /etc/nginx/dropip.conf

今回は中国からのアクセスを遮断するのでCNとなっています。
他の国を対応する例として、無いとは思いますが日本からのアクセスを遮断する場合は
sed -n 's/^JP\t(.*)/deny \1;/p' cidr.txt > /etc/nginx/dropip.conf
とします。

4.nginx.confに追記

http {}内に記載します。

http {
〜省略〜
include /etc/nginx/dropip.conf;
include /etc/nginx/conf.d/*.conf;

注意点
conf.d/*.confのincludeより上に記載してください。
conf.dにvirturlhostの設定とか書いていた場合、拒否IPのconfより先にconf.dの内容がincludeされてしまいます。

5.nginxのconfのリロード

/etc/init.d/nginx reload

設定が心配なら先に

/etc/init.d/nginx configtest

してください。

設定が適用されているか確認

nginxのエラーログを見ると以下の形式で、アクセスを遮断したipアドレスが表示されます。

[error] 3177#0: *1455 access forbidden by rule, client: xxx.xxx.xxx.xx
52
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?