文章目录
一.防火墙介绍
问:什么是防火墙?
答:防火墙指的是一个由软件和硬件设备组合而成、在内网和外网之间、专用网与公共网之间的界面上构造的保护屏障。
防火墙是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问政策、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件(其中硬件防火墙用的很少只有国防部等地才用,因为它价格昂贵)。该计算机流入流出的所有网络通信均要经过此防火墙。软件防火墙单独使用软件系统来完成防火墙功能,将软件部署在系统主机上,其安全性较硬件防火墙差,同时占用系统资源,在一定程度上影响系统性能。其一般用于单机系统或是极少数的个人计算机,很少用于计算机网络中。
1.netfilter(网络过滤器)
netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。
2.iptables
3.iptables的管理方式:iptables或firewalld
防火墙原理图:
二.防火墙管理工具切换
在rhel8中默认使用的防火墙管理工具是firewalld
1.firewalld切换到iptables
dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl enable --now iptables
2.iptales切换到fiewalld
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables(冻结服务,无法用start命令打开,可用unmask打开)
systemctl enable --now firewalld
三. iptables 的使用
/etc/sysconfig/iptables #iptables 策略记录文件
永久保存策略:
iptales-save > /etc/sysconfig/iptables或service iptables save
四.防火墙默认策略
1、默认策略中的5条链
图示:
input | 输入 |
output | 输出 |
forward | 转发 |
postrouting | 路由之后 |
prerouting | 路由之前 |
2、默认策略中的的3张表
filter | 记录经过本机内核的数据(有三条链:input output forward) |
nat | 记录不经过内核的数据(四条链:postrouting prerouting inputoutput) |
mangle | 当filter和nat表不够用时使用(五条链:input output forward postrouting prerouting,) |
3、iptables命令的使用
iptables | |
---|---|
-t | 指定表名称 |
-n | 不做解析,显示主机IP而不是名字 |
-L | 查看 |
-A | 添加策略 |
-p | 协议 |
- -dport | 目的地端口 |
-s | 来源 |
-j | 动作 |
-j 的动作有以下五种 | |
ACCEPT | 允许 |
DROP | 丢弃 |
REJECT | 拒绝 |
SNAT | 源地址转换 |
DNAT | 目的地地址转换 |
-N | 新建链 |
-E | 更改链名称 |
-X | 删除链 |
-D | 删除规则 |
-I | 插入规则 |
-R | 更改规则 |
-P | 更改默认规则 |
数据包状态 | |
---|---|
RELATED | 建立过连接的 |
ESTABLISHED | 正在连接的 |
NEW | 新的 |
由于每一个经过或者访问我的主机的数据包都需要经过防火墙策略,企业中的防火墙策略差不多有成千上万条,如果匹配的策略在第一个,那就非常节省时间,但如果恰巧在最后一个,那么每次在传输该数据包时,都会有非常高的延迟,为了减小延迟,我们可以对数据包的状态进行追踪,然后只检测新的数据包,已经建立的数据包和正在建立的数据包直接让其通过即可
不允许别的主机访问我这台主机的其他服务,只允许访问DNS(53)和apache(80 443)服务
规范写法:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许已经建立过连接的和正在建立连接的,-m表示动作
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
#允许访问apache服务的端口
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
允许访问dns的主机
service iptables save
注意:一些别的命令写法
iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT
#除192.168.0.109主机不能进行ssh连接外,别的主机都可以进行ssh连接
ptables -A INPUT -m state --state NEW -j REJECT
nat表中的dnat和snat
snat
iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.20
dnat
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
1、永久保存更改以后即使重启iptables服务也无法改变策略,所以我们每次在改变服务时都记得要永久保存,负责重启iptables服务后编写的策略就会消失
iptabes命令的使用举例:
默认修改的是filter表(要修改别的表需要使用-t参数)
1、拒绝所有的数据包
结果:
删除该策略时使用命令:iptables -D INPUT 1
2、
第一条策略:拒绝所有的主机
第二条策略:允许192.168.0.109主机
结果:
第一条策略:允许192.168.0.109主机
第二条策略:拒绝所有的主机
注意:使用-I参数时默认插入第一条,可以在-I后面跟数字表示插入的地方
结果:
策略所写的顺序不同,产生的结果不同。
注意:
在防火墙策略执行的过程中,是从上到下依次执行的,当读取到的策略和现在的资源匹配时,就使用该策略,后面即使再有匹配的,也不会继续往下再读取
3、
4、
5、如果策略中没有一条策略和当前情况匹配,那么按默认策略执行,默认策略后面只能跟ACCEPT参数和DROP参数,不能跟REJECT
6、
7、
结束!!!