概要
あー、なんか変な出処のIPからむちゃくちゃなリクエストを受けている…。アクセス制限しよう。ただ、その度にデプロイ走らせたり、ミドルウェアの設定弄るのは嫌だな…。
お…?AWSコンソールからポチポチするだけでアクセス制限できるじゃん最高!
仕組み
みんなだいすきセキュリティグループはAllowが基本なので、特定のIPだけDenyするのには使えません。そこで、ネットワークACLを使用します。(参考: ネットワークACLとセキュリティグループの機能比較)
ネットワークACLはAllowだけではなくDenyも可能で、優先順位順に適用されていきます。これを利用します。
方法
AWSコンソールのVPCに入り、左メニューからネットワークACLを選択します。デフォルトだとVPCごとにネットワークACLが作成されているので、アクセス制限を行いたいVPCのネットワークACLを選択します。
するとデフォルトではインバウンドルールが以下の様になっています。
ルール# | タイプ | プロトコル | ポート範囲 | 送信元 | 許可/拒否 |
---|---|---|---|---|---|
100 | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | 許可 |
* | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | 拒否 |
アクセス制限したいIPが192.168.0.1〜192.168.0.255の時は、以下の様に一つルールを追加します。
ルール# | タイプ | プロトコル | ポート範囲 | 送信元 | 許可/拒否 |
---|---|---|---|---|---|
50 | すべてのトラフィック | すべて | すべて | 192.168.0.1/24 | 拒否 |
100 | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | 許可 |
* | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | 拒否 |
これで完了です。試しに自分が持っている単一IPをアクセス制限し、正常に動作するか確認してみるのが良いと思います。
おわりに
おっ、いけるじゃーん!みたいなノリでやったので、この記事の誤りを見つけたり何か知見をお持ちの方は編集リクエストなど頂けると嬉しいです ( _ _)