【Linux】iptables防火墙相关配置

  • 命令格式
    # iptables -t 表名 <-A/D/I/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
-t:指定要操纵的表

-A:向规则链中添加条目
-D:从规则链中删除条目
-I:向规则链中插入条目
-R:替换规则链中的条目

-i:指定数据包进入本机的网络接口
-o:指定数据包要离开本机所使用的网络接口

-p:指定要匹配的数据包协议类型
-s:指定要匹配的数据包源ip地址
-j:指定要跳转的目标
表名包括:
raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。
规则链名包括:
INPUT链:处理输入数据包
OUTPUT链:处理输出数据包
PORWARD链:处理转发数据包
PREROUTING链:用于目标地址转换(DNAT)
POSTOUTING链:用于源地址转换(SNAT)
动作包括:
ACCEPT:接收数据包
DROP:丢弃数据包
REDIRECT:重定向、映射、透明代理
SNAT:源地址转换
DNAT:目标地址转换
MASQUERADE:IP伪装(NAT),用于ADSL
LOG:日志记录
  • iptables命令
    # iptables -F
清除已有iptables规则
  • # iptables -X
删除指定的用户自定义链
这个链必须没有被引用,如果被引用在删除之前必须删除或者替换
如果没有给出参数,这条命令将删除每个非内建的链
  • # iptables -Z
把所有链的包及字节的计数器清空
  • # iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
允许本地回环接口
  • # iptables -A OUTPUT -j ACCEPT
允许所有本机向外的访问
  • # iptables -A INPUT -p tcp --dport 80 -j ACCEPT# iptables -A INPUT -p tcp --dport 21 -j ACCEPT# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
允许访问80端口
允许ftp服务的21、20端口
  • # iptables -A INPUT -j REJECT# iptables -A FORWARD -j REJECT
禁止其他未允许的规则访问
  • # iptables -I INPUT -s 192.168.28.128 -j DROP# iptables -I INPUT -s 172.16.28.0/24 -j DROP
屏蔽单个IP的命令
屏蔽整个网段的命令
  • # iptables -L -n -v
查看已添加的iptables规则
  • # iptables -L -n --line-numbers
将所有iptables以序号标记显示
  • # iptables -D INPUT 7
删除INPUT里序号为7的规则
  • # iptables -F INPUT
清空filter表INPUT所有规则
  • # iptables -P INPUT DROP
设置filter表INPUT默认规则是 DROP
  • iptables-save命令
    # iptables-save -t filter > filter.bak# ls
  • 指定要保存的表的名称
    -t 指定要保存的表的名称
  • # iptables-save -c > iptables.bak
  • 保存当前的数据包计算器和字节计数器的值
    -c	指定要保存的表时,保存当前的数据包计算器和字节计数器的值
  • iptables-restore命令
    # iptables-restore < iptables.bak
还原iptables配置
  • # iptables-restore -c < iptables.bak
在还原表时,还原当前的数据包计数器和字节计数器的值
-c	指定在还原表时候,还原当前的数据包计数器和字节计数器的值
  • # iptables-restore -t filter.bak# ls
-t 指定要还原表的名称