这可能是最基本的,但我是一名开发人员,确实没有使用 iptbles 的经验。
我唯一需要打开的连接是:
eth0(朝外)
- 远程控制
- 平
- SSL 到 tomcat(将端口 443 转发到 8443)
eth1(本地子网)
- 连接到 postgres 服务器
其余一切都应被阻止。我目前的尝试似乎是让所有其他端口保持打开状态。我想知道发生了什么。
感谢 serverfault!
答案1
# Block incoming on eth0
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT
# Block incoming on eth1
iptables -A INPUT -i eth1 -p tcp --dport 5432 -j ACCEPT
# Block everything by default
iptables -j INPUT -i eth0 -j DROP
iptables -j INPUT -i eth1 -j DROP
# NAT
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
注意:我按照你说的做了,但你可能想要允许所有 icmp 数据包,它们有时很有用。
注2:我假设“postgres 服务器”是同一主机。
答案2
一旦你已经制定了这些规则,你要么必须制定一个跳转到 REJECT 或 DROP 的规则,要么你必须更改链的默认策略(-P
)。
答案3
尝试使用 Linux 程序 ufw,它使配置 iptables 变得更加容易
答案4
尝试此站点以获得干净的启动配置: http://www.mista.nu/iptables/