我正在尝试阻止某个IP地址或范围到达我的Google Compute Engine服务器上配置的WordPress服务器。
我知道我可以通过Apache阻止它,但即使我这样做,我的access_logs仍会因来自此IP的请求而出现403错误。
有没有办法完全阻止IP,甚至不让它到达Apache?
提前感谢您的帮助。
答案 0 :(得分:2)
如果要阻止单个IP地址,但允许所有其他流量,最简单的选项可能是在主机上使用iptables
。 GCE firewall rules旨在控制哪些IP地址可以到达您的实例,但允许除了一个地址之外的互联网上的所有内容都可能会令人讨厌。
致block a single IP address with iptables
:
iptables -A INPUT -s $IP_ADDRESS -j DROP
或者只是删除HTTP(但不是HTTPS或其他协议):
iptables -A INPUT -s $IP_ADDRESS -p tcp --destination-port 80 -j DROP
请注意,在任何一种情况下,您都需要以root身份运行上述命令。
答案 1 :(得分:0)
默认情况下,阻止GCE的所有传入流量,但允许访问的端口和IP范围除外。 GCE防火墙不支持允许除特定IP或一系列IP地址之外的所有连接。作为解决方法,您可以设置负载均衡器,并允许从LB IP地址到实例的传入流量。您可以在此Help Center article中获得更多信息。
答案 2 :(得分:0)
是的,您可以使用Gcloud Firewall阻止它。
尝试从命令行创建防火墙规则或登录Google Cloud。
示例:强>
gcloud compute firewall-rules create tcp-deny --network example-network --source-ranges 10.0.0.0/8 --deny tcp:80
以上规则将阻止10.0.0.0/8到端口80(tcp)的范围。 可以通过tcp和udp阻止其他IP范围。
有关详情,请查看:glcoud network config
答案 3 :(得分:0)
Bitnami开发者
如果您想阻止某个IP,可以使用此帖子中指出的iptables
。
此外,如果您想在重新启动计算机时激活iptables
规则,则必须执行以下操作:
sudo su
iptables-save > /opt/bitnami/iptables-rules
crontab -e
现在编辑文件并在最后包含这一行:
@reboot /sbin/iptables-restore < /opt/bitnami/iptables-rules
这样,在每次启动时,系统都会加载iptables规则并应用它们。
答案 4 :(得分:0)
要阻止违规IP,可以使用不同级别的一些方法来实现。从性能的角度来看,通常:
网络防火墙> VM iptables> VM Web服务器> VM应用程序。
例如,此gcloud命令创建一个防火墙规则,该规则可以阻止1个或多个ips。
gcloud compute --project=your-project-id firewall-rules create your-firewall-rule-name --direction=INGRESS --priority=900 --network=default --action=DENY --rules=all --source-ranges=ip1,ip2,ip3…
命令参数参考,请参见https://cloud.google.com/sdk/gcloud/reference/compute/firewall-rules/create
您还可以使用Google云控制台或rest api创建它,但是在控制台上输入大量ip并不容易。
内置防火墙的当前限制:
如果还有其他10条防火墙规则,则可以阻止90x256 = 23040个独立ip,这对于一般情况是足够的。
注意:Google云应用引擎防火墙与内置防火墙是分开的。
查看其他答案。
Apache,Nginx也可以阻止ip。
不建议在此处阻止ip。但是应用程序可以帮助分析哪些IP需要阻止,例如多次登录失败。
答案 5 :(得分:0)
如果您希望系统自动阻止GCP防火墙中的所有错误IP地址,则可以签出Gatekeeper for Google Cloud Firewall。 它可以动态分析您的网络连接和WordPress / Apache日志,并创建适当的规则来抵御DoS和DDoS攻击以及间谍机器人。