首先,抱歉,我的英语不是我的母语。
我对 IPtables 感到疑惑。我读了很多关于它的文章和帖子,认为自己至少了解了一点。
我花了几个小时尝试了各种规则组合...您觉得怎么样?“安全”的配置好吗?
提前致谢 !
#!/bin/bash
#iptables-restore < /etc/iptables.test.rules
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Autorise les connexions déjà établies et localhost
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#iptables -A OUTPUT -o lo -j ACCEPT
TOR
iptables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT
# ICMP (Ping)
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp -j DROP
# DNS
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
# Mail SMTP
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
#Transmission
iptables -A INPUT -p udp --dport 51413 -j
ACCEPT
iptables -A OUTPUT -p udp --sport 51413 -j ACCEPT
# NTP (horloge du serveur)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
# On log les paquets en entrée.
iptables -A INPUT -j LOG
# On log les paquets en sortie.
iptables -A OUTPUT -j LOG
# On log les paquets forward.
iptables -A FORWARD -j LOG
exit 0
答案1
首先我想说的是,在本地机器上配置防火墙不是必须的。如果您没有直接连接到公共互联网(请不要这样做),您的家用路由器/防火墙可以提供基本的安全保障。我并不是说您尝试做的事情完全没有意义。我只是说,如果您不完全了解自己在做什么,就不要走得太远。
然后是 IPtable 规则。我的建议是从小处着手,逐步添加规则。例如从以下开始:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# DNS
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#Allow servers to respond to the packets that are send by this device
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
通过浏览 google.com 来测试规则。如果可行,则逐步添加其余规则。这比对一堆规则进行反复试验要容易得多。
我不明白你使用的所有规则的理念。其中一些看起来很奇怪。基于 tcp 标志的规则是高级内容。对于这些,你需要知道 tcp/udp 的工作原理。所以现在先不管它们,专注于其他的。
此外,当您使用默认 DROP 策略时,无需像 SSH 那样添加额外的 DROP 规则。使用的规则越少,就越容易理解。
一个额外的建议,用 Wireshark 捕获您的流量可能会很有用,这样您就可以看到正在发生的事情。请注意,根据 Wireshark 所查看的位置,它将影响您将看到的流量。我只是不能确切地告诉你 Wireshark 会在哪里捕获流量。也许其他人可以?
我希望这能有所帮助。否则请随时询问。