Comment ouvrir un port sur CentOS/RHEL ?

Publié 27 août 2024

Problème : Ouverture de ports sur CentOS/RHEL

L'ouverture de ports sur les systèmes CentOS ou RHEL est une tâche courante pour les administrateurs système et les développeurs. Elle est nécessaire lorsque vous souhaitez autoriser un trafic réseau spécifique à travers le pare-feu pour atteindre des services sur votre serveur. Le processus peut être déroutant pour ceux qui ne sont pas familiers avec les pare-feu Linux, en particulier sur ces distributions qui utilisent firewalld par défaut.

Ouverture de ports sur CentOS/RHEL

Utilisation de FirewallD pour la gestion des ports

FirewallD est l'outil de pare-feu par défaut pour CentOS et RHEL. Il gère les règles du pare-feu. Suivez ces étapes pour ouvrir des ports avec FirewallD :

  1. Vérifier le statut de FirewallD :

    sudo firewall-cmd --state
  2. Lister les ports ouverts :

    sudo firewall-cmd --list-ports
  3. Ouvrir un port (par exemple, le port 80 pour HTTP) :

    sudo firewall-cmd --add-port=80/tcp --permanent
  4. Recharger les règles du pare-feu :

    sudo firewall-cmd --reload

Configuration d'IPTables pour l'accès aux ports

IPTables est un outil de pare-feu plus ancien. Utilisez-le pour ouvrir des ports :

  1. Vérifier les règles IPTables :

    sudo iptables -L
  2. Ajouter une règle pour ouvrir un port (par exemple, le port 22 pour SSH) :

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  3. Sauvegarder les nouvelles règles :

    sudo service iptables save
  4. Redémarrer IPTables :

    sudo service iptables restart

Soyez prudent lors de l'ouverture de ports, car cela peut affecter la sécurité de votre système. N'ouvrez que les ports dont vous avez besoin et surveillez régulièrement les logs de votre pare-feu.

Vérification des ports ouverts sur CentOS

Utilisation de Netstat pour lister les ports ouverts

Netstat est un outil permettant de vérifier les ports ouverts sur votre système CentOS. Pour utiliser netstat :

  1. Ouvrez un terminal.
  2. Exécutez cette commande :
    sudo netstat -tuln

    Cela affiche tous les ports TCP et UDP en écoute.

La sortie affiche :

  • Le protocole (TCP ou UDP)
  • L'adresse locale et le numéro de port
  • L'adresse distante et le numéro de port
  • L'état de la connexion

Par exemple :

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

Cela signifie que le port 22 (SSH) est ouvert et en attente de connexions.

Utilisation de LSOF pour vérifier les ports en écoute

LSOF (List Open Files) est un autre outil pour identifier les ports ouverts. Pour utiliser LSOF :

  1. Installez LSOF s'il n'est pas présent sur votre système :

    sudo yum install lsof
  2. Exécutez cette commande pour voir les ports en écoute :

    sudo lsof -i -P -n | grep LISTEN

Cette commande affiche :

  • Le nom du processus utilisant le port
  • L'utilisateur exécutant le processus
  • Le numéro de port

Par exemple :

sshd    1234    root    3u  IPv4  12345      0t0  TCP *:22 (LISTEN)

Cela montre que le démon SSH est en écoute sur le port 22.

Netstat et LSOF fournissent tous deux des informations sur les ports ouverts sur votre système CentOS, vous aidant à vérifier vos paramètres de pare-feu.

Méthodes alternatives pour la configuration des ports

Utilisation de l'outil System-Config-Firewall

System-config-firewall est un outil de gestion des paramètres du pare-feu sur CentOS. Il offre une interface visuelle pour ceux qui préfèrent une alternative aux opérations en ligne de commande.

Pour utiliser system-config-firewall :

  1. Installez l'outil :

    sudo yum install system-config-firewall
  2. Lancez l'application :

    sudo system-config-firewall
  3. Dans l'interface, sélectionnez "Autres ports" et cliquez sur "Ajouter".

  4. Choisissez le protocole (TCP ou UDP) et entrez le numéro de port.

  5. Cliquez sur "Appliquer" pour sauvegarder les modifications.

Cette méthode est utile pour les utilisateurs qui préfèrent les outils visuels.

Gestion des ports spécifique au cloud

Lorsque vous exécutez CentOS sur des plateformes cloud, vous devrez peut-être prendre en compte des paramètres de pare-feu supplémentaires pour votre fournisseur cloud.

Pour CentOS hébergé dans le cloud :

  1. Consultez la documentation de votre fournisseur cloud pour la gestion du pare-feu.

  2. Utilisez le panneau de contrôle de la plateforme cloud ou les outils CLI pour gérer les groupes de sécurité réseau.

  3. Configurez à la fois le pare-feu CentOS et le pare-feu du fournisseur cloud pour autoriser le trafic souhaité.

  4. Certains fournisseurs cloud peuvent vous demander d'ouvrir des ports au niveau du réseau avant de configurer le pare-feu au niveau du système d'exploitation.

  5. Testez votre configuration pour vous assurer que les pare-feu du cloud et du système d'exploitation fonctionnent correctement ensemble.

N'oubliez pas que les environnements cloud peuvent avoir des pratiques de sécurité différentes par rapport aux configurations sur site. Suivez toujours les directives de sécurité de votre fournisseur cloud lors de la gestion des ports et des règles de pare-feu.

Dépannage des problèmes d'accès aux ports sur CentOS

Lorsque vous rencontrez des problèmes d'accès aux ports sur CentOS, vous pouvez faire face à ces difficultés. Voici quelques solutions pour vous aider à les résoudre :

  1. Port qui ne s'ouvre pas :

    • Vérifiez les règles du pare-feu avec firewall-cmd --list-all
    • Ajoutez le port à la bonne zone
    • Rechargez le pare-feu après avoir effectué des modifications
  2. Service qui ne démarre pas :

    • Vérifiez si le service est en cours d'exécution avec systemctl status nom_du_service
    • Consultez les logs du service pour détecter d'éventuelles erreurs
    • Assurez-vous que le service utilise le bon port
  3. Mauvais paramètres SELinux :

    • Utilisez sestatus pour vérifier si SELinux est activé
    • Exécutez semanage port -l | grep numero_de_port pour vérifier les étiquettes de port SELinux
    • Si nécessaire, ajoutez le bon contexte SELinux avec semanage port -a -t etiquette_port_t -p tcp numero_de_port
  4. Applications en conflit :

    • Utilisez netstat -tuln ou ss -tuln pour vérifier si une autre application utilise le port
    • Arrêtez ou modifiez l'application en conflit si nécessaire

Pour vérifier les logs du pare-feu pour les tentatives de connexion :

  1. Activez la journalisation des paquets refusés :

    sudo firewall-cmd --set-log-denied=all --permanent
    sudo firewall-cmd --reload
  2. Consultez les logs du pare-feu :

    sudo journalctl -f -u firewalld
  3. Recherchez les entrées avec "FINAL_REJECT" ou "FINAL_DROP" qui indiquent des connexions bloquées

  4. Examinez les entrées de log pour trouver l'IP source, le port de destination et le protocole du trafic bloqué