IPtables 配置

IPtables 配置

首先,抱歉,我的英语不是我的母语。

我对 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 会在哪里捕获流量。也许其他人可以?

我希望这能有所帮助。否则请随时询问。

相关内容