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é.

[[email protected] 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.

[[email protected]]# firewall-cmd --state 
running 
[[email protected]]#

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.

[[email protected]]# firewall-cmd --get-zones 
 work drop internal external trusted home dmz public block

[[email protected]]# firewall-cmd --get-default-zone 
public
[[email protected]]#

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.

[[email protected]]# firewall-cmd --get-default-zone 
public
[[email protected]]#

Ensuite, définissez la règle autorisant le port 80 sur la zone par défaut actuelle.

[[email protected]]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[[email protected]]#

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.

[[email protected]]# firewall-cmd --set-default-zone=drop 
success

[[email protected]]# firewall-cmd --get-default-zone 
drop

[[email protected]]#

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 .

[[email protected]]# firewall-cmd --set-default-zone=public 
success

[[email protected]]# firewall-cmd --get-default-zone 
public

[[email protected]]#

Voyons maintenant notre jeu de règles de filtrage actuel en public .

[[email protected]]# 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:

[[email protected] 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 -

[[email protected]]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[[email protected]]# systemctl restart firewalld

[[email protected]]#

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.