一.iptables介绍linux
二.安装服务并开启服务vim
yum install iptables-services.x86_64 网络
systemctl stop firewalldssh
systemctl disable firewalldtcp
systemctl mask firewalld ide
systemctl start iptables.service测试
systemctl enable iptables.servicespa
systemctl status iptables.servicerest
三.参数的相关解释和用法接口
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