如何禁止外部访问 127.0.0.1?

如何禁止外部访问 127.0.0.1?

我使用 127.0.0.1:9000 上的 tcp 套接字将 nginx 连接到 php5-cgi。但是我想确保不会向此 IP 发出任何外部请求,这样攻击者就无法混淆 IP 并绕过 nginx 使用 php 进行恶意操作。

现在我想知道是否真的可以进行这样的利用,如果可以,我该如何使用 iptables 来避免它?

答案1

一般情况下,无法localhost从外部地址访问仅绑定到 的服务。SF 是相当 充足 如何扭转这种状况,以及实现这一目标所需的体操,这些问题并不简单,因为整个绑定概念的localhost设计就是为了给你提供安全性,而无需多言。

答案2

您可以创建防火墙规则来阻止此类流量,但启用反向路径过滤会更容易。

(root)$ echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter

反向路径过滤使用路由表来过滤传入数据包中的欺骗地址。

您可以通过在 /etc/systcl.conf 中添加以下内容在所有接口上默认启用此功能:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

更多信息:http://www.slashroot.in/linux-kernel-rpfilter-settings-reverse-path-filtering

然而...

正如 MadHatter 所提到的,这对于 127.0.0.1/8 来说完全没有必要。(如果您愿意,可以使用 记录这些数据包net.ipv4.conf.all.log_martians = 1)。

相关内容