iptables防火墙配置
iptables防火墙的规则不是Windows防火墙的最佳匹配原则,而是安装顺序依次查找 ,所以越是具体的规则,或越是重要的规则应该放在规则链的头部
iptables中常用的参数以及作用
参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
查看iptables防火墙状态以及开启关闭防火墙
#查看防火墙状态
service iptables status
#查看防火墙服务,显示active (exited)是正常的,它加载完规则即可,无需一直保持运行
systemctl status iptables.service
#开启防火墙
service iptables start
#开启防火墙服务
systemctl start iptables.service
#关闭防火墙
service iptables stop
#重启防火墙
service iptables restart
#重启防火墙服务使配置生效
systemctl restart iptables.service
#永久启动防火墙(下次开机生效)
systemctl enable iptables.service
#永久关闭防火墙(下次开机生效)
systemctl disable iptables.service
安装iptables防火墙
#查看是否安装了iptables防火墙
rpm -qa | grep iptables
#安装防火墙
yum install -y iptables
#更新防火墙
yum update iptables
#安装防火墙服务
yum install -y iptables-services
查看iptables规则
#查看现有防火墙规则,-n表示以数字形式显示,如22端口,而不是显示ssh
iptables -L -n
#查看防火墙规则, -v表示查看详细信息
iptables -L -n -v
#查看NAT表,-t指定对应的filter,nat,mangle表,默认查看filter表
iptables -L -n -t nat
#只查看入站规则
iptables -L INPUT -n
#查看入站规则,并显示规则链编号
iptables -L INPUT -n --line-numbers
#查看所有的规则链并显示规则链编号
iptables -L -n --line-numbers
#查看NAT表并显示规则链编号
iptables -t nat -L -n --line-numbers
#查看NAT表中的"POSTROUTING"规则,并显示规则链编号
iptables -t nat -nvL POSTROUTING --line-number
保存iptables规则
#保存防火墙配置
service iptables save
#查看防火墙的配置文件
cat /etc/sysconfig/iptables
#在做任何改动之前先备份,这是一个好习惯
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
删除iptables规则
#清除所有规则
iptables -F
#清除nat规则
iptables -t nat -F
#清除所有转发规则
iptables -F FORWARD
#删除INPUT规则链编号为5的规则
iptables -D INPUT 5
设置iptables默认规则
#入站规则默认策略设置为拒绝
iptables -P INPUT DROP
#出站规则默认策略设置为允许
iptables -P OUTPUT ACCEPT
#转发数据包默认策略设置为拒绝
iptables -P FORWARD DROP
设置iptables允许ICMP
#入站规则允许ICMP,"-I"表示在规则链头部插入
iptables -I INPUT -p icmp -j ACCEPT
#允许ping通本机, "-A"表示在规则链尾部插入
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
设置iptables入站规则, 开放22端口
#入站规则允许TCP的22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
基于源地址目标地址,以及目标端口的iptables规则
#-I头部插入,-d目标地址,-p tcp协议,--dport目标端口22 ,-j DROP 拒绝
#拒绝访问192.168.80.137的22端口 (等于关闭某个接口的22端口)
iptables -I INPUT -d 192.168.80.137 -p tcp --dport 22 -j DROP
#-A尾部插入,-s源地址 ,-j ACCEPT 允许
#允许192.168.1.0/24访问本机的22端口
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
#允许10.10.10.11访问本机的3380端口
iptables -A INPUT -p tcp -s 10.10.10.11 --dport 3380 -j ACCEPT
设置白名单和黑名单
#配置白名单,允许192.168.1.0网段访问本机的任何协议任何端口
iptables -A INPUT -p all -s 192.168.1.0/24 -j ACCEPT
#拒绝这个192.168.80.5地址访问本机
iptables -I INPUT -s 192.168.80.5 -j DROP
#拒绝这个网段的地址访问本机
iptables -I INPUT -s 192.168.80.0/24 -j DROP
iptables设置内网NAT转换上网
#内网192.168.10.0/24网段使用ens33网卡的172.16.10.1地址做NAT转换上网
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens33 -j SNAT --to 172.16.10.1
#内网192.168.10.0/24网段通过ens33网卡做NAT转换上网(性能较差)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens33 -j MASQUERADE
iptables设置NAT端口映射
#本机的2222端口映射到内网虚拟机的22端口
iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222 -j DNAT --to-dest 192.168.80.11:22
实例:iptables的NAT+FORWARD实现内网的精确控制上网
#开启路由功能(BIOS需开启虚拟化支持)
sysctl net.ipv4.ip_forward=1
#查看是否开启路由转发功能1表示开启,0表示没有开启
cat /proc/sys/net/ipv4/ip_forward
或者sysctl -a | grep "ip_forward"
#使配置立即生效
sysctl -p/etc/sysctl.conf
#设置默认转发规则是拒绝
iptables -P FORWARD DROP
#允许任何地址到任何地址的确认包和关联包通过
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#内网192.168.10.0/24通过ens33网卡的172.16.10.1 ,做NAT转换上网
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens33 -j SNAT --to 172.16.10.1
#仅允许从ens38接口(内网接口)过来的包通过FORWARD链
iptables -A FORWARD -i ens38 -j ACCEPT
#指定转发规则从ens33网卡(外网接口)出去
iptables -A FORWARD -o ens33
#只允许192.168.10.11上网
iptables -A FORWARD -s 192.168.10.11 -j ACCEPT
#只允许内网192.168.10.0/24访问3.3.3.3
iptables -A FORWARD -s 192.168.10.0/24 -d 3.3.3.3 -j ACCEPT
#只允许内网192.168.10.0/24访问外面的80端口
iptables -A FORWARD -s 192.168.10.0/24 -p tcp --dport 80 -j ACCEPT
iptables允许本地环回地址
#允许本地环回地址127.0.0.1正常使用
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables其他用法
#入站规则已经建立的连接允许进来
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#入站规则拒绝其他未允许的规则(默认规则是允许的情况下)
iptables -A INPUT -j REJECT
#转发规则拒绝其他未允许的规则(默认规则是允许的情况下)
iptables -A FORWARD -j REJECT
iptables防止SYN攻击以及Windows蠕虫的攻击
阻止Windows蠕虫的攻击
iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
防止SYN洪水攻击
iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT
END