Day 39 防火墙技术Firewalld

2024-05-24 01:20

本文主要是介绍Day 39 防火墙技术Firewalld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一:Firewalld简介

​CentOS7中默认将原来的防火墙iptables升级为了firewalld,firewalld跟iptables比起来至少有两大好处;

​firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效

firewalld在使用上要比iptables人性化很多,即使不明白“四张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能

1.目录结构

firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),有两个存储位置

​ firewalld配置文件:

​ /etc/firewalld/

​ /usr/lib/firewalld/

​ firewalld规则配置文件:

​ /etc/firewalld/zones:规则配置文件

​ /usr/lib/firewalld/zones:规则模版配置文件,默认不生效,需要用时将该目录的配置文件模版复制到/etc/firewalld/zones

​ 使用规则

​ 当需要一个文件时firewalld会首先到第一个目录中去查找,如果可以找到,那么就直接使用,否则会继续到第二个目录中查找

​ 注意

​ 两个目录下的同名配置文件第一个目录内的生效

​ 第二个目录中存放的是firewalld给提供的通用配置文件,如果我们想修改配置, 那么可以copy一份到第一个目录中

​ 当然也可以直接修改第二个目录下的文件

2.相关命令

​ 查看服务状态

[root@xingdian~ ]# systemctl status firewalld
[root@xingdian~ ]# systemctl status -l  firewalld

​ 启动关闭服务

[root@xingdian~ ]# systemctl  start  firewalld
[root@xingdian~ ]# systemctl  stop  firewalld
[root@xingdian~ ]# systemctl reload firewalld
[root@xingdian~ ]# systemctl disable firewalld

二:Firewalld之Zone

​ firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他们都保存在“/usr/lib /firewalld/zones/”目录下;九个zone其实就是九种方案,而且起决定作用的其实是每个xml文件所包含的内容,而不是文件名,所以不需要对每种zone(每个文件名)的含义花费过多的精力,比如trusted这个zone会信任所有的数据包,也就是说所有数据包都会放行,但是public这个zone只会放行其中所配置的服务,其他的一律不予放行,其实我们如果将这两个文件中的内容互换一下他们的规则就换过来了,也就是public这个zone会放行所有的数据包

注意:

​ 生效的只有默认zone里面的规则

​ trusted.xml中zone的target,就是因为他设置为了ACCEPT,所以才会放行所有的数据包

​ 而 public.xml中的zone没有target属性,这样就会默认拒绝通过,所以public这个zone只有其中配置过的服务才可以通过

1.drop(丢弃)

​ 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接

2.block(限制)

​ 任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝

3.public(公共)

​ 在公共区域内使用,不相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接(默认拒绝)

4.external(外部)

​ 是为路由器启用了伪装功能的外部网。不信任来自网络的其他计算,不相信它们不会对您的计算机造成危害,只接收经过选择的连接

5.dmz(非军事区)

​ 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接

6.work(工作)

​ 用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接

7.home(家庭)

​ 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接

8.internal(内部)

​ 用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接

9.trusted(信任)

​ 可接受所有的网络连接

三:规则配置

1.方式

​ firewall-config(图形方式)

​ firewall-cmd(命令行方式)

​ 直接编辑xml文件

2.命令行方式
显示防火墙状态:
[root@xingdian~ ]# firewall-cmd --staterunning
列出当前有几个zone:
[root@xingdian~ ]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
取得当前活动的zones:    
[root@xingdian~ ]# firewall-cmd --get-active-zones publicinterfaces: ens33设置当前区域的接口:
[root@xingdian~ ]# firewall-cmd --get-zone-of-interface=enp03s      
临时修改网络接口(enp0s3)为内部区域(internal):
[root@xingdian~ ]#firewall-cmd --zone=internal --change-interface=enp03s
取得默认的zone:
[root@xingdian~ ]# firewall-cmd --get-default-zonepublic
设置默认zone:    
[root@xingdian~ ]# firewall-cmd --set-default-zone=public取得当前支持的service(跟当前服务器是否已经安装某服务无关):
[root@xingdian~ ]# firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server检查下一次重载后将激活的服务:
[root@xingdian~ ]# firewall-cmd --get-service --permanentRH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server    列出zone public 端口:
[root@xingdian~ ]# firewall-cmd --zone=public --list-ports    列出zone public当前设置:
[root@xingdian~ ]# firewall-cmd --zone=public --list-allpublic (default, active)interfaces: eno16777736sources: services: dhcpv6-client sshports: masquerade: no  伪装功能forward-ports: icmp-blocks: rich rules:增加zone public开放http service:
[root@xingdian~ ]# firewall-cmd --zone=public --add-service=httpsuccess
[root@xingdian~ ]# firewall-cmd --permanent --zone=internal --add-service=httpsuccess--permanent  永久生效
重新加载配置:
[root@xingdian~ ]# firewall-cmd --reloadsuccess
增加zone internal开放443/tcp协议端口:
[root@xingdian~ ]# firewall-cmd --zone=internal --add-port=443/tcpsuccess
删除zone public 中ssh服务
[root@xingdian~ ]# firewall-cmd --zone=public --remove-service=ssh
列出zone internal的所有service:
[root@xingdian~ ]# firewall-cmd --zone=internal --list-servicesdhcpv6-client ipp-client mdns samba-client ssh设置黑/白名单: (hosts.allow  hosts.deny)增加172.28.129.0/24网段到zone trusted(信任)
[root@xingdian~ ]# firewall-cmd --permanent --zone=trusted --add-source=172.28.129.0/24success
add-sourc
列出zone truste的白名单:
[root@xingdian~ ]# firewall-cmd --permanent --zone=trusted --list-sources172.28.129.0/24活动的zone:
[root@xingdian~ ]# firewall-cmd --get-active-zonespublicinterfaces: eno16777736添加zone truste后重新加载,然后查看--get-active-zones:
[root@xingdian~ ]# firewall-cmd --reload          success
[root@xingdian~ ]# firewall-cmd --get-active-zonespublicinterfaces: ens32 veth4103622trustedsources: 172.28.129.0/24列出zone drop所有规则:
[root@xingdian~ ]# firewall-cmd --zone=drop --list-alldropinterfaces: sources: services: ports: masquerade: noforward-ports: icmp-blocks: rich rules:添加172.28.13.0/24到zone drop:
[root@xingdian~ ]# firewall-cmd --permanent --zone=drop --add-source=172.28.13.0/24success添加后需要重新加载:
[root@xingdian~ ]# firewall-cmd --reloadsuccess[root@xingdian~ ]# firewall-cmd --zone=drop --list-alldropinterfaces: sources: 172.28.13.0/24services: ports: masquerade: noforward-ports: icmp-blocks: rich rules: [root@xingdian~ ]#firewall-cmd --reloadsuccess从zone drop中删除172.28.13.0/24:
[root@xingdian~ ]# firewall-cmd --permanent --zone=drop --remove-source=172.28.13.0/24success查看所有的zones规则:
[root@xingdian~ ]# firewall-cmd --list-all-zones案例:比如我当前的默认zone是public,需要开放80端口对外访问,则执行如下命令:
[root@xingdian~ ]# firewall-cmd --zone=public --permanent --add-port=80/tcpsuccess
[root@xingdian~ ]# firewall-cmd --reloadsuccess
3.修改配置文件
以public zone为例,对应的配置文件是/etc/firewalld/zones/public.xml,像我们刚刚添加80端口后,体现在public.xml 中的内容为:
[root@xingdian~ ]# cat public.xml<?xml version="1.0" encoding="utf-8"?><zone><short>Public</short><description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming      connections are accepted.</description><service name="dhcpv6-client"/><service name="ssh"/><port protocol="tcp" port="80"/><source address="10.9.25.0/24"></zone>
注意在修改配置文件后 --reload 或重启 firewall 服务。  

四:高级规则

1.Direct Rules概述

​ 通过firewall-cmd工具,可以使用 --direct选项在运行时间里增加和删除链。如果不熟悉iptables,使用直接接口非常危险,因为可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便于在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用

Direct OptionsThe direct options give a more direct access to the firewall. These optionsrequire user to know basic iptables concepts, i.e.  table(filter/mangle/nat/...), chain (INPUT/OUTPUT/FORWARD/...), commands(-A/-D/-I/...), parameters (-p/-s/-d/-j/...) and targets(ACCEPT/DROP/REJECT/...).Direct options should be used only as a last resort when it's not possible touse for example --add-service=service or --add-rich-rule='rule'.The first argument of each option has to be ipv4 or ipv6 or eb. With ipv4 itwill be for IPv4 (iptables(8)), with ipv6 for IPv6 (ip6tables(8)) and with ebfor ethernet bridges (ebtables(8)).[--permanent] --direct --get-all-chainsGet all chains added to all tables. This option concerns only chainspreviously added with --direct --add-chain.[--permanent] --direct --get-chains { ipv4 | ipv6 | eb } table

查看防火墙上设置的规则

[root@xingdian zones]# firewall-cmd --direct --get-all-rules

添加高级规则

[root@xingdian zones]#  firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.77 -j ACCEPT

注意:

​ 只允许172.25.254.77通过80端口访问主机位为110的http服务。因为访问的是主机位为110的http服务,需要主机位为110的内核同意开启http服务,需要在表filter中设置INPUT;-p 数据包类型;–dport 服务端口

删除防火墙上的规则

[root@xingdian zones]# firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.217 -j REJECT

注意:

​ 移除:不允许172.25.254.217通过22端口的访问ssh,连接172.25.254.110这条规则

2.端口转发

​ 端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。 如果配置好端口转发之后不能用,可以检查下面两个问题

​ 比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了

​ 其次检查是否允许伪装 IP,没允许的话要开启伪装 IP

案例

1. firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   
# 将80端口的流量转发至8080
2. firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1 
# 将80端口的流量转发至192.168.0.1
3. firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 
# 将80端口的流量转发至192.168.0.1的8080端口

开启IP伪装

查看:
[root@xingdian zones]# firewall-cmd --query-masquerade yes no
开启:
[root@xingdian zones]# firewall-cmd --add-masquerade
关闭:
[root@xingdian zones]# firewall-cmd --remove-masquerade

作用

​ 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去

​ 端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器

这篇关于Day 39 防火墙技术Firewalld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996968

相关文章

随想录 Day 69 并查集 107. 寻找存在的路径

随想录 Day 69 并查集 107. 寻找存在的路径 理论基础 int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好vector<int> father = vector<int> (n, 0); // C++里的一种数组结构// 并查集初始化void init() {for (int i = 0; i < n; ++i) {father[i] = i;}

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及,智能家居行业正迎来新的发展机遇,众多厂商纷纷投身于 Matter 产品的研发与验证。然而,开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。  乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行业洞察力,推出了全面的 Matter 解决方案,包含基于乐鑫 SoC 的 Matter 硬件平台、基于开源 ESP-Matter SDK 的一

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定

AI与音乐:当技术与艺术发生冲突

AI在创造还是毁掉音乐? 在科技日新月异的今天,人工智能(AI)已经渗透到了我们生活的方方面面,音乐领域也不例外。然而,尽管AI为音乐创作带来了前所未有的便利,我却深感其正在毁掉音乐的本质。 首先,AI的介入使得音乐创作过程变得过于机械化。传统的音乐创作往往需要音乐家们经过长时间的思考、尝试和修改,最终才能创作出触动人心的作品。这一过程不仅体现了音乐家的才华和技艺,更蕴含了他们对生活的感悟和对

IPD推行成功的核心要素(十一)技术规划与平台规划促进公司战略成功

随着外部大环境的影响,各企业仅有良好的愿望是不够的。预测并顺应新兴市场和技术的变化,变危机为转机,不断推出强大的产品才是一个公司持续繁荣的根本保障。而高效的产品开发往往是基于某些关键技术,针对市场推出的一个或几个产品系列,这些产品系列通常共用一些产品平台,共用一种或者几种关键技术。当一家企业进入了平稳发展期,已经建立了较为完善的管理制度和产品开发流程,但是依然认为竞争对手是那样强大,那样不可战胜。

云原生容器技术入门:Docker、K8s技术的基本原理和用途

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、容器技术概述 1、什么是容器技术 2、容器技术的历史与发展 3、容器技术与虚拟机的比较 4、容器技术在云原生中的作用 二、Docker基础 1、Docker简介 2、Docker架构 3、Docker与工作原理 三、Kubernetes(k8s)基础 1、

JavaScript Promise技术

你可能已经知道Promises现在已经是JavaScript标准的一部分了。Chrome 32 beta版本已经实现了基本的Promise API。如今,Promise的概念在web开发中已经不是什么新鲜玩意了。我们中的大多数人已经在一些流行的JS库例如Q、when、RSVP.js中使用过了Promises。即使是jQuery中也有一个和Promises很类似叫做Deferred的东西。但是Ja