iptables防火墙配置

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

你可能感兴趣的:(iptables防火墙配置)