Maison  >  Article  >  tutoriels informatiques  >  Pare-feu Linux

Pare-feu Linux

王林
王林avant
2024-02-19 18:24:411098parcourir

pare-feu pare-feu

Le service firewalld dispose de deux modes de fonctionnement : CLI et GUI. Par rapport à iptables, le pare-feu prend en charge les mises à jour dynamiques et introduit le concept de zone.

En bref, une zone fait référence à un ensemble de politiques de pare-feu prédéfinies par le pare-feu, qui permet de basculer rapidement ces politiques entre les pare-feu, améliorant ainsi considérablement l'efficacité de commutation et la vitesse d'application du pare-feu.

Zone Règles de politique par défaut
confiance Autoriser tous les paquets
maison Rejetez le trafic entrant, mais autorisez le passage des services ssh, mdns, ipp-client et dhcpv6-client
interne Équivalent à la zone d'origine
travail Rejetez le trafic entrant, mais autorisez le passage des services ssh, ipp-client et dhcpv6-client
public Rejetez le trafic entrant, mais autorisez le passage des services ssh, ipp-client et dhcpv6-client
externe Refusez le trafic entrant, mais autorisez-le lié au service ssh
dmz Refusez le trafic entrant, mais autorisez-le lié au service ssh
bloquer Rejeter le trafic entrant sauf s'il est lié au trafic sortant
drop Rejeter le trafic entrant sauf s'il est lié au trafic sortant

firewalld est un outil de gestion de pare-feu dynamique sur les systèmes Linux. Il s'agit de l'outil de gestion de pare-feu par défaut pour les systèmes Centos7, remplaçant le précédent pare-feu iptables.

Firewalld fonctionne principalement au niveau de la couche réseau et est un pare-feu de filtrage de paquets. Comparé aux iptables traditionnels, firewalld est plus flexible et plus facile à utiliser, et peut réaliser un contrôle d'accès au réseau plus détaillé.

Le pare-feu

firewalld se compose principalement de deux aspects : la zone et le service. Les zones définissent différentes parties du réseau et disposent d'un ensemble de règles pour chaque zone. Par exemple, la zone publique convient aux hôtes dans un environnement Internet public, tandis que la zone interne convient aux hôtes dans un environnement réseau interne. Un service, quant à lui, est un ensemble de règles prédéfinies qui contrôlent l'accès à des ports spécifiques. En configurant les règles de zone et de service, le pare-feu peut être géré efficacement pour garantir la sécurité du réseau.

firewalld est un outil de gestion de pare-feu dynamique qui prend en charge les connexions et interfaces réseau définies par zones réseau et niveaux de sécurité. Il configure les paramètres des pare-feu IPv4 et IPv6, ainsi que les ponts Ethernet. Fournit deux modes : configuration d’exécution et configuration permanente.

Pare-feu Linux

Commandes de requête d'état du pare-feu : certaines commandes de requête d'état du pare-feu couramment utilisées doivent uniquement spécifier des paramètres complets pour obtenir l'état actuel du pare-feu.

[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区域所有开放的端口

Commande de libération du service Firewall : Tout d'abord, nous utilisons le paramètre --panic-on拒绝所有,并通过--add-servicepour libérer le numéro de port correspondant au service NFS.

[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

Commande de libération du port du pare-feu : nous pouvons utiliser --add-port命令增加开启某端口,也可使用--remove-portpour bloquer un certain port, en utilisant à la fois le numéro de port et le nom du service.

[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'

Redirection de port de configuration du pare-feu : la fonction de redirection de port est automatiquement redirigée vers un port de la machine locale ou de l'hôte cible lorsqu'un utilisateur accède au port 80 de la machine.

#将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

Requête et définition de la zone par défaut : interrogez la zone actuellement utilisée par le service de pare-feu et définissez la nouvelle zone par défaut du service sur la zone external.

#查询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

Modifier la zone par défaut en une nouvelle zone : modifiez la zone public du port réseau ens32 en zone ens32网口的public区域到external, et cela prendra effet de manière permanente.

[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

Définir l'état du service d'une certaine zone : définir si une certaine zone autorise le trafic demandant les protocoles SSH et HTTPS

#查询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

Définir la politique de redirection de port : sur 192.168.1.0/24网络中的系统,访问本地端口5423将被转发到本地的80port.

[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

Autoriser/supprimer les ports d'accès : autorisez ou supprimez par lots la politique de port d'un hôte dans une certaine zone.

# 允许/移除 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'

Types de technologies de pare-feu :

(1) Pare-feu de filtrage de paquets (filtrage de paquets)

(2) Pare-feu proxy d'application (proxy d'application)

(3) Pare-feu d'inspection avec état (inspection avec état)

(firewalld est un pare-feu filtrant les paquets, nous ne parlons donc ici que des pare-feu filtrant les paquets)

Présentation du pare-feu de filtrage de paquets :

(1) netfilter : Le système de fonction de filtrage de paquets situé dans le noyau Linux devient « l'état du noyau » du pare-feu Linux.

(2) firewalld : l'outil par défaut de CentOS7 pour gérer les règles de pare-feu, devenant le « mode utilisateur » du pare-feu Linux.

————Les deux noms ci-dessus peuvent être représentés comme des pare-feu Linux.

Niveaux fonctionnels de filtrage de paquets :

(1) Principalement la couche réseau, vérifiant l'IP source pour les paquets IP.

(2) Cela se reflète dans le traitement de l'adresse IP, du port et d'autres informations contenues dans le package.

Zone réseau :

Les neuf zones réseau prédéfinies de Firewalld :

①trusted②public③work④home⑤internal⑥external⑦dmz⑧block⑨drop

————Il existe des zones valides par défaut, et les zones fournies par firewalld sont classées de non fiable à fiable.

(1) Zone de dépôt : si vous utilisez la zone de dépôt, tous les paquets entrants seront supprimés. Ceci est similaire à iptables -j drop sur Centos6. L'utilisation de règles de dépôt signifie qu'il n'y aura pas de réponse.

(2) Zone de blocage : la zone de blocage rejettera les connexions réseau entrantes et renverra icmp-host-prohibited Seules les connexions établies par le serveur seront transmises, c'est-à-dire que seules les connexions réseau initialisées par le système sont autorisées.

(3) Zone publique : accepte uniquement les connexions sélectionnées. Par défaut, seuls ssh et dhcpv6-client sont autorisés. Cette zone est la zone par défaut (par défaut signifie par défaut, donc la zone publique est également la zone par défaut. Dans Marcher vers le. espace public sans aucune configuration).

(4) Zone externe : cette zone équivaut à l'option de masquage de démarrage du routeur. Seules les connexions spécifiées seront acceptées, c'est-à-dire ssh, tandis que les autres connexions seront abandonnées ou non acceptées.

(5) Zone d'isolement (zone DMZ) : Si vous souhaitez autoriser l'accès à certains services uniquement de l'extérieur, vous pouvez la définir dans la zone DMZ. Elle a également la fonctionnalité de connexions sélectionnées uniquement, c'est-à-dire ssh. Cette zone est aussi appelée zone non militarisée.

(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访问指定端口

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer