【问题标题】:IPTable rules to restrict eth1 access to ports 80 and 443限制 eth1 访问端口 80 和 443 的 IPTable 规则
【发布时间】:2017-03-17 09:03:12
【问题描述】:

我有一项服务在 eth1 的端口 80 和 443 上侦听客户流量。托管我的服务的服务器还在 eth0 和 localhost 上托管其他管理员/特权访问内容

我正在尝试设置 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

【问题讨论】:

  • Stackoverflow 用于编程问题。您将在 serverfault.com 上找到 iptable 大师
  • 感谢我在serverfault.com/questions/834534/… 为可能有相同问题的人回答了这个问题

标签: networking tcp iptables


【解决方案1】:

感谢我在 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,因此可以通过测试。

这在传统上是使用 conntrack 完成的,它需要 内核跟踪防火墙中的每个连接,使用 命令之类的

-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

将传入数据包与现有连接匹配,或者 与其他现有连接(例如 FTP 数据)相关的连接 连接)。如果您没有使用 FTP 或其他使用 多个随机端口,那么第二个规则集基本上实现了 无需跟踪和检查这些开销的相同结果 连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2020-09-23
    相关资源
    最近更新 更多