一.iptables简介
iptables是与Linux内核集成的过滤防火墙系统,其中包含三表(filter表,nat表,mangle表)、五链(INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING)
nat表:Nat表主要用于网络地址转换。根据表中的每一条规则修改网络包的IP地址。流中的包仅遍历一遍Nat表。例如,如果一个通过某个接口的包被修饰(修改了IP地址),该流中其余的包将不再遍历这个表。通常不建议在这个表中进行过滤,由NAT表支持的链称为PREROUTING 链,POSTROUTING 链和OUTPUT 链。
mangle表:这个表用于校正网络包。它用来对特殊包的包头和内容(TTL,TOS,MARK)进行标记修改。Mangle表不能用于地址伪装。支持的链包括PREROUTING链,OUTPUT链,Forward链,Input链和POSTROUTING链
filter表:如果没有定义任何规则,Filter表则被当作默认的表,并且基于它来过滤。它用来访问控制,规则匹配,过滤网络包。支持的链有INPUT 链,OUTPUT 链,FORWARD 链。
二.安装启动iptable服务
关闭firewalld服务,开启iptables服务
三.参数解释用法
-t 指定表名称
-n 不作解析
-L 列出指定表中的策略
-A 增加策略
-p 网络协议
--dport 端口
-s 数据来源
-j 动作
ACCEPT 允许
REJECT 拒绝
DROP 丢弃
-N 增加链
-E 修改链名称
-X 删除链
-D 删除指定策略
-I 插入
-R 修改策略
-P 修改默认策略
查看iptables列表
iptables -t filter -nL 查看filter表中的策略(不加-t则默认为filter表)
iptables -F 刷掉filter表中的测量,当没有用-t指定表名称时默认为filter
service iptables save 保存当前策略
1.filter表丢弃所有
无法访问http
2.filter表通过所有
可以正常访问
3.iptables -A INPUT -j REJECT 拒绝所有主机的数据来源
4.允许lo
允许172.25.254.228访问22端口
5.允许访问80端口
6. iptable -D INPUT 3 删除INPUT链中的第二条策略
7.iptables -D INPUT -p tcp --dport 80 -j REJECT 删除允许接入80端口的策略
8.iptables -R INPUT 1 -s 172.25.254.228-p tcp --dport 80 -j ACCEPT 修改第一条策略
9.iptables -N WESTOS 增加链WESTOS
10.iptables -E WESTOS redhat 改变链名称
11.iptables -X redhat 删除redhat 链
四.数据包状态策略(缓解压力,提高速度)
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 -j REJECT
拒绝所有主机数据来源
该策略第一次通过后状态会变为RELATED或ESTABLISHED,此后访问时直接通过iptables,不会给iptables带来访问压力
五.vsftp在iptables开启下的设置
ftp主动模式下会随机打开一个大于1024的端口,所以开启防火墙后会被禁掉,无法正常使用
解决方案:
1.修改ftp端口为固定端口7000
2.添加iptables允许通过7000端口策略
3.关闭SElinux
4.可以登陆ftp
如果取消设置ftp固定端口设置
无法登陆ftp
六.iptables的伪装
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.128
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.0.228
环境配置
服务端两块网卡 eth0 172.25.254.128
eth1 172.25.0.128
客户端IP 172.25.0.228
真机 172.25.254.28
客户端到真机
路由转发:
(1)保存清空iptables的设置
(2)设置从客户端到从服务端eth0出去的数据伪装成源数据为172.25.254.128
(3)配置客户端的网关为172.25.0.128
(4)启动内核路由转发功能
重新加载
(5)数据出去伪装测试
客户端可以ping通真机172.25.254.28
(6)在客户端ssh连接真机后
显示登陆用户为www.westos.com
通过查看hosts的解析,知道www.westos.com为服务端的主机名
(7)客户端数据出去伪装成功
真机到客户机
目的地址转换
(1)设置将真机从服务端eth0进去的数据伪装成源数据为172.25.0.228