黑白名单
**黑名单:**即默认策略为 ACCEPT,链中规则对应的动作应该为 DROP 或 REJECT ,表示只有匹配到规则的报文才会被拒绝,没有匹配到规则的报文默认被放行
**白名单:**即默认策略为 DROP 或 REJECT,链中规则对应的动作应该为 ACCEPT ,表示只有匹配到规则的报文才会被放行,没有匹配到规则的报文默认被拒绝
也就是说:
白名单时,默认所有人是坏人,只放行好人
黑名单时,默认所有人是好人,只拒绝坏人
案例一:
简单的黑名单(默认策略为 ACCEPT,链中规则对应的动作为 DROP 或 REJECT)
案例二:
简单的白名单(默认策略为 DROP 或 REJECT,链中规则对应的动作为 ACCEPT )
先添加规则动作为 ACCEPT 的链使端口 22 可以被访问,然后使用 -P 把默认策略改为 DROP
如下图:
注意:但是上图的设置有个问题,就是如果误操作把这这条规则删掉了或执行了 iptables -F INOUT 清空了链,正在连接的 ssh 就会 的断开,这个显然不是我们想要的
可以做以下修改:
让默认策略继续为:ACCEPT,在需要放行的规则后面添加一条拒绝所有请求的规则
意思是:如果报文符合放行规则,则会被放行规则匹配到,得以通过,如果没有,则会被最后一条拒绝规则禁止通行
这样做的目的是在误操作的情况下(iptables -F INOUT 清空了链),也可以保证连接是畅通的
自定义链
**用于解决默认链中规则非常多时,方便我们分类管理,**比如定义一条链,只存放针对 80 端口的入站规则 案例三
- 创建一条自定义链
注意:前面说过,-t filter 可以省略,为默认值
- 向 IN_WEB 中添加并查看规则
注意:操作自定义链与默认链没什么不同
- 使用默认链来引用自定义链
注意:没有默认链引用时,之前定义的规则是无法被正常使用的,被哪条默认链引用取决于实际工作场景(自定义链也可以引用其他自定义链)
注意:此时的 “-j 动作” 表示访问本机的 80 端口的 tcp 报文将由自定义链来处理,我们也可以发现 IN_WEB 中的 references 数值变为了 1,表示该自定义链被引用了一次
- 重命名自定义链
- 删除自定义链
注意:删除自定义链需满足两个条件
1)自定义链中没有任何规则,即自定义链为空
**2)自定义链没有被任何默认链引用,即自定义链的引用计数为 0 **