1.火墙介绍
- netfilter:真正的防火墙,位于内核空间。
- iptables:它其实不是真正的防火墙,可以将其理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”中,这个安全框架才是真正的防火墙,这个框架的名字就是netfilter。
- iptables|firewalld(两个工具)
2.火墙管理工具切换
- 在rhel8中默认使用的是
firewalld
- firewalld----->iptables
dnf install iptables-services -y
安装iptables服务systemctl stop firewalld
停止firewalldsystemctl disable firewalld
开机也不启动firewalldsystemctl mask firewalld
冻结firewalldsystemctl enable --now iptables
打开iptables
- iptales -------> fiewalld
systemctl stop iptables
停止iptablessystemctl disable iptables
开机也不启动iptablessystemctl mask iptables
冻结iptablessystemctl enable --now firewalld
打开firewalld
3.iptables 的使用
-
/etc/sysconfig/iptables
iptables 策略记录文件
-
永久保存策略
-
iptales-save > /etc/sysconfig/iptables
-
service iptables save
-
-这两种方法都是更改
/etc/sysconfig/iptables
这个文件 -
如果不改文件,你对火墙进行操作之后,restart,它又会恢复原样
4.火墙默认策略
- 默认策略中的5条链
input | 输入 |
---|---|
output | 输出 |
forward | 转发 |
postrouting | 路由之后 |
prerouting | 路由之后 |
- 默认的3张表
filter | 经过本机内核的数据(input output forward) |
---|---|
nat | 不经过内核的数据(postrouting,prerouting,input,output) |
mangle | 当filter和nat表不够用时使用(input, output ,forward, postrouting,prerouting,) |
5.iptables命令
- iptables
参数 | 作用 |
---|---|
-t | 指定表名称 |
-n | 不做解析 |
-L | 查看 |
-A | 添加策略 |
-p | 协议 |
–dport | 目的地端口 |
-s | 来源 |
-j | 动作 |
-j ACCEPT | 允许 |
-j DROP | 丢弃 |
-j REJECT | 拒绝 |
-j SNAT | 源地址转换 |
-j DNAT | 目的地地址转换 |
-N | 新建链 |
-E | 更改链名称 |
-X | 删除链 |
-D | 删除规则 |
-I | 插入规则 |
-R | 更改规则 |
-P | 更改默认规则 |
- iptables是按规则一条一条执行的,遇到匹配的规则时,就不再继续执行下一条了,所以要想让其执行第二条规则,应该将其插入到第一条中
- 例子:
- 数据包状态:
- RELATED 建立过连接的
- ESTABLISHED 正在连接的
- NEW 新的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
##允许已经认证过的
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
##允许回环
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
##允许 80 443 53 端口访问
iptables -A INPUT -m state --state NEW ! -s 192.168.1.15 -p tcp --dport 22 -j ACCEPT
##允许除了192.168.1.15之外的主机通过22端口访问
iptables -A INPUT -m state --state NEW -j REJECT
service iptables save
- 如下图设置也可以虽然也可以通过之前的方法设置,但是会大大降低火墙的效率
- 实验准备:VMware下一台双网卡主机,两台单网卡主机
- 在本机设置双网卡,ip分别为192.168.1.33和172.25.254.33
- 一台单网卡主机ip为172.25.254.20,网关设置为172.25.254.33
- 一台单网卡主机ip是192.168.1.15(作为测试主机)
- 保证双网卡主机的内核路由功能是开启的(双网卡主机充当路由)
- nat表中的dnat snat
- SNAT
iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.1.33
##所有从ens160出去的所有数据都伪装成192.168.1.33这个ip
- 这样做,可以使172.25.254.20访问到192.168.1.15
- DNAT
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
##所有从ens160进来的数据都伪装成172.25.254.33这个ip
- 这样做,可以使192.168.1.15访问到172.25.254.20