基于redhat7下的系统防火墙firewalld学习

本文介绍了Redhat7系统中的firewalld防火墙,包括其概念、动态管理特性以及如何配置与学习。通过实验环境演示了firewalld的配置、启动,展示了selinux对端口的控制,以及如何指定或移除IP通过特定域访问、添加服务和端口、设置规则、伪装和端口转发等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,firewalld

1.什么是防火墙?

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的边界上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
再redhat系统中防火墙服务有两个firewalld和iptables,在这里我们将介绍一下firewalld。

2.firewalld?

动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙
, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接
和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设
置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选
择。它还具备一个通向服务或者应用程序以直接增加防火墙规则
的接口
系统提供了图像化的配置工具 firewall-config 、 system-
config-firewall, 提供命令行客户端 firewall-cmd, 用于配
置 firewalld 永久性或非永久性运行时间的改变 : 它依次用
iptables 工具与执行数据包筛选的内核中的 Netfilter 通信

二,firewalld的配置与学习

1.实验环境:
在这里我们需要准备两台虚拟机,博主的两台虚拟机记为server和client.
server:两块网卡,在这里我们两个网卡的ip分别为eth0:172.25.254.97,eth1:1.1.1.97
client:一块网卡eth0,ip为1.1.1.117
真机的ip为172.25.254.77

在这里插入图片描述
在这里插入图片描述
2.firewaldd的配置和启动
在前面我们讲过防火墙服务有两个,那么我们这里先关闭iptables服务,确保两个防火墙互不影响

systemctl stop iptables.service			##关闭iptables服务
systemctl disable iptables.service		##设置iptables开机不启动
systemctl mask iptables.service			##锁定iptables服务
systemctl start firewalld				##启动firewalld服务
systemctl enable firewalld				##设置firewalld开机自启动

注意,这些设置全部在server上做
在这里插入图片描述
3.selinux对端口的控制
因为防火墙一个很重要的控制内外部网络的控制就是端口,那么,再linux系统中还有一个控制端口的服务就是我们学过的selinux
为了让大家了解selinux对其端口的控制我们用httpd服务来做示例

首先我们通过配置文件/etc/httpd/conf/httpd.conf修改端口为6666,然后重启httpd服务(当然,这里的selinux必须得是enforcing状态)

在这里插入图片描述
在这里插入图片描述
我们发现无法启动,这是因为再selinux中的系统默认的httpd的端口没有6666这个端口,那么我们可以手动添加这个端口

semanage port -l | grep http ##查看http的端口
semanage port -a -t http_port_t -p tcp 6666 ##添加端口6666
semanage port -l | grep http ##查看端口
systemctl restart httpd.service ##重启服务

在这里插入图片描述
我们发现只要添加上6666端口则可以重启httpd服务,实验结束后一切还原
在这里插入图片描述
在这里插入图片描述4.firewall所有域的查看,默认域等
在这里插入图片描述

firewall-cmd --state					##火墙状态
firewall-cmd --get-active-zones			##火墙生效的域
firewall-cmd --get-default-zone			##火墙当前处于的域
firewall-cmd --get-zones				##火墙的域
firewall-cmd --zone=public --list-all	##列出public域的所有信息
firewall-cmd --get-service				##火墙的服务
firewall-cmd --list-all-zones			##列出所有域
firewall-cmd --set-default-zone=dmz		##修改当前域为dmz

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

firewall-cmd --add-service=ftp			##添加ftp服务为默认域的开放服务,临时生效
firewall-cmd --permanent --add-service=http	##永久生效,不过得重新家在配置文件
firewall-cmd --reload					##刷新

在这里插入图片描述
5.指定或移除某个ip通过某个域访问系统以及重新加载配置火墙文件
在这里插入图片描述
我们现在的域为public,开放的服务只有ssh和dhcp,我们来看一下真机是否可以通过http访问
在这里插入图片描述
我们发现无法访问,那么我们可以设置真机走trusted域,即信任域

firewall-cmd --zone=trusted --add-source=172.25.254.77 ##让77走trusted域

在这里插入图片描述
在这里插入图片描述
我们发现加载真机走trusted域后真机则可以看到了,那么我们若不想让真机通过http访问server,则将其移除即可
在这里插入图片描述
注意:我们在这里的设置都是临时的,若要永久设置则:

firewall-cmd --permanent --zone=trusted --add-source=172.25.254.77	##永久添加77主机走trusted
firewall-cmd --permanent --zone=trusted --remove-source=172.25.254.77	##永久删除77主机走trusted
firewall-cmd --reload			##刷新

6.添加指定网卡到不同的域中

firewall-cmd --zone=trusted --add-interface=eth1 ##将eth1网络接口放到trusted中,eth0依旧在public中

在这里插入图片描述
我们在此时会发现添加补上,这是因为我们的eth1已经再别的域里了,所以用到的不能是add而是change
在这里插入图片描述
此时如果我们用真机去访问server
在这里插入图片描述
在这里插入图片描述
发现1.1.1.97网卡可以进行访问
7.添加某个服务或者端口为指定域的开放服务或端口
添加服务:

firewall-cmd --list-all --zone=public	##查看public的所有信息
firewall-cmd --add-service=dns		##接入dns服务
firewall-cmd --reload			##刷新,但不会终结已经开启的服务
firewall-cmd --complete-reload		##完全刷新,立即停掉刚才设置的服务

在这里插入图片描述
添加端口:

firewall-cmd --add-port=80/tcp

在这里插入图片描述
开放端口后,虽然我们没有开启http服务,但是真机依旧可以访问
在这里插入图片描述8.添加指定规则
首先我们将默认域设置为block
在这里插入图片描述
在这里插入图片描述

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.77 -j ACCEPT 只允许77主机访问ssh

在这里插入图片描述
在这里插入图片描述

移除上一条规则
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.77 -j ACCEPT
除77外都可以访问ssh
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 ! -s 172.25.254.77 -j ACCEPT

在这里插入图片描述
在这里插入图片描述

firewall-cmd --direct --get-all-rules ##查看所有特殊规则

在这里插入图片描述

注意:所有设置的规则里,除了规则设定过的主机,其他主机均走默认域

9.火墙伪装
在前面我们做过有关于虚拟机上网的设置,里面提到了火墙伪装,那么在这里我们再来具体的看一下火墙伪装

火墙伪装:确保两点:masquerade和ip_forward的值

masquerade必须为yes,ip_forward必须为1(即开启路由功能)
在这里我们通过个火墙伪装,将我们的eth0网卡虚拟为一个路由器

在这里插入图片描述
注意,我这里的ip_forward是关闭的,所以如图修改,若为一则就不用管了
在这里插入图片描述
测试:
将client的网管设置为服务器eth1的eth1ip:1.1.1.97,然后去ssh真机
在这里插入图片描述

真机用命令w -i查看登陆真机的主机有哪些

在这里插入图片描述
我们发现真机显示的连接着是97也就是server,而我们真正连接真机的却是client(1.1.1.117)

10.端口转发
我们在上个实验的基础上继续做端口转发,因为刚才是client连接的真机,而真机以为是server,那么当真机ssh连接server时就真的是server,那么我们可以通过端口转发,使真机连接server,最终到达的确是client

firewall-cmd --permanent -zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.117 ##端口转发

在这里插入图片描述
在这里插入图片描述
最终我们通过22端口使真机通过server连接上了client,端口转发成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值