Firewalld的图形化管理和命令管理 及firewalld地址转发和伪装

本文详细介绍了CentOS 7中FirewallD防火墙的原理及功能,包括动态管理网络区域、服务及接口的安全等级。涵盖FirewallD与传统防火墙的区别,图形界面与命令行管理技巧,以及高级功能如地址转发和地址伪装的配置方法。

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

1.什么是firewalld

防火墙(Firewalld),是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出
防火墙是系统的第一道防线,其作用是防止非法用户的进入
centos 7 中防火墙Firewalld是一个非常强大的功能,Firewalld提供了支持网络/防火墙区域(zone)定义网络连接以及接口安全等级的动态防火墙管理工具,它支持IPv4,IPv6防火墙设置以及以太网桥接,并拥有运行时配置和永久配置选项它也支持允许服务或者应用程序直接添加防火墙规则的接口
以前的system-config-frewall/lokkit防火墙模型是静态的,每次修改都要求防火墙完全重启
这个过程包括内核netfilter防火墙模块的卸载和新配置所需模块的装载等,而模块的卸载将会破坏状态防火墙和确立的连接
相反firewall deamon动态管理防火墙,不需要重启防火墙便可以更改,因此也就没有必要重新加在所有的内核防火墙模块了
不过要使用firewall deamon就要求防火墙的所有变更都要通过改守护进程来实现。以确保守护进程中的状态和内核里的防火墙是一致的
另外firewall deamon无法解析由 ip*tables和ebtables 命令行工具添加防火墙的规则

2.搭建实验环境
步骤一:reset并给desktop配置网络并且给两块虚拟网卡,ip1=172.25.254.115,ip2=1.1.1.115,server虚拟机一块网卡,ip=1.1.1.215,配置115的yum源,将desktop当作防火墙服务器。

步骤二 给desktop装上firewalld服务

yum search firewalld 查找
yum install firewalld.noarch

在这里插入图片描述

sysemctl stop iptables 关闭这个火墙,不影响firewalld实验效果
systemctl mask iptables 锁住服务
systemctl start firewalld 开启firewalld
systemctl enable firewalld 设置开启启动

在这里插入图片描述
3.firewalld中的区域管理
网络区域简介

通过网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流
例如,互联网是不可信的区域,而内部网络是高度信任的区域
网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化
该模型描述了主机所连接的整个网络环境的可信级别,并定义了连接的处理方式

初始化区域

阻塞区域block任何传入的网络数据包都会被阻止
工作区域work相信网络上的其他计算机,不会损害自己的计算机
家庭区域home相信网络上的其他计算机,不损害自己的计算机
公共区域public不相信网络上的任何计算机,只选择接受传入的网络连接
隔离区域 DMZ隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用,对于隔离区域,只有选择接受传入的网络连接
信任区域trusted所有网络连接都可以接受
丢弃区域drop任何传入的网络连接都被拒绝
内部区域internal信任网络上的其他计算机,不会损害自己的计算器,只有选择接受传入的网络连接
外部区域external不相信网络上的其他计算机,不会损害自己计算机,只有选择接受传入的网络连接

firewalld的默认区域是public

4.使用图形界面管理firewalld防火墙
firewall-config 输入这个命令,firewall图形化管理工具就显示出来了,可以在里面进行修改。
在这里插入图片描述
可以看到默认的域是public,public域里并没有允许http服务,所以理论上在真机输入172.25.254.115是访问不到的
在这里插入图片描述
现在将默认的域改成trusted,再次用真机访问172.25.254.115发现就可以访问到apache主页了
在这里插入图片描述
在这里插入图片描述
在真机里ssh 172.25.254.115,发现也可以成功,因为此时115默认的是trust域
允许ssh服务
在这里插入图片描述
现在将防火墙服务器端的默认域用图形方式改为block
在这里插入图片描述
再次用真机ssh 172.25.254.115发现不能连接
在这里插入图片描述
5.使用命令管理firewalld防火墙

firewallcmd --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-services 列出所有服务

在这里插入图片描述

firewall-cmd --list-all-zones 列出所有域

在这里插入图片描述

 firewall-cmd --set-defaults-zone=public 更改默认的域

在这里插入图片描述
火墙是内核上的插件

实验:
本来public域是不允许访问apache,现在做特殊指定,就可以让真机访问的到115火墙端的apache了

 yum install httpd 在这之前需要下载httpd服务并开启

在这里插入图片描述
此时真机在firefox上输入172.25.254.115是不能进入apache页面的
在这里插入图片描述

在dekstop上添加,让外来的主机走自己的trust域
firewall-cmd --add-sources=172.25.254.60 --zone=trusted
此时默认域仍是public,不允许http服务

在这里插入图片描述
在这里插入图片描述
此时再次用真机来在firefox中输入172.25.254.115可以进入apache主页
在这里插入图片描述

指定什么用户可以访问服务端的指定服务

dekstop两块网卡 ip分别为eth0=172.25.254.115 eth1=1.1.1.115 server一块网卡,ip=1.1.1.215

在这里插入图片描述

在server中ping1.1.1.115可以ping通,但用firefox访问1.1.1.111访问不到apache主页

在这里插入图片描述
server访问不到的原因是因为,desktop上的eth0和eth1均在public里面,不允许外来主机访问apache
在这里插入图片描述

firewall-cmd --remove-interface=eth1 --zone=public 把eth1从public域中移出

在这里插入图片描述

firewall-cmd --add-interface=eth1 --zone=trusted 将eth1加入trusted域

在这里插入图片描述

firewall-cmd --list-all --zone=trusted

在这里插入图片描述
在server端打开firefox,然后访问1.1.1.115,发现可以访问apache页面
在这里插入图片描述

firewall-cmd --change-interface=eth1 --zone=public 将eth1放回public中

在这里插入图片描述
在server中打开firefox,登陆1.1.1.115发现不能登陆

查看firewalld的函数库

cd /usr/lib/firewalld 
ls
cd /services 服务的配置文件
发现里面全是关于服务的xml文件

在这里插入图片描述

在里面我们并没有发现iscsi服务的文件,所以我们可以自己建立一个
cp http.xml iscsi.xml
vim iscsi.xml

在这里插入图片描述
编辑好之后重启火墙服务

firewall-cmd --get-services发现iscsi已经有了
firewall-cmd --add-service=iscsi
firewall-cmd --list-all

在这里插入图片描述
当永久添加iscsi服务时候,在/etc/firewalld/zones就会出现一个文件public.xml.old
在这里插入图片描述
打开发现是之前的配置
在这里插入图片描述
将现在的配置删掉,把之前的配置变成现在的配置,然后重新加载防火墙,发现又变成之前的配置了。
在这里插入图片描述
在这里插入图片描述

永久设置的两种刷新服务的方式

firewall-cmd --reload 重新加载生效,不会影响已存在的服务(已经连接的)
firewall-cmd --complete reload 重新加载,并且断开所有已经存在的服务(所有连接)

此时防火墙允许ssh服务
在这里插入图片描述
用真机ssh root@172.25.254.115 发现能连接上
在这里插入图片描述
现在在115端,永久取消允许ssh服务,然后reload防火墙
在这里插入图片描述
而此刻,在真机上仍没有断开连接,仍然可以创建文件
在这里插入图片描述
再次将ssh服务加入火墙,真机退出ssh,再次ssh root@172.25.254.115
在这里插入图片描述
在这里插入图片描述
此时在115端,再次永久remove ssh服务,然后firewall-cmd --complete-reload
在这里插入图片描述,此时在真机的shell中不能输入任何东西 ,再打开一个shell输入,killall -9 ssh 才可以恢复,然后退出ssh
在这里插入图片描述

如何对指定的主机进行管理
现在只想让172.25.254.60访问ssh服务,该怎么做
服务端有三种动作

accept接受客户端的请求
reject拒绝请求,并且给与回应
drop丢弃,不给回应,客户端会一直发送数据包,加大负载

实验
在desktop上

firewall-cmd --list-all 发现ssh服务开着呢

在这里插入图片描述
此时用真机和server都可以ssh上115
在这里插入图片描述
在这里插入图片描述
现在想指定只有真机可以ssh上,而server不可以,怎么做?

firewall-cmd --direct --add-rule ipv4 filter(规则表) INPUT(链) 1(写在第一条) -s(源) 172.25.254.60 -p(协议类型) tcp --dport(目的端口) 22 -j(什么动作) ACCEPT 添加只有真机60可以ssh上115

在这里插入图片描述

添加好后,firewall-cmd --reload 重新加载火墙

然后将desktop火墙中的的ssh服务remove
在这里插入图片描述此时server不能ssh desktop
在这里插入图片描述
而被指定的172.25.254.60可以
在这里插入图片描述

firewall-cmd --direct --get-all-rules 查看规则

在这里插入图片描述

firewall-cmd --direct -remove-rule ipv4 filter INPUT 1 -s 172.25.254.60 -p tcp --dport 22 -j ACCEPT 删除刚才添加的规则

在这里插入图片描述
firewall地址转发功能 (从外到内)
现在用真机60来ssh连接1.1.1.215 server,直接连接是不行的,因为两个ip不在同一网段上
注意:此实验需要在server端添加网关设置为1.1.1.115
在这里插入图片描述

在desktop端开启地址转发功能
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.215 添加地址转发

在这里插入图片描述

firewall-cmd --list-all查看是否添加成功

在这里插入图片描述添加成功。
测试
在真机上ssh desktop然后ip addr show 看一下ip
在这里插入图片描述
发现其实转到了1.1.1.215上,就是server上,实现了地址转发功能,如果去掉网关,就不能实现。

地址伪装 (从内到外)
想用server 1.1.1.215来ping通desktop172.25.254.115主机,因为两者不在同一网段所以不能ping通

首先desktop端,需要开启内核路由功能
sysctl -a | grep ip_forward  ip_forward需要=1

在这里插入图片描述

firewall-cmd --permanent --add-masquerade 开启防火墙地址伪装功能
然后将1.1.1.215的网关设置成为1.1.1.115即可实现地址伪装功能,使得1.1.1.215能够ping通172.25.254.115

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值