我的networking已完全locking,只有less数网站列入白名单。 这一切都是通过iptables完成的,如下所示:
# Allow traffic to google.com iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT ...
显然这些地址是假设的,但你明白了。 我的防火墙正在变得巨大。 如果我能做到这一点,维护起来会容易得多:
# Allow traffic to google.com iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
我相信这是可能的,因为man iptables说:
地址可以是networking名称,也可以是主机名 (请注意,指定使用远程查询(如DNS)parsing的任何名称是一个非常糟糕的主意),networkingIP地址(带/掩码)或纯IP地址。
但是我关心的是“指定任何需要解决的名字…… DNS是一个非常糟糕的主意”的部分。 为什么这是一个坏主意? 它只是放慢了一切?
如果我真的不应该在iptables规则中使用主机名,那么我应该怎么做来简化我的防火墙?
如果您的目的是阻止HTTP访问,那么您通常会更好地设置一个旨在在该级别进行过滤的软件(例如,squid + squidquard)。
如果您在防火墙中使用主机名,则您的防火墙现在依赖于DNS。 这将打开防火墙的一些问题:
如果您使用主机名,而您不控制DNS,则其他人有效地控制您的IPtables规则。 错误,错误或安全问题在他们的最终成为你的问题。
我唯一见过的主机名就是内部操作。 我在办公室工作,IP和主机名是通过DHCP分配的。 防火墙使用主机名来在不同的组之间设置障碍。 由于这是所有内部控制,它运作良好。
你可以使用一个类似shorewall的iptables包装器来使你的规则更容易维护。
正如其他人已经表示,你不应该在iptables规则中使用DNS可parsing的名称。 他们是不准确的,由第三方控制,通常是一件坏事(tm)。 我还要补充说你的DNS可能会失败,或者在iptables服务启动的时候可能无法访问。 在这种情况下,根本不会添加规则,并且可能会发生一些新的问题(如重新启动后丢失ssh访问)。
你可以做的是:
ipset s将地址分组并从规则中分离出来 也没有人说主机名是什么坏东西不解决的DNS(即在hosts中指定。你可以使用它们,如果你真的需要。
我个人在/ etc / hosts中手动指定一个主机名为ip,然后在iptables中使用它。
这样你