この自社サイトが落ちたので、サーバの負荷状況を確認したらロードアベレージがとんでもないことに。
apache の負荷が高いようだったので、apacheを落とすとロードアベレージも落ち着きました。
サイトのアクセスログを調べると、どうも特定のIPアドレスからアタックが来ていることが判明しました。
アクセスログを tail -f しながら、apache を上げるとこのIPからのアクセスが再度大量に来ます。apache を再度落としてこのIPからのアクセスを拒否することにしました。
AWSのセキュリティグループでは許可設定しかできないので、セキュリティグループの設定でこのIPの遮断はできません。
httpd.conf でIP制限をかけても拒否をする事自体サーバリソース使うので避けたいですし、同様に iptable を入れるのも避けたいと考えてます。
そこで、Amazon VPC で拒否設定ができますのでこちらで対応します。これで、サーバの外側でアクセス制御をするという私の運用ポリシーも守れそうです。
以下、手順になります。
1. AWSのコンソールで「VPC」を開きます。
2. ネットワークACL を選択します。
3. 該当のネットワークACLを選択(一つしかありませんでしたが)し、「インバウンドルール」タブを選び「編集」を押します。
4. 「別のルールの追加」を押します。
5. 各入力欄に情報を追記してルールを作成します。
ルール#:数字が小さい程、適用される優先順位が高いです。(1, 2 で追加しました)
タイプ:「全てのトラフィック」
プロトコル:「すべて」
送信元:拒否したいIP/32
許可/拒否:拒否
上記を設定したら「保存」を押します。
拒否したいIPが複数ある場合は都度「別のルールの追加」を押してルールを作成します。(今回は2つのIPを追加しました)
これで、拒否したいIPアドレスからのアタックはなくなりました。