Der Firewalld-Dienst verfügt über zwei Arbeitsmodi: CLI und GUI. Im Vergleich zu iptables unterstützt die Firewall dynamische Updates und führt das Zonenkonzept ein.
Kurz gesagt bezieht sich eine Zone auf eine Reihe von Firewall-Richtlinien, die von der Firewall vordefiniert sind. Dadurch können diese Richtlinien schnell zwischen Firewalls umgeschaltet werden, wodurch die Umschalteffizienz und Anwendungsgeschwindigkeit der Firewall erheblich verbessert werden.
Bereich | Standardrichtlinienregeln |
vertrauenswürdig | Alle Pakete zulassen |
Zuhause | Eingehenden Datenverkehr ablehnen, aber ssh, mdns, ipp-client, dhcpv6-client-Dienste passieren lassen |
intern | Entspricht dem Heimatgebiet |
Arbeit | Eingehenden Datenverkehr ablehnen, aber SSH-, IPP-Client- und DHCPv6-Client-Dienste passieren lassen |
öffentlich | Eingehenden Datenverkehr ablehnen, aber SSH-, IPP-Client- und DHCPv6-Client-Dienste passieren lassen |
extern | Eingehenden Datenverkehr ablehnen, ihn jedoch im Zusammenhang mit dem SSH-Dienst zulassen |
dmz | Eingehenden Datenverkehr ablehnen, ihn jedoch im Zusammenhang mit dem SSH-Dienst zulassen |
Block | Eingehenden Datenverkehr ablehnen, es sei denn, er steht im Zusammenhang mit ausgehendem Datenverkehr |
Tropfen | Eingehenden Datenverkehr ablehnen, es sei denn, er steht im Zusammenhang mit ausgehendem Datenverkehr |
firewalld ist ein dynamisches Firewall-Verwaltungstool auf Linux-Systemen. Es ist das Standard-Firewall-Verwaltungstool für Centos7-Systeme und ersetzt die bisherige iptables-Firewall.
Firewalld arbeitet hauptsächlich auf der Netzwerkebene und ist eine Paketfilter-Firewall. Im Vergleich zu herkömmlichen iptables ist firewalld flexibler und benutzerfreundlicher und kann eine detailliertere Netzwerkzugriffskontrolle erreichen.
firewalld Firewall besteht hauptsächlich aus zwei Aspekten: Zone und Dienst. Zonen definieren verschiedene Teile des Netzwerks und verfügen über eine Reihe von Regeln für jede Zone. Beispielsweise eignet sich die öffentliche Zone für Hosts in einer öffentlichen Internetumgebung, während die interne Zone für Hosts in einer internen Netzwerkumgebung geeignet ist. Ein Dienst hingegen ist eine Reihe vordefinierter Regeln, die den Zugriff auf bestimmte Ports steuern. Durch die Konfiguration von Zonen- und Dienstregeln kann die Firewall effektiv verwaltet werden, um die Netzwerksicherheit zu gewährleisten.
firewalld ist ein dynamisches Firewall-Verwaltungstool, das Netzwerkverbindungen und Schnittstellen unterstützt, die durch Netzwerkzonen und Sicherheitsstufen definiert sind. Es konfiguriert IPv4- und IPv6-Firewall-Einstellungen sowie Ethernet-Brücken. Bietet zwei Modi: Laufzeitkonfiguration und permanente Konfiguration.
Befehle zur Abfrage des Firewall-Status: Bei einigen häufig verwendeten Befehlen zur Abfrage des Firewall-Status müssen lediglich vollständige Parameter angegeben werden, um den aktuellen Firewall-Status zu erhalten.
[root@localhost ~]# firewall-cmd --state #显示运行状态 [root@localhost ~]# firewall-cmd --get-zones #显示所有zone区域 [root@localhost ~]# firewall-cmd --get-active-zones#显示当前使用的区域 [root@localhost ~]# firewall-cmd --get-default-zone#显示默认使用的区域 [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32 #查看ens32网口的区域 [root@localhost ~]# firewall-cmd --zone=public --list-ports#显示public区域所有开放的端口
Firewall-Dienstfreigabebefehl: Zuerst verwenden wir den Parameter --panic-on
拒绝所有,并通过--add-service
um die Portnummer freizugeben, die dem NFS-Dienst entspricht.
[root@localhost ~]# firewall-cmd --get-services #显示服务列表 [root@localhost ~]# firewall-cmd --list-service #查询当前放行服务 [root@localhost ~]# firewall-cmd --panic-on #拒绝所有包 [root@localhost ~]# firewall-cmd --panic-off#取消拒绝状态 [root@localhost ~]# firewall-cmd --query-panic#查看是否拒绝 [root@localhost ~]# firewall-cmd --reload #重新加载防火墙 [root@localhost ~]# firewall-cmd --add-service=nfs#临时允许nfs服务通过 [root@localhost ~]# firewall-cmd --add-service=nfs --permanent#永久允许nfs服务通过 #放行https服务数据包通过 [root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 service name=httpd accept' [root@localhost ~]# firewall-cmd --list-rich-rule rule family="ipv4" source address="192.168.1.0/24" service name="https" accept
Firewall-Port-Freigabebefehl: Wir können --add-port
命令增加开启某端口,也可使用--remove-port
verwenden, um einen bestimmten Port zu blockieren, indem wir sowohl die Portnummer als auch den Dienstnamen verwenden.
[root@localhost ~]# firewall-cmd --list-all #显示所有端口列表 [root@localhost ~]# firewall-cmd --list-services#查看开放的服务 [root@localhost ~]# firewall-cmd --list-ports #查看开放的端口 [root@localhost ~]# firewall-cmd --add-port=443/tcp #临时开启443端口 [root@localhost ~]# firewall-cmd --remove-port=443/tcp#删除443端口 [root@localhost ~]# firewall-cmd --add-service=mysql#开放mysql端口 [root@localhost ~]# firewall-cmd --remove-service=http#阻止http端口 [root@localhost ~]# firewall-cmd --add-port=3306/tcp#开放通过tcp访问3306 [root@localhost ~]# firewall-cmd --remove-port=80/tcp #阻止通过tcp访问3306 [root@localhost ~]# firewall-cmd --add-port=233/udp #开放通过udp访问233 #临时放行8080端口,和8081端口 [root@localhost ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp success [root@localhost ~]# firewall-cmd --zone=public --list-ports 8080-8081/tcp #放行本地的3260端口 [root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 port port=3260 protocol=tcp accept'
Firewall-Konfiguration Portweiterleitung: Die Portweiterleitungsfunktion wird automatisch an einen Port auf dem lokalen Computer oder dem Zielhost weitergeleitet, wenn ein Benutzer auf Port 80 des Computers zugreift.
#将80端口的流量转发至8080 [root@localhost ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 #将80端口的流量转发至192.168.1.1 [root@localhost ~]# firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.1.1 #将80端口的流量转发至192.168.1.1的8080端口上 [root@localhost ~]# firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.1:toport=8080
Standardbereich abfragen und festlegen: Fragen Sie den aktuell vom Firewall-Dienst verwendeten Bereich ab und legen Sie den neuen Standardbereich des Dienstes auf den external
-Bereich fest.
#查询firewall服务当前所使用的区域 [root@localhost ~]# firewall-cmd --get-default-zone public #查看ens32网卡的所在区域信息 [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32 public #设置默认区域为external [root@localhost ~]# firewall-cmd --set-default-zone=external success [root@localhost ~]# firewall-cmd --get-default-zone external
Ändern Sie den Standardbereich in einen neuen Bereich: Ändern Sie den öffentlichen
-Bereich des Netzwerkports ens32
in den ens32
网口的public
区域到external
-Bereich, dann wird er dauerhaft wirksam.
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32 public [root@localhost ~]# firewall-cmd --zone=external --change-interface=ens32 [root@localhost ~]# firewall-cmd --zone=external --change-interface=ens32 --permanent success [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32 external
Stellen Sie den Dienststatus eines bestimmten Bereichs ein: Legen Sie fest, ob ein bestimmter Bereich Datenverkehr zulässt, der SSH- und HTTPS-Protokolle anfordert
#查询public区域内是否放行了ssh,https服务 [root@localhost ~]# firewall-cmd --zone=public --query-service=ssh yes [root@localhost ~]# firewall-cmd --zone=public --query-service=https no #把public区域的https请求,永久允许通过 [root@localhost ~]# firewall-cmd --zone=public --add-service=https success [root@localhost ~]# firewall-cmd --zone=public --add-service=https --permanent success #把public区域的https请求,设置为永久拒绝. [root@localhost ~]# firewall-cmd --zone=public --remove-service=https success [root@localhost ~]# firewall-cmd --zone=public --remove-service=https --permanent success
Portweiterleitungsrichtlinie festlegen: auf 192.168.1.0/24
网络中的系统,访问本地端口5423
将被转发到本地的80
Port.
[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 forward-port port=5423 protocol=tcp to-port=80' --permanent
Zugriffsports zulassen/entfernen: Batch-Zulassen oder Entfernen der Portrichtlinie eines Hosts in einem bestimmten Bereich.
# 允许/移除 192.168.1.10 所有访问所有端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" accept' --permanent firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" accept' --permanent firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" drop' --permanent # 允许192.168.2.0/24所有访问所有端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.2.0/24" accept' --permanent # 允许192.168.10访问22端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent # 移除192.168.10访问22端口 firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent # 允许192.168.1.0/24访问22端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" port port=22 protocol=tcp accept'
Firewall-Technologietypen:
(1) Paketfilter-Firewall (Paketfilterung)
(2) Anwendungs-Proxy-Firewall (Anwendungs-Proxy)
(3) Stateful Inspection Firewall (Stateful Inspection)
(firewalld ist eine Paketfilter-Firewall, daher sprechen wir hier nur über Paketfilter-Firewalls)
Paketfilter-Firewall-Übersicht:
(1) Netzfilter: Das im Linux-Kernel befindliche Paketfilterfunktionssystem wird zum „Kernel-Status“ der Linux-Firewall.
(2) firewalld: Das Standardtool von CentOS7 zum Verwalten von Firewallregeln, das zum „Benutzermodus“ der Linux-Firewall wird.
————Die beiden oben genannten Namen können als Linux-Firewalls ausgedrückt werden.
Arbeitsstufen der Paketfilterung:
(1) Hauptsächlich die Netzwerkschicht, die die Quell-IP auf IP-Pakete überprüft.
(2) Dies spiegelt sich in der Verarbeitung von IP-Adresse, Port und anderen Informationen im Paket wider.
Netzwerkbereich:
Neun vordefinierte Netzwerkzonen von Firewalld:
①vertrauenswürdig②öffentlich③Arbeit④home⑤intern⑥extern⑦dmz⑧block⑨drop
————Es gibt standardmäßig einige gültige Zonen und die von firewalld bereitgestellten Zonen sind von nicht vertrauenswürdig nach vertrauenswürdig sortiert.
(1) Drop-Zone: Wenn Sie die Drop-Zone verwenden, werden alle eingehenden Pakete verworfen. Dies ähnelt iptables -j drop auf Centos6.
(2) Blockierungszone: Die Blockierungszone lehnt eingehende Netzwerkverbindungen ab und gibt icmp-host-prohibited zurück. Es werden nur Verbindungen weitergeleitet, die vom Server hergestellt wurden, d. h. nur vom System initialisierte Netzwerkverbindungen sind zulässig.
(3) Öffentliche Zone: Akzeptiert nur die ausgewählten Verbindungen. Standardmäßig sind nur SSH und DHCPv6-Client zulässig. Diese Zone ist die Standardzone (Standard bedeutet, dass die öffentliche Zone auch die Standardzone ist). öffentlichen Bereich ohne jegliche Konfiguration).
(4) Externe Zone: Diese Zone entspricht der Startup-Masquerading-Option des Routers. Es werden nur bestimmte Verbindungen akzeptiert, also SSH, während andere Verbindungen unterbrochen oder nicht akzeptiert werden.
(5) Isolationszone (DMZ-Zone): Wenn Sie nur den Zugriff auf einige Dienste von außen zulassen möchten, können Sie diese in der DMZ-Zone definieren. Sie verfügt auch über die Funktion, nur ausgewählte Verbindungen, also SSH, zu nutzen. Diese Zone wird auch nichtmilitarisiertes Gebiet genannt.
(6)工作区域(Work Zone):在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client。
(7)家庭区域(Home Zone):这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client。
(8)内部区域(Internal Zone):这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同。
(9)信任区域(Trusted Zone):信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的。
————以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义。
注意:因为默认区域只允许ssh和dhcp,所以在没有任何配置的情况下默认是拒绝ping包的。
常用命令
# 查看所有放行端口 firewall-cmd --zone=public --list-ports # 禁止IP访问机器 firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.0.1" drop' # 禁止一个IP段,比如禁止192.168.*.* firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.0.1/16" drop' # 禁止一个IP段,比如禁止192.168.0.* firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.0.1/24" drop' # 禁止机器IP从防火墙中删除 firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address="192.168.0.1" drop' # 允许http服务(对应服务策略目录:/usr/lib/firewalld/services/) firewall-cmd --permanent --add-service=http # 关闭http服务(对应服务策略目录:/usr/lib/firewalld/services/) firewall-cmd --permanent --remove-service=http # 允许端口:3306 firewall-cmd --permanent --add-port=3306/tcp # 允许端口:1-3306 firewall-cmd --permanent --add-port=1-3306/tcp # 关闭放行中端口:3306 firewall-cmd --permanent --remove-port=3306/tcp # 查看firewall的状态 firewall-cmd --state # 查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略) firewall-cmd --list-all # 查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略) firewall-cmd --list-all-zones # 重新加载配置文件 firewall-cmd --reload # 更改配置后一定要重新加载配置文件 firewall-cmd --reload # Postgresql端口设置。允许192.168.142.166访问5432端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port port="5432" protocol="tcp" accept" # redis端口设置。允许192.168.142.166访问6379端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port port="6379" protocol="tcp" accept" # beanstalkd端口设置。允许192.168.142.166访问11300端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port port="11300" protocol="tcp" accept" # 查看防火墙端口列表 firewall-cmd --list-ports # 添加指定端口tcp firewall-cmd --zone=public --add-port=8080/tcp --permanent# 开放8080/tcp端口 firewall-cmd --zone=public --add-port=10002-10010/tcp --permanent# 开放10002-10010/tcp端口范围 # 添加指定端口udp firewall-cmd --zone=public --add-port=9200/udp --permanent # 开放9200/udp端口 firewall-cmd --zone=public --add-port=20015-20020/udp --permanent# 开放20015-20020/udp端口范围 # 删除指定端口 firewall-cmd --zone= public --remove-port=19800/tcp --permanent # 删除已开放的19880/tcp端口 firewall-cmd --zone= public --remove-port=9200-9300/udp --permanent# 删除已开放的9200-9300/udp 端口范围 # 热加载防火墙,使之生效 firewall-cmd --reload # 指定某IP访问某端口 firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.107" port protocol="tcp" port="3306" accept" # 删除策略 firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.107" port protocol="tcp" port="3306" accept" # 指定某个网段访问某个端口范围 firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="11.76.168.0/24" port protocol="udp" port="1-65535" accept" # 删除策略 firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="11.76.168.0/24" port protocol="tcp" port="1-65535" accept" # 禁止指定ip 访问某个端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.200" port protocol="tcp" port="80" reject" # 禁止某个段的ip 访问某个端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject" # 允许指定ip 访问所有端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.100" port protocol="tcp" accept" # 允许指定ip段 访问所有端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" accept" # 允许192.168.1.10所有访问所有端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" accept' --permanent # 移除192.168.1.10所有访问所有端口 firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" accept' --permanent # 允许192.168.2.0/24(0-255)所有访问所有端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.2.0/24" accept' --permanent # 允许192.168.1.10所有访问TCP协议的22端口 firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent # 移除192.168.1.10所有访问TCP协议的22端口 firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent # 防火墙重新载入(必须重新载入后才能生效) firewall-cmd --reload # 查看rich-rules(富规则) firewall-cmd --list-rich-rules # 查看防火墙服务规则 firewall-cmd --list-services # 查看防火墙所有规则 firewall-cmd --list-all # 查看防火墙所有区域的配置规则 firewall-cmd --list-all-zones # 查看默认区域 firewall-cmd --get-default-zone # 查看网络接口使用区域 firewall-cmd --get-active-zones # 查看默认的可用服务 firewall-cmd --get-services # 要启用或禁用HTTP服务 firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --remove-service=http --permanent # 移除现有规则(此步骤相当重要,很多文章和博客都没提及到) firewall-cmd --permanent --zone=public --remove-port=80/tcp firewall-cmd --reload # 在192.168.100.100102上测试访问 curl192.168.100.101 发现均无法再访问101的80端口 # 设置规则 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.102" port protocol="tcp" port="80" accept" firewall-cmd --reload # 测试访问 curl 192.168.100.101 # 100无法访问102可以访问 至此实现了通过防火墙firewalld设置规则,指定ip访问指定端口
Das obige ist der detaillierte Inhalt vonFirewalld Linux-Firewall. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!