黑白名单

**黑名单:**即默认策略为 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 端口的入站规则 案例三

  1. 创建一条自定义链 注意:前面说过,-t filter 可以省略,为默认值
  2. 向 IN_WEB 中添加并查看规则 注意:操作自定义链与默认链没什么不同
  3. 使用默认链来引用自定义链 注意:没有默认链引用时,之前定义的规则是无法被正常使用的,被哪条默认链引用取决于实际工作场景(自定义链也可以引用其他自定义链) 注意:此时的 “-j 动作” 表示访问本机的 80 端口的 tcp 报文将由自定义链来处理,我们也可以发现 IN_WEB 中的 references 数值变为了 1,表示该自定义链被引用了一次
  4. 重命名自定义链
  5. 删除自定义链 注意:删除自定义链需满足两个条件 1)自定义链中没有任何规则,即自定义链为空 **2)自定义链没有被任何默认链引用,即自定义链的引用计数为 0 **