我有一个 IP 地址白名单,存储在 ipset 中。我想为我的输入链制定一个 iptables 规则,其中任何不在白名单上的 IP 都会立即被删除,并且不会考虑链下的任何规则。如果一个 IP 与白名单上的地址匹配,那么它会继续沿着链向下,检查其他规则。
如果我只是根据白名单设置默认策略 DROP 和 ALLOW 规则,则不在白名单上的 IP 地址可能会与链中的其他规则进行比较,并根据这些标准允许通过,这是我不希望的。我也不想立即让与白名单规则匹配的流量通过(我猜白名单在这里是用词不当),而是将流量应用于进一步的审查。 iptables 是否支持这种“DROP on not match”逻辑?
答案1
首先创建一个白名单,并选择一个名称(标识符)。我mylist
在这个例子中命名了我的。
$ sudo ipset -N mylist iphash
在我的白名单中,我想要允许10.10.10.0/24
并且10.80.80.0/24
(然后删除所有未列出的内容)
$ sudo ipset -A mylist 10.10.10.0/24
$ sudo ipset -A mylist 10.80.80.0/24
丢弃来自白名单中未定义的任何主机的任何流量
$ sudo iptables -A INPUT -m set ! --match-set mylist src -j DROP
然后允许在whitelsit 中定义的主机匹配您的要求所需的访问级别。