Linux中的火墙服务及优化
一、火墙介绍
网络防火墙是一种用来加强网络之间访问控制的特殊网络互联设备;计算机流入流出的所有网络通信均要经过此防火墙;防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行;防火墙可以关闭不使用的端口,而且它还能禁止特定端口的流出通信,封锁木马;最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信
本质上防火墙是一组规则:当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过

Linux系统中主要使用firewalld和iptables这两种软件来管理防火墙规则,两者本身并不具备防火墙的功能,只不过是火墙规则管理工具iptables的上层软件,都是需要通过内核的netfilter来实现相关功能,两者的作用都是用于维护火墙规则,而真正使用火墙规则干活的是内核的数据包过滤器netfilter,只不过两者的结构和使用方法不同罢了
firewalld和iptables的区别:
1、firewalld可以动态修改单条规则,而且不需要像iptables那样在修改了规则之后必须得全部刷新才可以生效
2、firewalld在使用上比iptables更具人性化,即使不明白“三张表五条链”和TCP/IP协议也可以实现大部分功能
firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝;而iptables里默认是每个服务是允许,需要拒绝的才去限制
二、火墙管理软件的切换
在RHEL8中默认使用的火墙管理软件是 firewalld
firewalld————>iptables
安装iptables服务:dnf install iptables-service

iptables————>firewalld
安装firewalld服务:dnf install firewalld(RHEL8默认已安装)

三、火墙默认策略-三表五链
五链
| 链 | 解释 |
|---|---|
| input | 输入 |
| output | 输出 |
| forward | 转发 |
| prerouting | 路由前 |
| postrouting | 路由后 |
三表
| 表 | 解释 |
|---|---|
| filter | 经过本机内核的所有数据(input output forward) |
| nat | 不经过内核的数据(input output prerouting postrouting) |
| mangle | 做补充说明;当以上俩表不够用时使用(input output forward prerouting postrouting) |
原理图:

四、firewalld的使用
1、启动firewalld服务
火墙图形插件:

可以通过图形方式设定火墙
##可以在Configuration中选择使用时生效或者永久生效,当配置永久生效时需要在Options下Relaod Firewalld
2、关于firewalld的域


firewalld默认使用的域是public

3、firewall的设定原理及数据存储
/etc/firewalld ##火墙配置目录
##在火墙中添加服务时,使此服务生效的原理是在此目录下的zones目录中的xml文件中添加了服务名称从而使服务生效

##火墙reload步骤也是使此文件的更改内容加载至火墙信息中(使内存进行读取)
/usr/lib/firewalld ##火墙数据模块目录
##此目录下的services目录下记录了集成好的所有服务的xml文件
xml ##可扩展标记语言,有严格缩进
html ##超文本标记语言,相对xml此语法较随意
对于一个接收到的请求具体使用哪个zone,firewalld通过三种方式来判断,按优先级依次排序为:
source ##请求来源地址
interface ##接收到请求的网络接口即网卡
/etc/firewalld/firewalld.conf中配置的默认zone
4、firewalld管理命令
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看火墙中生效的域
firewall-cmd --get-default-zone ##查看火墙默认域
firewall-cmd --list-all ##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ## 查看指定域中的火墙策略
firewall-cmd --set-default-zone=trusted ##设定默认域
firewall-cmd --get-services ##查看所有可以设定的服务
firewall-cmd --reload ##刷新
firewall-cmd --permanent --add-service=http ##添加服务
firewall-cmd --permanent --remove-service=http ##移除服务
firewall-cmd --permanent --add-source=172.25.254.70/24 --zone=block
##指定数据来源访问指定域
firewall-cmd --permanent --remove-source=172.25.254.70/24 --zone=block
##移除指定域中的数据来源
firewall-cmd --permanent --add-interface=ens3 --zone=block
##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens3 --zone=block
##更改指定网络接口到指定域
firewall-cmd --permanent --remove-interface=ens3 --zone=block
##删除指定域的网络接口







5、firewalld的高级规则
firewalld在使用时对于某一个用户的某一项权限的设置需要用到其高级规则
查看高级规则:firewall-cmd --direct --get-all-rules
高级规则的设定:
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.90 -p tcp --deport 80 -j REJECT
##添加filter表INPUT链第一条高级火墙规则:除了90来源地址的请求访问80端口时都将被拒绝
设定高级规则时需要保证对应端口的服务已存在于火墙规则允许的服务中
设置完高级规则后只有172.25.254.90地址能够通过80端口访问Apache
6、firewalld中的NAT地址转换
实验环境:
双网卡虚拟机westosa:IP1=172.25.254.80 IP2=1.1.1.80
单网卡虚拟机westosb:IP=1.1.1.90 GATEWAY=1.1.1.80
保证真实主机(172.25.254.70)可以和westosa通信;westoa和westosb可以互相通信;真实主机和westob不能通信
SNAT(源地址转换)

打开双网卡主机westosa的火墙地址伪装功能:firewall-cmd --add-masquerade

打开内核路由:
sysctl -a | grep ip_forward

net.ipv4.ip_forward=1 ##路由功能打开
net.ipv4.ip_forward=0 ——>> vim /etc/sysctl.conf 添加内容 net.ipv4.ip_forward=1 ——>> sysctl -p 使修改生效
以上操作完成后,westosb和真实主机即可以通信


DNAT(目标地址转换)
未做目标地址转换之前使用真实主机连接westosa查看网卡IP==目标确为westosa

在westosa中设置目标地址转换

以上操作完成后使用真实主机连接westoa,查看网卡IP==连接主机变为westosb


五、iptables的使用
1、启用iptables服务

2、iptables的相关文件
/etc/sysconfig/iptables ##iptables服务的火墙策略记录文件
火墙策略的永久保存:
iptables-save > /etc/sysconfig/iptables

service iptables save


3、iptables管理命令
iptables
iptables命令的相关参数:
-t ##指定表名称
-n ##不做解析
-L ##查看


-A ##添加策略
-F ##刷新策略,临时清空表的信息
-p ##指定协议
--dport ##目的地端口
-s ##来源
-j ##动作
ACCEPT ##允许
DROP ##丢弃
REJECT ##拒绝
SNAT ##源地址转换
DNAT ##目的地地址转换
-N ##新建链
-E ##更改链名称
-X ##删除链
-D ##删除规则
-I ##插入规则
-R ##更改规则
-P ##更改默认规则



需要注意的是:
火墙策略的读取是从上至下的,当匹配到适合自己的状态时,便不会继续向下匹配;比如假设ACCEPT所有来源之后在添加策略REJECT来源172.25.254.70时,70来源仍然可以访问
使用参数-I插入策略时,后面可加数字表示插入序号,如不加数字默认插入在第一条策略位置
对于INPUT链的默认规则更改时不能改为REJECT
4、iptables中的数据包状态
iptables的状态跟踪连接有4种:NEW、ESTABLISHED、RELATED、INVALID;除了从本机出去的数据包由NAT表的OUTPUT链处理外,其它所有的状态跟踪都在NAT表中的PREROUTING链中处理
NEW ##说明这个数据包是收到的第一个数据包
ESTABLISHED ##只要发送并接到应答,一个数据表的状态就从NEW变为ESTABLISHED,并且该状态会继续匹配这个连接后继数据包
RELATED ##当一个数据包的状态处于ESTABLISHED状态的连接有关系的时候,就会被认为是RELATED,也就是说一个连接想要是RELATED状态,首先要有一个ESTABLISHED的连接
INVALID ##不能被识别属于哪个连接状态或没有任何关系的状态,一般这种数据包都是被拒绝的
5、iptables中火墙策略的优化
iptables可以通过根据数据包的状态设定火墙策略从而提高火墙数据传输速率,达到优化火墙策略的目的


6、nat表中的地址转换
实验环境同firewalld;不过可能需要iptables -F,以免影响效果查看
SNAT
SNAT源地址转换是在路由之后POSTROUTING链中进行的,即我们需要在nat表的POSTROUTING链中添加策略;开启内核路由(同firewalld设置方法一样)

以上操作完成后westosb中可以ping通真实主机,也可以连接真实主机


真实主机中显示的连接信息为

DNAT
DNAT目的地地址转换是在路由之后PREROUTING链中进行的,即我们需要在nat表的PREROUTING链中添加策略

以上操作完成后使用真机连接虚拟机westosa时目的地直接跳转至westosb主机

westosb的登陆信息为

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
