2017-02-23 268 views
-2

我有一个服务监听eth1的端口80和443上的客户流量。托管我的服务的服务器还在eth0和localhost上托管其他管理员/特权访问内容IPTable规则来限制eth1访问端口80和443

我试图设置iptable规则来锁定与客户端位于同一网络上的服务器上的eth1(通过eth1阻塞诸如ssh之类的东西/访问在端口9904上运行的内部服务等)我也想确保规则不禁止经常访问eth1:80和eth1:443。我已经提出了以下规则,但希望与iptable高手一起回顾关于此规则可能存在的问题。

-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -i eth1 -j DROP 
  • 执行上述规则足矣
  • 如何上面从找到的规则不同,谷歌搜索
-P INPUT ACCEPT 
-P FORWARD ACCEPT 
-P OUTPUT ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP 
-A INPUT -i eth1 -p tcp -j ACCEPT 
-A INPUT -i eth1 -j DROP 
+0

Stackoverflow用于编程问题。你会在serverfault.com找到iptable的大师 – Prabhu

+0

谢谢我得到了这个答案在http://serverfault.com/questions/834534/iptable-rules-to-restrict-eth1-access-to-ports-80-and-443可能有同样问题的人 – dejavu013

回答

0

感谢我得到这个回答https://serverfault.com/questions/834534/iptable-rules-to-restrict-eth1-access-to-ports-80-and-443时,将它添加此处为完整性

第一组规则首先允许您的端口 80和443上的所有传入数据包。然后,它会丢弃所有其他传入数据包(除了那些已被接受的数据包)。

第二组规则允许第一端口80 和443的所有传入的数据包然后降至传入的连接(不包括80和443 已接受),这与仅设置了SYN标志的数据包。 然后它允许所有传入的数据包。

这里的区别是你的OUTGOING连接会发生什么。在第一个规则集 中,如果您尝试连接到另一个服务器,则服务器发送回应的任何 数据包将被丢弃,因此 将不会收到任何数据。在第二种情况下,这些数据包将被 因为来自远程服务器的第一个分组允许将具有两个 SYN和ACK集,因此通过SYN测试,以及任何后续 分组将不具有SYN集在所有,并且因此通过考试。

这已使用的跟踪连接这就需要 内核保持防火墙的每个连接的轨道被传统做,有 命令状

-A INPUT -m跟踪连接--ctstate ESTABLISHED,RELATED -j ACCEPT

将传入数据包与现有连接匹配,或与某个其他现有连接(例如FTP数据连接)相关的连接。如果你没有使用FTP或使用 多个随机端口的其他协议,则第二个规则集基本上达到 相同的结果,而不跟踪的开销,并检查这些 连接。