
特定の範囲のIPアドレスが私のサーバーに問題を引き起こすことを知っています。172.64.*.*
私のAmazon EC2インスタンスへのアクセスをブロックする最良の方法は何ですか?セキュリティグループを使用してこれを行う方法はありますか、それともサーバー自体のファイアウォールを使用して実行する方が良いですか?
答え1
可能であれば、サーバーとファイアウォールのトラフィックをブロックしてください。
セキュリティグループはホストの外部にあり、データがユーザーに到達しないため、優れています。ただし、ほとんどのサーバーベースのファイアウォールほど構成できません。
残念ながら、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の使用
使用する場合プライベートネットワークインスタンスの場合、サブネット上で実行するように「ネットワーク ACLS」を指定できます。ネットワークACLを使用すると、許可および拒否ルールを作成できるため、そうすることをお勧めします。
答え2
トラフィックを停止する最も簡単な方法は、トラフィックをインスタンスのVPCネットワークACLに追加し、そのIPアドレスのすべてのトラフィックを拒否することです(VPCが使用中であると仮定)。
覚えておくべき1つのことは、拒否ルール番号が最初の許可ルール番号より小さくなければならないことです。
答え3
私は問題に2回ぶつかり、EC2の状況が少し異なることに気づきました。iptables
サーバーがElastic Load Balancer(ELB)の背後にあるクラスターにある場合は機能しません。 - IPアドレスはい知っている人はELBです。
ELBが最新の構成で構成されている場合は、以下の回答を参照してください。https://stackoverflow.com/questions/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known-spammers
私たちの場合、そのような設定がなかったので、そこでX-FORWARDED-FOR
ヘッダーを検索し、IPアドレスをブロックするApacheを使用する必要がありました。
これを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
応答を送り返します。