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

我终于设法安装我的虚拟主机,现在我正在搞iptables创build,testing和学习。

  1. 如果我把下面的规则放在我的规则的开始或结束时,是否有关系?

    $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT DROP 

    我已经testing,没有什么区别,但我想确认。

    回答我目前select:尽早实施您的政策是一个好主意。 把它们放在一开始。 内部stream量的DROP规则可能会导致问题。

  2. 有下面的规则会被认为是防火墙上的错误?

     $IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

    没有这个规则,我需要添加例如一个输出规则为我的SSH连接,例如:

     $IPT -A OUTPUT -p tcp --sport 2013 -j ACCEPT 

    答案:-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT @ freenode上进行了更多的testing并与人交谈之后,我得出结论:使用-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT INPUT和OUPUT是一个很好的方法,它将帮助你处理大量像FTP这样的东西,并且是一个很好的解决scheme,因为除非你给定的端口打开并且被接受,否则就不会有恶意的连接。

    这是一个正常的例子,不使用上面的例子:

     $IPT -A INPUT -p tcp --dport 20:21 -j ACCEPT $IPT -A OUTPUT -p tcp --dport 20:21 -j ACCEPT 

    现在这里是如何使用上面的规则:

     $IPT -A INPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT 

    这就是你所需要的,因为一旦连接build立起来,输出将立即进行后续处理,而不需要为ftp-data端口制定规则。

  3. 有什么是不好的事情有以下的规则,你可以举一些例子,为什么不拥有它,而只是定义你可能需要使用的任何东西?

     $IPT -P OUTPUT ACCEPT 

    回答我目前select:此策略规则允许所有传出stream量。 作为一项政策,允许一切显然比只允许明确的stream量安全。 所以,如果安全是您的最高优先级,您需要改为在输出链上设置DROP策略。 请注意,您将不得不包含一些规则,以允许传出stream量到可能的大量世俗事物,例如:DNS,SMTP,IMAP,POP3,HTTP,HTTPS等。

  4. conntrack和国家之间的区别是什么?

    状态示例:

     $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

    conntrack例子:

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

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

    从技术上来说,conntrack比赛取代了国家队的比赛,而且已经过时了。 但实际上国家的比赛并没有以任何方式过时。


我会不胜感激良好的在线iptables阅读材料。


目前推荐的链接:

完美的规则集

Linux文档项目

    1. 尽早应用您的政策是一个好主意。 把它们放在一开始。 内部stream量的DROP规则可能会导致问题。
    2. 这个规则会被认为是一个错误,因为它实施和接受政策。 为每个服务添加接受规则是构build防火墙的正确方法。
    3. 接受政策表明您正在运行大部分开放的政策。 (我们把前门锁上了,但是你可以用其他的门进去。)最好的政策是一个大部分是封闭的政策。 我们锁住所有的门和窗户,只打开我们需要的东西。
    4. 这似乎没有什么区别,虽然我看到使用状态的所有规则。 conctrack模块将监视状态。 使用此规则与问题2中的端口接受规则来启用服务。

    你可能想看一下Shorewall文档,看看iptables能做什么。 我使用它在我的所有Linux实例(包括OpenWRT)上构build防火墙。 对于具有1个,2个或3个接口的服务器,它具有良好的文档示例(默认/基本)configuration。

    Linux文档项目也有文档。

    你没有提到有关NAT表的任何内容,所以我将假定这个问题涉及到为独立服务器写iptables防火墙脚本,而不是多宿主/网关盒。

    1. 你是正确的:每一个链条都有一个单一的政策,所以这个政策规则的地方或者顺序是没有关系的。

    2. 该规则build立了许多/大部分防火墙脚本使用的约定: 状态性 。 虽然只是一个小挑逗。 我不会包含NEW状态,并且还会包含INPUT链的规则,即:

      $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

      $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

      我将这些规则放在所有防火墙脚本的附近或顶部,因为它们允许我专注于创build过滤连接尝试的规则,而不必考虑build立非连接的数据包。 在我看来,没有这些规则的防火墙脚本可能比包含它们的更复杂,因此更容易出错。

    3. 此策略规则允许所有传出stream量。 作为一项政策,允许一切显然比只允许明确的stream量安全。 所以,如果安全是您的最高优先级,您需要改为在输出链上设置DROP策略。 请注意,您将不得不包含一些规则,以允许传出stream量到可能的大量世俗事物,例如:DNS,SMTP,IMAP,POP3,HTTP,HTTPS等。

    State vs. Conntrack:State被删除,赞成使用Linux kernel 3.7的conntrack