一.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