Answers:
为了以防万一,请尽可能阻止服务器和防火墙上的通信。
安全组很好,因为它们在您的主机外部,因此数据永远不会到达您的手中。但是,它们的可配置性不如大多数基于服务器的防火墙。
不幸的是,EC2安全组只能通过默认的拒绝策略“允许”服务。因此,如果您试图在较小的IP范围内阻止对公共“允许”服务的访问,则为“ Internet的其余部分”建立允许规则比仅阻止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,则可以指定在子网中可用的“网络ACLS”。网络ACL确实允许您编写允许和拒绝规则,因此我建议采用这种方式。
iptables
不到不起作用,因此您是指安全组中的大型子网允许吗?
停止流量的最简单方法是(假设正在使用VPC),方法是将其添加到该实例的VPC网络ACL中,并拒绝来自该IP地址的所有流量。
要记住的一件事是,拒绝规则号应小于第一个允许规则号。
我两次遇到问题,意识到我的EC2情况有些不同:iptables
如果您的服务器位于弹性负载均衡器(ELB)后面的群集中,则该服务器不起作用- 实例知道的IP地址是ELB。
如果您将ELB配置为更现代的配置,请参见以下SO答案:https : //stackoverflow.com/questions/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known垃圾邮件发送者
在我们的例子中,我们的设置不完善,所以我不得不使用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