回答:
念のため、可能であればサーバーとファイアウォールの両方でトラフィックをブロックします。
セキュリティグループはホストの外部にあるため、データはユーザーに届きません。ただし、ほとんどのサーバーベースのファイアウォールほど設定可能ではありません。
残念ながら、EC2セキュリティグループは、デフォルトの拒否ポリシーを介してのみサービスを「許可」できます。したがって、小さなIP範囲で公的に「許可された」サービスへのアクセスをブロックしようとしている場合、「インターネットの残り」の許可ルールを構築することは、IP範囲をブロックするよりも少し複雑です。素敵な大きなチャンクを指定したので、172.64.0.0 / 16を含まないネットワーク範囲のリストは長すぎません:
0.0.0.0/1
128.0.0.0/3
160.0.0.0/5
168.0.0.0/6
172.0.0.0/10
173.0.0.0/8
174.0.0.0/7
176.0.0.0/4
192.0.0.0/3
224.0.0.0/3
このリストは、ポートに追加する必要があります。その後、そのポートの「すべて許可」ルールを削除できます。連続していない複数のポートがある場合、それらのリストは複数回入力する必要があります。複数のセキュリティグループがある場合、これはすぐに管理不能になる可能性があります。
ローカルファイアウォールも機能します。iptables
デフォルトのAmazon AMIおよびすべてのLinuxディストリビューションで利用可能です
sudo iptables -I INPUT -s 172.64.0.0/16 -j DROP
ルールを追加したら、ルールを保存し、iptables
起動時にサービスが開始されることを確認する必要があります。
# For Amazon Linux
sudo service iptables save
# Other distributions might use one of these:
#sudo iptables-save > /etc/sysconfig/iptables-config
#sudo iptables-save > /etc/iptables/rules.4
保存する構成ファイルは、ディストリビューションによって異なります。
インスタンスにVPCを使用する場合、サブネットで機能する「ネットワークACL」を指定できます。ネットワークACLを使用すると、許可ルールと拒否ルールの両方を作成できるため、この方法で行うことをお勧めします。
iptables
動作していないことがわかりませんので、セキュリティグループで許可されている大きなサブネットを参照していますか?
2回問題に遭遇しましたが、EC2の状況が少し異なることに気付きました:iptables
サーバーがElastic Load Balancer(ELB)の背後のクラスターにある場合は動作しません- インスタンスが知っているIPアドレスはELB。
ELBを最新の構成で構成している場合は、このSOの回答を参照してください:https : //stackoverflow.com/questions/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known -スパマー
私たちの場合、うまくセットアップできなかったため、Apacheを使用する必要がありました。ApacheはX-FORWARDED-FOR
ヘッダーを検索し、そこからIPアドレスをブロックできます。
これをApache設定に追加します(おそらくVirtualHostブロックに):
RewriteEngine On
RewriteCond %{HTTP:X-FORWARDED-FOR] ^46\.242\.69\.216
RewriteRule .* - [F]
これにより、ELBによって設定されたヘッダーがチェックされます
設定を保存しapache2ctl -t
、debian / ubuntu(またはapachectl -t
RHEL)でテストしてから、apacheを再起動します。
これは単に403 Forbidden
応答を送り返します
AWSで単一のIP / IP範囲からのトラフィックをブロックする
ここに簡単なチュートリアルがあります:http : //chopmo.dk/posts/2015/06/13/blocking-traffic-in-aws.html