Administrateur Linux - Configuration du pare-feu
firewalld est le contrôleur frontal par défaut pour iptables sur CentOS. Le front-end de firewalld présente deux avantages principaux par rapport aux iptables bruts -
Utilise des chaînes et des règles d'abstraction de zones faciles à configurer et à implémenter.
Les ensembles de règles sont dynamiques, ce qui signifie que les connexions avec état ne sont pas interrompues lorsque les paramètres sont modifiés et / ou modifiés.
N'oubliez pas que firewalld est le wrapper pour iptables - pas un remplacement. Bien que les commandes iptables personnalisées puissent être utilisées avec firewalld , il est recommandé d'utiliser firewalld pour ne pas interrompre la fonctionnalité du pare-feu.
Tout d'abord, assurons-nous que firewalld est à la fois démarré et activé.
[root@CentOS rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago
Docs: man:firewalld(1)
Main PID: 712 (firewalld)
Memory: 34.7M
CGroup: /system.slice/firewalld.service
└─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Nous pouvons voir que firewalld est à la fois actif (pour démarrer au démarrage) et en cours d'exécution. Si inactif ou non démarré, nous pouvons utiliser -
systemctl start firewalld && systemctl enable firewalld
Maintenant que notre service firewalld est configuré, assurons-nous qu'il est opérationnel.
[root@CentOS]# firewall-cmd --state
running
[root@CentOS]#
Nous pouvons voir, le service firewalld est entièrement fonctionnel.
Firewalld travaille sur le concept de zones . Une zone est appliquée aux interfaces réseau via le gestionnaire de réseau. Nous en discuterons lors de la configuration du réseau . Mais pour l'instant, par défaut, la modification de la zone par défaut changera toutes les cartes réseau laissées dans l'état par défaut de "Zone par défaut".
Jetons un coup d'œil à chaque zone prête à l'emploi avec firewalld .
N ° Sr. | Zone et description |
---|---|
1 | drop Faible niveau de confiance. Toutes les connexions et tous les paquets entrants sont abandonnés et seules les connexions sortantes sont possibles via statefullness |
2 | block Les connexions entrantes reçoivent une réponse par un message icmp informant l'initiateur que la demande est interdite |
3 | public Tous les réseaux sont limités. Cependant, les connexions entrantes sélectionnées peuvent être explicitement autorisées |
4 | external Configure firewalld pour NAT. Le réseau interne reste privé mais accessible |
5 | dmz Seules certaines connexions entrantes sont autorisées. Utilisé pour les systèmes en isolation DMZ |
6 | work Par défaut, faites confiance à plus d'ordinateurs sur le réseau en supposant que le système se trouve dans un environnement de travail sécurisé |
sept | hone Par défaut, davantage de services ne sont pas filtrés. En supposant qu'un système se trouve sur un réseau domestique où des services tels que NFS, SAMBA et SSDP seront utilisés |
8 | trusted Toutes les machines du réseau sont approuvées. La plupart des connexions entrantes sont autorisées sans restriction.This is not meant for interfaces exposed to the Internet |
Les zones les plus courantes à utiliser sont: public, drop, travail et domicile.
Certains scénarios où chaque zone commune serait utilisée sont -
public- C'est la zone la plus couramment utilisée par un administrateur. Il vous permettra d'appliquer les paramètres personnalisés et de respecter les spécifications RFC pour les opérations sur un réseau local.
drop- Un bon exemple d'utilisation de drop est lors d'une conférence de sécurité, sur le WiFi public ou sur une interface connectée directement à Internet. drop suppose que toutes les demandes non sollicitées sont malveillantes, y compris les sondes ICMP. Ainsi, toute demande hors de l'état ne recevra pas de réponse. L'inconvénient de la baisse est qu'elle peut interrompre la fonctionnalité des applications dans certaines situations nécessitant une conformité RFC stricte.
work- Vous êtes sur un LAN d'entreprise semi-sécurisé. Où tout le trafic peut être considéré comme modérément sûr. Cela signifie que ce n'est pas du WiFi et que nous avons peut-être IDS, IPS et sécurité physique ou 802.1x en place. Nous devons également être familiers avec les personnes utilisant le LAN.
home- Vous êtes sur un LAN domestique. Vous êtes personnellement responsable de chaque système et de l'utilisateur sur le LAN. Vous connaissez chaque machine sur le LAN et qu'aucune n'a été compromise. Souvent, de nouveaux services sont proposés pour le partage de médias entre des personnes de confiance et vous n'avez pas besoin de prendre plus de temps pour des raisons de sécurité.
Les zones et les interfaces réseau fonctionnent à un niveau un à plusieurs. Une seule interface réseau ne peut avoir qu'une seule zone à la fois. Alors qu'une zone peut être appliquée à plusieurs interfaces simultanément.
Voyons quelles zones sont disponibles et quelles sont les zones actuellement appliquées.
[root@CentOS]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Prêt à ajouter des règles personnalisées dans firewalld?
Voyons d'abord à quoi ressemble notre box, à un scanner de ports de l'extérieur.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#
Autorisons les requêtes entrantes sur le port 80.
Tout d'abord, vérifiez quelle zone est appliquée par défaut.
[root@CentOs]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Ensuite, définissez la règle autorisant le port 80 sur la zone par défaut actuelle.
[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp
success
[root@CentOS]#
Maintenant, vérifions notre case après avoir autorisé les connexions sur le port 80.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#
Il autorise désormais le trafic non sollicité à 80.
Mettons la zone par défaut à supprimer et voyons ce qui se passe avec l'analyse des ports.
[root@CentOS]# firewall-cmd --set-default-zone=drop
success
[root@CentOS]# firewall-cmd --get-default-zone
drop
[root@CentOs]#
Analysons maintenant l'hôte avec l'interface réseau dans une zone plus sécurisée.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered
Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#
Désormais, tout est filtré de l'extérieur.
Comme démontré ci-dessous, l'hôte ne répondra même pas aux demandes de ping ICMP lorsqu'il est en baisse .
bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Définissons à nouveau la zone par défaut sur public .
[root@CentOs]# firewall-cmd --set-default-zone=public
success
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Voyons maintenant notre jeu de règles de filtrage actuel en public .
[root@CentOS]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[root@CentOS rdc]#
Telle qu'elle est configurée, notre règle de filtrage du port 80 est uniquement dans le contexte de la configuration en cours. Cela signifie qu'une fois que le système est redémarré ou que le service firewalld est redémarré, notre règle sera rejetée.
Nous allons bientôt configurer un démon httpd , alors rendons nos changements persistants -
[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@CentOS]# systemctl restart firewalld
[root@CentOS]#
Maintenant, notre règle du port 80 dans la zone publique est persistante lors des redémarrages et des redémarrages de service.
Voici les commandes courantes de firewalld appliquées avec firewall-cmd .
Commander | action |
---|---|
firewall-cmd --get-zones | Répertorie toutes les zones qui peuvent être appliquées à une interface |
firewall-cmd: état | Renvoie l'état actuel du service firewalld |
pare-feu-cmd --get-default-zone | Obtient la zone par défaut actuelle |
firewall-cmd --set-default-zone = <zone> | Définit la zone par défaut dans le contexte actuel |
pare-feu-cmd --get-active-zone | Obtient les zones actuelles en contexte telles qu'appliquées à une interface |
firewall-cmd --zone = <zone> --liste-tout | Répertorie la configuration de la zone fournie |
firewall-cmd --zone = <zone> --addport = <port / protocole de transport> | Applique une règle de port au filtre de zone |
--permanent | Rend les modifications de la zone persistantes. L'indicateur est utilisé en ligne avec les commandes de modification |
Ce sont les concepts de base de l'administration et de la configuration de firewalld .
La configuration des services de pare-feu basés sur l'hôte dans CentOS peut être une tâche complexe dans des scénarios de mise en réseau plus sophistiqués. L'utilisation et la configuration avancées de firewalld et iptables dans CentOS peuvent nécessiter un didacticiel complet. Cependant, nous avons présenté les bases qui devraient suffire pour accomplir une majorité de tâches quotidiennes.