【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 指定要还原表的名称