![什么是适合我的桌面的可靠 iptables 配置?](https://linux22.com/image/23781/%E4%BB%80%E4%B9%88%E6%98%AF%E9%80%82%E5%90%88%E6%88%91%E7%9A%84%E6%A1%8C%E9%9D%A2%E7%9A%84%E5%8F%AF%E9%9D%A0%20iptables%20%E9%85%8D%E7%BD%AE%EF%BC%9F.png)
在我的桌面上,我想非常严格地配置 iptables。我认为除了我发起的互联网流量之外,没有任何理由需要允许任何事情。甚至可能仅限于少数几个端口。可以关闭我的桌面的基本规则是什么?我只需要:
- 浏览互联网
- 下载电子邮件
有什么推荐的规则吗?
答案1
以下规则将允许所有传出连接,但阻止任何传入连接。 INPUT 和 FORWARD 链默认设置为拒绝数据包,OUTPUT 链默认设置为接受数据包,最后一条规则允许作为现有连接一部分的传入数据包(在本例中只能是传出连接)。
iptables --policy INPUT DROP
iptables --policy FORWARD DROP
iptables --policy OUTPUT ACCEPT
iptables --append INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
iptables --append INPUT --jump REJECT
iptables --append FORWARD --jump REJECT
如果要限制传出流量,您需要将 OUTPUT 策略更改为拒绝,并添加规则以接受某些端口上的流量。例如:
iptables --policy OUTPUT DROP
iptables --append OUTPUT --protocol udp --match multiport --dports domain,bootps --jump ACCEPT
iptables --append OUTPUT --protocol tcp --match multiport --dports domain,http,https,ssh,pop3s,imaps,submission --jump ACCEPT
iptables --append OUTPUT --jump REJECT
答案2
以下iptables-restore
脚本应该足以满足您的需求:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state ! --state NEW -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
COMMIT
通过删除允许 ICMP ping 的规则,可以使脚本变得更短,但我不建议这样做。 IMO,响应 ping 不会对安全性造成太大影响(如果有的话),并且它有助于网络故障排除。
如果您想允许特定 TCP 端口上的传入连接(例如允许ssh
连接),您可以将规则添加到脚本中,如下所示,位于语句的正上方COMMIT
:
-A INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT