Qu'est-ce que le pare-feu ?
Firewalld est une solution de gestion de pare-feu pour de nombreuses distributions Linux, notamment Ubuntu, Debian, CentOS, RHEL et Fedora. Il agit comme une interface pour le système de filtrage iptables fourni par le noyau Linux. Il est indépendant du protocole, ce qui signifie qu'il prend en charge IPv4, IPv6, les ponts Ethernet et les ensembles IP.
Concept de base du pare-feu
FirewallD utilise des zones et des services au lieu de la chaîne et des règles iptables. Les zones sont un ensemble de règles qui spécifient quel trafic doit être autorisé en fonction du niveau de confiance que vous avez dans un réseau auquel vos ordinateurs sont connectés. Les interfaces réseau ont attribué une zone pour dicter un comportement que le pare-feu doit autoriser.
Le firewalld est géré à l'aide de l'outil de ligne de commande firewall-cmd. Il fournit une interface pour gérer l'exécution et la configuration permanente.
Zones de pare-feu
Il existe 9 zones prédéfinies dans le Firewalld en fonction du niveau de confiance par ordre croissant.
Une brève explication de chaque zone est expliquée ci-dessous :
- Déposer : Cette zone a le niveau de confiance le plus bas et est utilisée pour supprimer tout le trafic entrant sans envoyer d'accusé de réception à l'expéditeur.
- Bloquer : Cette zone est très similaire à la Drop zone, le trafic entrant est rejeté et l'expéditeur reçoit un message.
- Public : Autorise le trafic depuis certains réseaux publics.
- Externe : Cette zone est utilisée lorsque votre système agit comme une passerelle ou un routeur.
- Interne : Ensemble de règles qui s'appliquent aux ordinateurs de votre réseau interne privé.
- DMZ : Cette zone est un patch isolé d'ordinateurs de votre réseau interne qui ne peut pas accéder à d'autres ressources internes.
- Travail : Cette zone est utilisée pour les machines de travail. Le niveau de confiance est élevé.
- Accueil : La plupart des ordinateurs de cette zone se font confiance. Le niveau de confiance est supérieur au travail.
- Fiable : Cette zone a le niveau de confiance le plus élevé. Tous les ordinateurs du réseau sont approuvés.
Étape 1 - Installation du pare-feu
Par défaut, Firewalld est préinstallé sur la plupart des systèmes d'exploitation. Mais une partie de l'installation minimale du système d'exploitation n'inclut pas fiSi elle n'est pas installée, vous pouvez l'installer avec la commande suivante :
sudo yum install firewalld # CentOS/RHEL 8/7/6 sudo dnf install firewalld # Fedora and CentOS/RHEL 8 sudo apt install firewalld # Ubuntu and Debian
Après avoir installé firewalld, vous devrez le démarrer et l'activer après le redémarrage du système.
sudo systemctl start firewalld sudo systemctl enable firewalld
Exécutez la commande suivante pour vérifier l'état de firewalld
systemctl status firewalld [OR] firewall-cmd --state
Étape 2 :Travailler avec les zones et les services
Par défaut, public est la zone par défaut dans firewalld et toutes les interfaces réseau sont configurées avec une zone publique. Vous pouvez lister la zone par défaut avec la commande suivante :
firewall-cmd --get-default-zone
Sortie :
public
Ensuite, exécutez la commande suivante pour obtenir une liste des zones actives :
firewall-cmd --get-active-zones
Vous devriez obtenir le résultat suivant :
public interfaces: eth0 eth1
Pour obtenir une liste de toutes les zones disponibles, exécutez la commande suivante :
firewall-cmd --get-zones
Vous devriez obtenir le résultat suivant :
block dmz drop external home internal public trusted work
Vous pouvez lister tous les services associés à une zone publique avec la commande suivante :
firewall-cmd --list-all
Vous devriez obtenir le résultat suivant :
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Pour modifier la zone par défaut de public à work, exécutez la commande suivante :
firewall-cmd --set-default-zone=work
Vous pouvez maintenant vérifier votre zone par défaut avec la commande suivante :
firewall-cmd --get-default-zone
Sortie :
work
Vous pouvez obtenir une liste de tous les services disponibles dans votre système avec la commande suivante :
firewall-cmd --get-services
Vous devriez obtenir le résultat suivant :
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
Étape 3 :Autoriser et refuser les services dans le pare-feu
Vous pouvez autoriser et refuser le trafic entrant en fonction de services prédéfinis dans firewalld.
Par exemple, pour autoriser tout le trafic entrant pour le service http dans la zone publique, exécutez la commande suivante :
firewall-cmd --zone=public --add-service=http
Sortie :
success
Pour autoriser le trafic entrant pour le service ftp dans la zone publique, exécutez la commande suivante :
firewall-cmd --zone=public --add-service=ftp
Sortie :
success
La commande ci-dessus ajoutera un service http et ftp temporaire et il n'est pas persistant lors des redémarrages. Vous devrez utiliser le --permanent
possibilité de les rendre permanents comme indiqué ci-dessous :
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=ftp
Ensuite, exécutez la commande suivante pour mettre en œuvre les modifications :
firewall-cmd --reload
Vous pouvez maintenant obtenir une liste des services ajoutés avec la commande suivante :
firewall-cmd --permanent --zone=public --list-services
Vous devriez voir le résultat suivant :
cockpit dhcpv6-client ftp http ssh
Vous pouvez également vérifier les informations détaillées sur la zone publique avec la commande suivante :
firewall-cmd --info-zone public
Sortie :
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ftp http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Si vous souhaitez supprimer/refuser les services ci-dessus du pare-feu, utilisez le --remove-service
choix :
firewall-cmd --permanent --zone=public --remove-service=http firewall-cmd --permanent --zone=public --remove-service=ftp
Ensuite, exécutez la commande suivante pour appliquer les modifications :
firewall-cmd --reload
Étape 4 :Autoriser et refuser les ports dans le pare-feu
Vous pouvez également autoriser et refuser le trafic entrant en fonction du port dans firewalld.
Par exemple, autorisez tout le trafic entrant sur les ports 8080 et 443, exécutez la commande suivante :
firewall-cmd --permanent --zone=public --add-port=443/tcp firewall-cmd --permanent --zone=public --add-port=8080/tcp
Ensuite, exécutez la commande suivante pour appliquer les modifications :
firewall-cmd --reload
Ensuite, vérifiez les ports ajoutés avec la commande suivante :
firewall-cmd --permanent --zone=public --list-ports
Sortie :
443/tcp 8080/tcp
De même, supprimez / refusez les ports ci-dessus du pare-feu, utilisez l'option –remove-port :
firewall-cmd --permanent --zone=public --remove-port=443/tcp firewall-cmd --permanent --zone=public --remove-port=8080/tcp
Ensuite, exécutez la commande suivante pour appliquer les modifications :
firewall-cmd --reload
Étape 5 - Redirection de port avec pare-feu
La redirection de port est le processus qui redirige la demande de la combinaison IP/port et la redirige vers une adresse IP et/ou un port différent. Cette technique permet aux machines distantes de se connecter à un service spécifique au sein d'un réseau privé.
Avant de configurer la redirection de port, vous devez activer le masquage dans la zone souhaitée. Vous pouvez l'activer en utilisant le --add-masquerade
choix :
firewall-cmd --zone=public --add-masquerade
Ensuite, pour transférer le trafic du port 80 vers le port 8080 sur le même serveur, exécutez la commande suivante :
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
Si vous souhaitez transférer le trafic du port local 80 vers le port 8080 sur un serveur distant avec l'adresse IP 192.168.1.200, exécutez la commande suivante :
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
Ensuite, exécutez la commande suivante pour appliquer les modifications :
firewall-cmd --reload
Si vous souhaitez supprimer les règles ci-dessus, remplacez –add par –remove comme indiqué ci-dessous :
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200 firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080
Conclusion
Dans le guide ci-dessus, vous avez appris le concept de base de Firewalld et comment l'implémenter sur le système d'exploitation Linux. J'espère que vous pourrez désormais limiter le trafic entrant inutile avec firewalld.