一.iptables介绍
二.安装服务并开启服务
yum install iptables-services.x86_64
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl start iptables.service
systemctl enable iptables.service
systemctl status iptables.service
三.参数的相关解释和用法
iptable
-t##指定表名称
-n##不作解析
-L##列出指定表中的策略
-A##增加策略
-p##网络协议
--dport ##端口
-s##数据来源
-j##动作
ACCEPT##允许
REJECT ##拒绝
DROP##丢弃
-N##增加链
-E##修改链名称
-X##删除链
-D##删除指定策略
-I##插入
-R##修改策略
-P##修改默认策略
iptables -t filter -nL#查看filter表中的策略
iptables -F#刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter
service iptables save#保存当前策略
iptables -A INPUT -i lo -j ACCEPT#允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT##允许访问22端口
iptables -A INPUT -s 172.25.254.224 -j ACCEPT##允许224主机访问本机所有端口
iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源
iptables -N redhat##增加链redhat
iptables -E redhat westos##改变链名称
iptables -X westos##删除westos链
iptable -D INPUT 2##删除INPUT链中的第二条策略
iptables -I INPUT -p tcp --dport 80 -j REJECT##插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT##修改第一条策略
iptable -P INPUT DROP##把INPUT表中的默认策略改为drop
四.数据包状态策略(缓解压力,提高速度)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
允许RELATED,ESTABLISHED 状态通过
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
允许lo回环接口状态为NEW通过
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
允许访问端口22状态为NEW通过
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
允许访问端口80状态为NEW通过
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
允许访问端口443状态为NEW通过
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
允许访问端口53状态为NEW通过
iptables -A INPUT -j REJECT
拒绝所有主机的数据来源
该策略第一次通过后状态会变为RELATED或ESTABLISHED,此后访问时直接通过iptables,不会给iptables带来访问压力。
五.vsftp在iptables下的设置(编写策略让自己开启的非默认端口可以正常工作)
ftp在主动模式下会随机打开一个大于1024的端口,所以开启防火墙后会被禁掉,无法正常使用
1. 编辑配置文件 vim /etc/vsftpd/vsftpd.conf ,并且修改selinux的状态
pasv_max_port=7000
pasv_min_port=7000
systemctl restart vsftpd 重启服务
setenforce 0
2.测试
lftp 172.25.254.24
ls 查看内容,无法显示
3.添加火墙策略
iptables -I INPUT 3 -m stat --state NEW -p tcp --dport 7000 -j ACCEPT
4.测试
lftp 172.25.254.24
ls 查看内容,可以显示
六.iptables的伪装
1.查看内核路由功能,若没有打开则打开内核路由功能。
sysctl -a | grep forward 查找内核路由功能开关
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf 打开内核路由功能
sysctl -p 查看内核路由功能的状态。0表示关闭,1表示打开
2.配置主机双网卡ip
eth0的IP:172.25.254.124 eth1的IP:172.25.0.124
3.添加火墙策略
SNAT转换(源地址转换在路由完成之后转换):
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.124
DNAT转换(目的地转换在路由完成之前转换)
iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-dest 172.25.0.224
4.测试
SNAT测试:
1.配置测试主机(另外一台虚拟机)的网卡ip,网关
IP:172.25.0.224 GATEWAY=172.25.0.124
2.用ssh连接另外一台主机172.25.254.24
ssh root@172.25.254.24
查看网络ifconfig 显示的是172.25.254.124
DNAT测试:
1.用ip:172.25.254.24(真机)去连接172.25.254.124
ssh root@172.25.254.124
2.ifconfig查看网络 显示的是172.25.0.224