关于国家和政策的防火墙问题?

Gua*_*apo 6 linux iptables rules

我终于设法安装了我的 VM 主机,现在我正在使用 iptables 来创建、测试和学习。

  1. 我将以下规则放在规则的开头还是结尾有关系吗?

    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT DROP
    
    Run Code Online (Sandbox Code Playgroud)

    我已经测试过,没有区别,但我想确认一下。

    到目前为止我选择的答案: 尽早应用您的政策是个好主意。把它们放在开头。内部流量的 DROP 规则可能会导致问题。

  2. 具有以下规则将被视为防火墙故障?

    $IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    如果没有这个规则,我需要为我的 ssh 连接添加一个 OUTPUT 规则,例如:

    $IPT -A OUTPUT -p tcp --sport 2013 -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    答: 经过更多测试并与#iptables@freenode 上的人交谈后,我得出的结论是,使用-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTINPUT 和 OUPUT 是一个很好的方法,可以帮助您处理很多事情,例如 FTP,这是一个很好的方法,因为除非您打开该给定端口并被接受,否则不会有恶意连接。

    这是一个不使用上述内容的正常示例:

    $IPT -A INPUT -p tcp --dport 20:21 -j ACCEPT
    $IPT -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    现在这里是使用上面的规则的样子:

    $IPT -A INPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    这就是您所需要的,因为一旦建立连接,输出将立即跟进,您无需为 ftp-data 端口制定规则。

  3. 拥有以下规则有什么不好的地方,您能否举例说明为什么不拥有它,而只是定义您可能需要使用的任何东西?

    $IPT -P OUTPUT ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    到目前为止我选择的答案: 此策略规则允许所有传出流量。作为一项策略,允许一切显然不如只允许明确类型的流量安全。因此,如果安全是您的重中之重,您将需要在输出链上设置 DROP 策略。请注意,您随后必须包含许多规则,以允许将传出流量发送到可能大量的普通事物,例如:DNS、SMTP、IMAP、POP3、HTTP、HTTPS 等。

  4. 在下面的上下文中,conntrack 和 state 之间有什么区别?

    状态示例:

    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    连接示例:

    $IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    回答: 在#iptables@freenode 上与人们进行了一些研究谈话后,我得出的结论是我应该从这里开始使用 conntrack。

    从技术上讲,conntrack 匹配取代了 - 因此过时了 - 状态匹配。但实际上状态匹配并没有以任何方式过时。


我也很欣赏好的在线 iptables 阅读材料。


目前推荐的链接:

完美的规则集

Linux 文档项目

Bil*_*hor 3

  1. 尽早应用您的政策是个好主意。将它们放在开头。内部流量的 DROP 规则可能会导致问题。
  2. 该规则将被视为错误,因为它实施并接受策略。为每个服务添加接受规则是构建防火墙的正确方法。
  3. 接受策略表明您正在运行基本开放的策略。(我们把前门锁上了,但您可以使用任何其他门进入。)最好的政策是基本封闭的政策。我们锁好所有门窗,只打开我们需要的门窗。
  4. 尽管我见过的所有规则都使用状态,但看起来没有什么区别。contrack 模块将监视状态。将此规则与问题 2 中的端口接受规则结合使用以启用服务。

您可能需要查看Shorewall文档以了解 iptables 可以做什么。我用它在我的所有 Linux 实例(包括 OpenWRT)上构建防火墙。它为具有 1、2 或 3 个接口的服务器提供了详细记录的示例(默认/基本)配置。

Linux 文档项目也有文档。