Linux之iptables防火墙( 五 )


3.3.1 多端口匹配

  • -m multiport --sport 源端口列表
  • -m multiport --dport 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT复制代码3.3.2 IP范围匹配
  • -m iprange --src-range 源IP范围
  • -m iprange --dst-range 目的IP范围
iptables -A FORWARD -p udp -m iprange --src-range 192.168.72.100-192.168.72.200 -j DROP # 禁止转发源地址位于192.168.72.100——192.168.72.200的udp数据包复制代码3.3.3 MAC地址匹配格式:
-m mac -- -mac- source MAC地址 复制代码示例:
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP #禁止来自某MAC地址的数据包通过本机转发复制代码3.3.4 状态匹配格式:
-m state --state连接状态复制代码常见的连接状态:
状态
含义
NEW
主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED
主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED
主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用
INVALID
无效的封包,例如数据破损的封包状态
示例:
iptables -I INPUT -M state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT #第一个包我只看22端口的包 #-p tcp是隐含匹配,可以省略-m tcpiptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT #允许放通tcp的这些端口号 #-m multiport加载多个端口模块iptables -A INPUT -p udp --dport 53 -j ACCEPT #放通UDP的53端口进来的包(DNS服务器返回信息时默认使用UDP的53端口) ? iptables -A INPUT -p tcp -m state --state ESTABLISHED ,RELATED -j ACCEPT #对进来的包的状态进行检测 。已经建立tcp连接的包以及该连接相关的包允许通过 。简单来说就是只允许所有自己发出去的包进来 。#比如我和你做生意,我们谈成了生意,到了支付的时候,就可以直接调用与这笔生意相关的支付功能 。iptables -P INPUT DROP #默认关闭,将以上的设置设为白名单复制代码4 总结1、Linux防火墙的两个组件:
  • 内核态 netilter(保存包过滤处理的规则集)
  • 用户态 iptables(防火墙规则管理工具)


推荐阅读