我需要一些有关设置 IPTables 的帮助。大部分配置都正常工作,但无论我怎么尝试,都无法允许 localhost 仅访问本地 Apache(即 localhost 仅访问 localhost:80)。
这是我的脚本:
#!/bin/bash
# Allow root to access external web and ftp
iptables -t filter -A OUTPUT -p tcp --dport 21 --match owner --uid-owner 0 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 --match owner --uid-owner 0 -j ACCEPT
#Allow DNS queries
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
# Allow in and outbound SSH to/from any server
iptables -A INPUT -p tcp -s 0/0 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -d 0/0 --sport 22 -j ACCEPT
# Accept ICMP requests
iptables -A INPUT -p icmp -s 0/0 -j ACCEPT
iptables -A OUTPUT -p icmp -d 0/0 -j ACCEPT
# Accept connections from any local machines but disallow localhost access to networked machines
iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 10.0.1.0/24 -j DROP
# Drop ALL other traffic
iptables -A OUTPUT -p tcp -d 0/0 -j DROP
iptables -A OUTPUT -p udp -d 0/0 -j DROP
现在我尝试了很多种排列方式,但显然我遗漏了所有信息。我将它们放在 SSH 的进出站之上,所以这不是优先顺序。
如果有人能告诉我只允许本地机器访问本地网络服务器,那就太好了。
另外 - 当上述配置运行时,我无法(从 Windows 机器)通过名称 ping 主机 - 可以通过 IP ping。我需要什么才能允许主机解析?
大家干杯!
答案1
一般建议-在规则集的开头添加:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
在此之后附加您的规则。我不明白为什么您要阻止本地主机访问某些东西。这会导致很多问题......对于 dns、mysql 和任何其他本地服务。