[LINUX] Configurez facilement Firewalld en multi-zone

introduction

L'autre jour, j'ai écrit un article Autoriser ssh uniquement pour des adresses IP spécifiques avec firewalld, mais en utilisant l'option -add-rich-rule La correspondance par la règle spéciale de Gorigori a été capturée. Firewalld est une bibliothèque relativement nouvelle qui succède à iptables, et il devrait y avoir un moyen plus sophistiqué et meilleur de le faire.

À la suite de diverses enquêtes, il y en avait. Son nom est la fonction ** multi-zone **. En utilisant cette fonction, j'ai trouvé qu'elle pouvait être définie de manière assez flexible et efficace, je voudrais donc partager ce que j'ai étudié cette fois.

environnement

Avantages de Firewalld

Tout d'abord, passons en revue les avantages de Firewalld. Selon la référence [1], les avantages du pare-feu par rapport aux iptables sont:

En effet, il semble important de bien utiliser les ** zones **. Au fait, mon dernier article a forcé l'ajout d'une règle à la zone publique.

Qu'est-ce qu'une zone

Ensuite, regardons la zone. Encore une fois, la référence [1] montre que ** Intarface ** et ** Source ** sont des concepts importants pour comprendre les zones.

Interface --Intaface est le nom système des cartes matérielles et réseau virtuelles. --Tous les Intafaces actifs sont affectés à la zone par défaut ou à la zone spécifiée par l'utilisateur. --Intaface ne peut pas être affecté à plusieurs zones **.

Source

--Source est la plage d'adresses IP source, qui peut également être attribuée à une zone. --La source ne peut pas être attribuée à plusieurs zones **. En effet, une fois que cela est fait, il n'est pas possible de savoir quelle règle doit être appliquée à cette source. --Il n'y a pas toujours une zone avec une source qui correspond à une source. Dans ce cas, il est traité selon une certaine priorité, mais les détails seront décrits ultérieurement.

Je n'ai pas expliqué la zone elle-même, mais l'avez-vous comprise d'une manière ou d'une autre?

Alors, qu'est-ce que le multi-zone?

Multi-Zone est un terme utilisé dans Reference [1], mais en bref, il est bon d'utiliser ** plusieurs zones actives ** au lieu d'une seule zone. ** Pensez-y comme un moyen de définir des règles.

Souvent prises en compte, selon la référence [1], les règles d'application de Firewalld dans le cas d'une multi-zone sont à peu près les suivantes. (Note) Il est écrit un peu, donc si vous voulez le comprendre strictement, consultez la référence [1] ou le manuel de Firewalld.

  1. S'il y a une zone avec une source correspondant au paquet (peut ne pas l'être), elle sera traitée dans cette zone car le paquet répond à la règle riche, le service est sur la liste blanche, etc. Si ça se termine. Sinon, passez à la suivante.
  2. Il se termine lorsqu'il est traité par la zone qui possède l'interface correspondant au paquet. Sinon, passez à la suivante.
  3. Les actions par défaut de Firewalld s'appliquent. Autrement dit, les paquets icmp sont acceptés et tout le reste est rejeté.

L'important est que la zone Source prime sur la zone Interface. Par conséquent, un modèle de conception courant pour les configurations multizones consiste à autoriser une adresse IP spécifique à accéder à un service spécifique dans la zone source et à restreindre l'accès à tous les autres utilisateurs de la zone d'interface. devenir.

Essayons avec une pseudo configuration

Essayons-le en nous basant sur un exemple du suivant.

Configuration du réseau

Cette fois, je souhaite procéder à cette configuration.

image.png

Laissez-moi vous donner un aperçu.

Règles de pare-feu que vous souhaitez atteindre

Donc, si vous l'écrivez en phrases, ce sera ambigu, alors faisons un tableau des règles qui autorisent les paquets sur le serveur WEB.

expéditeur protocole Nom de zone Rôle de zone
ANY https, http public Zone d'interface
192.168.11.24 mysql, nfs share Zone source
192.168.11.29 ssh mainte Zone source

C'est une règle de tout rejeter sauf ce qui précède. De plus, il y a déjà des colonnes "nom de zone" et "rôle de zone" dans le tableau, et il y a des descriptions de zones avec des noms tels que public, share, mainte, mais à partir de maintenant, ** ces multi-zones ** appliqueront effectivement les règles ci-dessus. Définissons-le.

Paramètres de la zone publique

La zone publique donne l'impression de modifier celle par défaut.

firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
firewall-cmd --permanent --zone=public --remove-service=cockpit
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --set-target=DROP
firewall-cmd --reload

paramètres de zone de maintenance

Étant donné que la zone de maintenance n'existe pas à l'origine, créez-la nouvellement et définissez-la.

firewall-cmd --permanent --new-zone=mainte
firewall-cmd --permanent --zone=mainte --add-service=ssh
firewall-cmd --permanent --zone=mainte --add-source=192.168.11.29
firewall-cmd --reload

La deuxième ligne spécifie ssh comme service autorisé, et la troisième ligne spécifie l'adresse IP du terminal de maintenance comme IP source autorisée.

partager les paramètres de zone

Étant donné que la zone de partage n'existe pas à l'origine, elle est définie après en avoir créé une nouvelle.

firewall-cmd --permanent --new-zone=share		
firewall-cmd --permanent --zone=share --add-port=2049/tcp		
firewall-cmd --permanent  --zone=share --add-port=3306/tcp		
firewall-cmd --permanent --zone=share  --add-source=192.168.11.24		
firewall-cmd --reload		

Les ports nfs et mysql sont spécifiés comme ports autorisés dans les 2e et 3e lignes, et l'adresse IP du serveur de sauvegarde est spécifiée comme IP source autorisée sur la 4e ligne.

Vérification!

Tout d'abord, exécutons nmap depuis le terminal de maintenance.

[kimisyo@localhost ~]$ nmap 192.168.11.26
Starting Nmap 7.70 ( https://nmap.org ) at 2020-10-25 20:59 JST
Nmap scan report for 192.168.11.26
Host is up (0.00063s latency).
Not shown: 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

Vous pouvez certainement voir ssh en plus du port http / https. (Au contraire, nfs et mysql ne sont pas visibles)

Ensuite, exécutons nmap à partir du serveur de sauvegarde.

(base) kimisyo@ubuntu20:~$ nmap 192.168.11.26
Starting Nmap 7.80 ( https://nmap.org ) at 2020-10-25 11:59 UTC
Nmap scan report for 192.168.11.26
Host is up (0.0011s latency).
Not shown: 996 filtered ports
PORT     STATE SERVICE
80/tcp   open  http
443/tcp  open  https
2049/tcp open  nfs
3306/tcp open  mysql

En plus du port http / https, vous pouvez voir 2049 / tcp et 3306 / tcp. (Au contraire, ssh n'est pas visible)

en conclusion

Enfin, je vais résumer les mérites du multi-zone que j'ai réellement ressentis.

Les références

Recommended Posts

Configurez facilement Firewalld en multi-zone
Gacha écrit en python - Ajout d'une fonction de réglage de période -
Paramètres pour une sélection facile de plusieurs noyaux dans Jupyter
Gestion des devis en [bash]
Partiel en cas de problème
Paramètre de localisation japonais de PyCharm
Liste des nœuds dans les diagrammes
Jugement d'équivalence d'objet en Python
Boîte de mot de passe facile en Python
Implémentation du tri rapide en Python