Linux系统防火墙iptables详解

在Linux中,iptables是用来设置IPv4数据包过滤和地址转换(NAT)的命令行工具,它本身并不是防火墙,只不过由它定义的规则可以让处于内核中的netfilter读取,并且实现让防火墙工作。

一共有四张表,分别是raw/mangle(修改报文原数据)/nat(地址转换)/filter(访问规则),默认是filter,又有五个规则链,分别是PREROUTING(路由前)/INPUT(数据包流入口)/FORWARD(转发管卡)/OUTPUT(数据包出口)/POSTROUTING路由后),何一个经过本机的数据包,必将经过这五个链中的其中一个链,表和链的适用关系如下:

filter INPUT, FORWARD, OUTPUT
nat PREROUTING, OUTPUT, POSTROUTING
mangle PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

语法

参数说明

参数 说明
表链管理
-t 指定表:raw|nat|filter|mangle,默认filter
-N 创建新链,例:iptables -N in_tcp_http
-E 将自定义链重命名
-X 删除用户自定义引用计数为0的空链
-S 列出选定链的规则
-Z 清空链及链中默认规则的计数
规则管理
-A 追加规则
-D <n> 删除第<n>条规则
-F 清空规则
-I <n> 将新规则插入至第<n>条
-R <n> 替换或修改第<n>条规则
-P 设置链默认规则,默认策略一般只有ACCEPT或DROP
-L 列出规则,子命令有-n,-v,-x等
  -n 以数字形式显示地址和端口
  -v, -vv, -vvv 在打印规则时显示详细信息
  -x 在计数器上显示精确值,不进行单位换算
  --line-numbers 在打印规则时显示规则序号
通用匹配
-p 匹配协议:tcp|udp|udplite|icmp|icmpv6|esp|ah|sctp|mh|all
-d 匹配目的IP地址,多个IP用逗号隔开
-s 匹配源IP地址,多个IP用逗号隔开
-i <网卡名> 匹配入站网卡地址
-o <网卡名> 匹配出站网卡地址
--dport 匹配目的端口
--sport 匹配源端口
扩展匹配:隐含扩展
-p tcp 针对TCP协议的扩展
  --dport xx[-xx] 指定源/目的端口或端口范围
  --sport xx[-xx]
  --tcp-flags 指定匹配TCP标识位SYN,ACK,FIN,PSH,RST,URG,跟两个参数:待检查的标识位和必须为1的标识位
-p udp 针对UDP协议的扩展
  --dport xx[-xx] 指定源/目的端口或端口范围
  --sport xx[-xx]
-p icmp 针对ICMP数据报文的扩展
  --icmp-type 0 响应的数据包echo-reply
  --icmp-type 8 请求回显的数据包echo-request
扩展匹配:显式扩展
-m multiport 启用多端口扩展,然后就可以使用如--dports 80,443
动作说明
-j <动作> 满足某条件时执行后续<动作>
  ACCEPT 悄悄接受
  DROP 丢弃,多用来隐藏身份和链表
  REJECT 明示拒绝
  LOG 将数据包信息记录到syslog日志
  DNAT 目的地址转换
  SNAT 源地址转换
  MASQUERADE 源地址伪装
  REDIRRECT 重定向,一般用于端口重定向
  MARK 标记
  RETURN 在自定义链执行完毕后使用返回原规则链

另外,状态检测是一种显式扩展,用于检测会议间的连接关系,常见的状态有四种,分别是:NEW/ESTABLISHED/RELATED/INVALID。

最后,执行iptables命令后需要保存规则才能永久生效,默认配置文件是/etc/sysconfig/iptalbes,当然也可以直接编辑该配置文件:

举例

原创文章禁止转载:技术学堂 » Linux系统防火墙iptables详解

精彩评论

9+2=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏