redhat Firewalld 防火墙

本文介绍了RHEL7中Firewalld防火墙的特点及其与iptables的不同之处,包括动态规则修改、人性化的使用方式及区域(zone)的概念,并详细讲解了Firewalld的基本配置与高级用法。

在rhel7中有两种防火墙,与iptables不同的是firewalld防火墙
比起iptables来firewalld有两个好处
1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
但是firewalld支持的服务得自己一个一个去配置

在firewalld中也有zone的这个概念来提供一些默认的配置服务

  • trusted 可以接受所有的服务
  • home 用于内网,仅接受ssh,mdns,ip-client,samba-client.dhcpv6-client服务
  • work 适用于工作区,仅接受ssh,ip-client或dhcpv6-client 服务
  • public 试用于公网,仅接受ssh与dhcpc6-client服务连接(是firewalld的默认)
  • external 出去的ipv4网络连接通过此去区域伪装和转发,仅接受ssh服务
  • block 拒绝所有的服务

firewalld的基本使用

首先我们需要关闭iptables服务,以免引起冲突,然后确保firewalld处于开启的状态

systemctl stop iptables
systemctl mask iptables.service 
systemctl status firewalld
systemctl enable firewalld

这里写图片描述
然后对于firewalld的操作我们可以使用
firewall-cmd命令来进行操作firewall防火墙

firewall-cmd --state #查看防火墙当前状态

这里写图片描述

firewall-cmd --get-active-zones #查看当前活动的区域
firewall-cmd --get-zones        #查看所有可用的zones
 firewall-cmd --zone=public --list-all #列出指定域的所有设置

这里写图片描述

这里写图片描述

firewalld的基本配置

我们可以首先查看一下默认的区域是什么

firewall-cmd --get-default-zone 

如果是不适合的区域可以进行修改,来适应你所需要的服务

firewall-cmd --set-default-zone=trusted  #修改区域为你所指定的区域
例:指定为trusted 
加上 --permanent 为永久设定
--zone          指定修改的区域
--add-interface=   增加网络接口
--remove-interface= 删去接口
如果需要增加删除服务只需要把 interface改成service就可以了
然后写上需要的服务
--add-source='IP地址'
增加指定区域中的网路地址
删除的话与之前类似

关于firewalld的刷新

firewall-cmd --reload
firewall-cmd --complete-reload

两种刷新的方法的区别在于
complete方法会直接断开所有当前正在进行的连接,而reload不会,比如正在进行ssh远程连接主机,如果修改了不允许ssh,使用complete此时ssh的连接将马上中断。

Direct Rules进行firewalld的访问控制

firewall-cmd命令中,–direct选项可以在运行时增加或者移除链,这种方法比较适合于服务或者程序在运行时间内增加特定的防火墙规则。
直接方式添加的规则优先。
这种方式的缺点在于,很容易无意间导致防火墙被入侵。
大致的添加删除规则与之前的iptables类似

firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT #添加
firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT #删除
firewall-cmd --direct --get-all-rules #列出所有的规则

这里写图片描述

firewall的转发与伪装

端口的转发

firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.120

通过22端口转发至172.25.254.120主机上
测试时,使用ssh访问自己的主机IP时 会转移到172.25.254.120主机之上

这里写图片描述

伪装

 firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=172.25.254.120 masquerade'

当然如果需要开启伪装服务,需要设置masquerade为yes

 firewall-cmd --add-masquerade

这里写图片描述

<think>嗯,用户问的是在RedHat 7.9上配置防火墙的教程和使用firewall-cmd的方法。我需要根据提供的引用内容来组织答案。首先,要确认用户的需求是配置防火墙,可能包括开启关闭防火墙、放行端口、设置服务等等。 首先,我得检查引用里的信息。引用[1]提到了基本的防火墙操作,比如启用或禁用防火墙,放行SSH服务。引用[2]展示了如何开启80端口,使用--add-port参数。引用[3]和[4]则涉及限制SSH访问的IP段,使用富规则。用户可能需要知道如何允许特定服务或端口,以及如何限制访问源。 接下来,我需要分步骤来回答。首先可能是基础状态管理,比如启动、停止防火墙。然后配置常用服务,比如SSH或HTTP。接着是端口管理,放行或阻止特定端口。之后可能需要更高级的设置,比如IP白名单,这部分用富规则来处理。最后,确保用户知道如何保存配置,因为firewall-cmd的--permanent参数很重要,或者用--runtime-to-permanent命令。 还要注意是否需要提到区域(zone)的概念,但引用中用户可能没有提到,所以可能暂时不需要深入。但根据引用[2],使用--zone=public,可能需要简要说明。不过用户的问题可能更关注基本操作,所以保持步骤简单。 然后生成相关问题。用户可能接下来会问如何检查开放的端口,或者如何移除规则,或者如何处理更复杂的网络配置。需要根据引用中的内容来设计相关问题,比如性能分析可能不适用,但优化方法和应用场景可以对应到防火墙规则的管理和实际使用案例。 最后确保所有的命令都正确,符合引用中的示例,比如--add-service=ssh,--add-port=80/tcp,以及富规则的写法。注意用户可能对永久生效的选项不太清楚,所以每个命令都要加上--permanent,并提醒reload生效。</think>### RedHat 7.9 防火墙配置教程(基于firewall-cmd) #### 一、基础防火墙状态管理 1. **启用/禁用防火墙** - 永久启用防火墙: $$systemctl\ enable\ firewalld.service$$ - 永久禁用防火墙: $$systemctl\ disable\ firewalld.service$$ - 启动/停止防火墙服务: $$systemctl\ start\ firewalld.service$$ $$systemctl\ stop\ firewalld.service$$ 操作后需重新加载配置:$$firewall-cmd\ --reload$$[^1] #### 二、配置常用服务与端口 1. **放行SSH服务** 默认SSH端口(22)放行命令: $$firewall-cmd\ --permanent\ --add-service=ssh$$ 若修改了SSH端口(如51022),需单独放行: $$firewall-cmd\ --permanent\ --add-port=51022/tcp$$[^1][^4] 2. **放行HTTP/HTTPS服务** - 放行80端口: $$firewall-cmd\ --zone=public\ --add-port=80/tcp\ --permanent$$ - 放行443端口: $$firewall-cmd\ --zone=public\ --add-port=443/tcp\ --permanent$$[^2] #### 三、IP白名单配置(高级规则) 通过富规则限制SSH仅允许特定IP段访问(例如192.168.1.0/24和118.123.31.41): ```bash firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="51022" accept' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="118.123.31.41" port protocol="tcp" port="51022" accept' firewall-cmd --permanent --remove-port=51022/tcp # 移除原开放规则 firewall-cmd --reload ```[^4] #### 四、配置保存与验证 1. **保存运行时配置到永久规则**: $$firewall-cmd\ --runtime-to-permanent$$[^3] 2. **查看当前生效规则**: $$firewall-cmd\ --list-all$$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值