1.iptables火墙服务
1.1 iptables服务的启动
yum list iptables-services
systemctl stop firewald
systemctl distable firewalld
systemctl mask firewalld
systemctl start iptables.service
systemctl enable iptables.service
1.2 iptables 常用参数
man iptables
查看各种参数含义
参数 | 含义 |
---|---|
-t | 指定表格 |
-L | 列出所有规则 |
-nL | 列出所有规则带解析 |
-A | 添加规则 不能指定添加位置 |
-D | 删除规则 |
-C | 检测 一般不使用 |
-I | 指定位置插入规则 |
-R | 指定策略修改 |
-S | 列出策略 更为详细 |
-P | 更改链条的默认动作 只有DROP |
-N | 添加新链 |
-E | 链重命名 |
-X | 删除链 |
-F | 刷新iptables |
-Z | 清空iptables数据 |
命令添加的规则如果不保存默认都是临时的,再次刷新或重启服务规则会被清理
保存的两种方式
(1)srvice iptables save
(2)iptables-save > /etc/sysconfig/iptables
将策略保存文件内容倒入策略文件策略算是永久保存
清空策略:
对保存了的策略需要到文件中删除
> iptables-save
iptables-save > /etc/sysconfig/iptables
1.3iptables服务策略
(1)iptables给特定ip指定特定服务:
1) iptables -t filter -A INPUT -p tcp --dport 22 -s 172.25.254.101 -j REJECT
2)! 表示除…之外…
iptables -A INPUT ! -s 172.25.254.1 -p tcp --dport 22 -j REJECT ## 除1号主机外拒绝其他主机连接ssh服务
(2)iptables 添加火墙服务并检测标签提高效率(以开放squid代理服务、ssh服务、DNS服务)
由于系统读取策略都是在表中从上置下依次读取,且读取到符合要求的策略就不再向下读取;NEW标签的主机检测过后标签就变为ESTABLSHED或RELAED 下次连接就不用检测,提高效率
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 对ESTABLSHED和RELAED标签的ip直接通过检测
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT 对NEW标签内部接口的ip也直接通过检测
iptables -A INPUT -m state --state NEW -p tcp --dport 3128 -j ACCEPT NEW标签ip连接squid服务 检测3128端口
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 检测22端口
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT 检测53端口
iptables -A INPUT -j REJECT 其余的服务连接都拒绝不用检测
1.4 iptables火墙的伪装与端口转发功能
实验准备:
服务端:双网卡,eth0ip为:172.25.254.201 ;eth1ip为: 192.168.0.201
客户端: 单网卡 eth0ip为:192.168.0.101 GATEWAY:192.168.0.201
必须开启内核路由功能,否则SNAT实验将失败!
(1)iptables 火墙的伪装——路由之后SNAT源地址转换
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.201 (ip为所写网卡对应ip)
##在nat表中的路由之后链POSTOUTING中添加规则:对通过eth0网卡出去的ip做源地址转换 ip转换为172.25.254.201
iptables-save > /etc/sysconfig/iptables
(2)iptables 连接端口的转发——路由之前 DNAT目的地址的转换(ssh服务连接为例)
DNAT实验前提为:SNAT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest x.x.x.x:22
##在nat表中的路由之前链PREROUTING中添加规则:对连接eth0网卡ip的主机做目的端口转发,目的主机为x.x.x.x 只有通过设定的网卡进入服务端的客户机才能发生跳转!!!
实验现象:规则中设定通过eth0进入服务端的主机会发生目的端口跳转,所以在客户端实验是不会发生跳转的,因为客户端是通过eth1连接的服务端,在ip为172网段的主机上实验,可以看到实验现象;如果将规则该为 -i eth1 ,则只有在客户端实验能发生跳转,并且不管客户端ssh连接172网段哪一主机都会发生跳转,因为客户端在连接除服务端之外的172网段主机时,首先会通过服务端的eth1进入服务端,只要通过eth1进入服务端都会发生DNAT跳转
目的端口转发必须开启火墙的伪装功能,否则会出现如下效果: