インターネットからAWSのサーバーへの通信で、ある送信元からの通信をブロックしたいときにはどのような方法があるかを考えてみました。
AWS内で通信を制御できるところは以下になります。
1. ネットワークACL
2. セキュリティグループ
3. OSの機能
windowsであれば、windows Firewallなど
Linuxであれば、iptablesなど
1.のネットワークACLはインバウンドとアウトバウンドをステートレスで制御でき、ホワイトリストとブラックリスト方式となっています(CiscoルータのACLと同様の機能)。ブラックリスト方式のため、遮断させるネットワークを指定することができます。
2.のセキュリティグループでは制御が難しい可能性があります。
セキュリティグループはホワイトリスト方式で全ての通信をブロックした状態から許可したい通信を追加していきます。もし、セキュリティグループで送信元が全てで許可していた場合には、許可したいルールを全て入れることになるため、セキュリティグループのルール数の上限に達してしまう可能性があり、実装が難しくなります。
Amazon VPC 制限
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Appendix_Limits.html
3.のOSの機能ですが、通信を遮断することは可能です。ですが、サーバーのCPUやメモリのリソースを通信の遮断の処理に割り当ててしまうため、通信量によっては正常なサービスが提供できなくなる可能性があると考えられます。
結論としては、ネットワークACLで制御するのがよいとは思います。
ただ、選択肢としてOSの機能で制御もできるので、例えば、お客様の希望やOS上で遮断したログを確認したい時などは、OSで制御するでもよいのかと思います。