1.什么是防火墙
防火墙是指设置在不同网络,或网络安全域之间的一系列部件的组合。它可通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。
防火墙(Firewall),是一种硬体设备或软体系统,主要架设在内部网路和外部网路间,为了防止外界恶意程式对内部系统的破坏,或是阻止内部重要资讯向外流出,有双向监督的功能。藉由防火墙管理员的设定,可以弹性的调整安全性的等级。
2.防火墙的介绍
防火墙有netfilter,iptables;
netfilter是内核上的一个插件,当有数据包到达内核时,内核首先查看netfilter表格中的信息,来确定是否接受此数据包。
netfilter火墙策略的更新来源于iptables策略,更改iptables策略的工具有:iptables和fillwalld
3.火墙管理工具的切换
【注】:在rhel8中默认使用的是firewalld
1) firewalld - - - - - >iptables的切换
dnf install iptables ##首先安装iptables
systemctl stop firewalld ##关闭firewalld
systemctl disable firewalld ##设置开机不启动
systemctl mask firewalld ##封锁firewalld
systemctl enable --now iptables ##开启iptables并设置为开机启动
systemctl status iptables ##查看iptables状态
2)iptables- - - - ->firewalld的切换
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld
systemctl status firewalld
4.iptables的使用
vim /etc/sysconfig/iptables ##iptables策略记录文件
永久保存策略:
方法一:service iptables save
方法二:iptables-save > /etc/sysconfig/iptables
查看默认的火墙策略
用 -F 刷新火墙策略后,重启服务后查看火墙策略还是默认的
用方法一或二来永久保存策略
5.火墙默认策略
默认策略中的五条链:
input | 输入 |
---|---|
output | 输出 |
forward | 转发 |
postrouting | 路由之后 |
prerouting | 路由之前 |
默认的三张表
filter | 经过本机内核的数据(包含的链有:input、output、forward |
---|---|
net | 不经过本机内核的数据(postrouting、prerouting、input、output |
mangle | 当filter和net表不够用时使用(input、output、forward、postrouting、prerouting) |
iptables的命令
-t | 指定表名称 |
---|---|
-n | 不做解析 |
-L | 查看 |
-A | 添加策略 |
-p | 协议 |
- -dport | 目的地端口 |
-s | 来源 |
-j | 动作 |
ACCEPT | 允许 |
DROP | 丢弃 |
REJECT | 拒绝 |
SNAT | 源地址转换 |
DNAT | 目的地地址转换 |
-N | 新建链 |
-E | 更改链名称 |
-X | 删除链 |
-D | 删除规则\ |
-I | 插入规则 |
-R | 更改规则 |
-P | 更改默认规则 |
-t ##指定表名
-L ##查看
-n ##不做解析
此时其他主机还能和这台主机通信:
-A ##添加策略
-j ##动作
REJECT ##拒绝
此时此主机拒绝任何其他主机的所有端口
-D ##删除策略
此时其他主机又能和此台主机通信!!
DROP ##丢弃
此时其他主机和这台主机通信时,不会被此台主机拒绝,但也收不到信息
-s ##数据来源
ACCEPT ##允许
上面命令在INPUT链中添加192.168.43.117用户被允许,但其还是被阻止了,因为在火墙策略中,是从上往下依次读取,当只有读到和他匹配的策略他就直接走掉了,不会从上往下依次读完。
-i ##插入
此时192.168.43.117用户可以和此主机通信
-p ##协议
- -dport ##目的地端口
此时其他主机的22端口才能和此台主机连接
-R ##更改
上面将端口该为80,现在其他主机的22端口不能访问,80端口可以访问这台主机
-P ##更改默认规则
默认是ACCEPT
上面的策略允许所有主机的所有端口通过
此时所有主机的所有端口访问都成DROP状态。
-N ##新建链
-E ##更改链
-X 删除链
数据包状态
为了解决数据包因为策略检测,而发生巨大的延迟问题,我们需要将数据包的状态记录下来
上述当已经访问过的或者正在访问的,可以直接让他通过,如果是新的访问回环接口,80,443,53端口,也让他通过。倒数第二条命令是除了192.168.43.117用户访问22端口不能通过,其他用户都可以通过。
【综上】:当在设定火墙时要将火墙的状态加上去,不然会大大影响数据传输的性能
nat表中的dnat、snat
snat(源地址转换):
数据传送,首先准备一台双网卡主机
nmcli connection add westos1 ifname ens224 type ethernet ip4 172.25.254.20/24 ##设定IP地址
设定客户主机ip为172.25.254.10,网关为172.25.254.1
现在客户主机能连接172.25.254.20这个ip,但是不能连接192.168.43.63这个ip
检查192网络的内核路由是否打开:
发现是开着的,现在编写火墙策略文件
在客户端测试发现,此时能够Ping通192.168.43网段的外网
dnat(目的地址转换):
iptables -t nat -A PREROUTEING -i ens160 -j DNAT --to-dest 172.25.254.30
##从ens160进入的数据均将他仍给172.25.258.30 ,这就是目的地址转换