En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment configurer IPtables ou NFtables pour autoriser le trafic vers mon instance Amazon EC2 Linux ?

Lecture de 6 minute(s)
0

Je souhaite configurer IPtables ou NFtables pour autoriser le trafic vers mon application ou mon instance qui s’exécute sur une instance Linux Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

Utilisez IPtables et NFtables pour gérer le trafic réseau sur les systèmes Linux, notamment sur les instances Amazon EC2 Linux. Choisissez NFtables pour les nouveaux déploiements et utilisez IPtables dans les environnements existants. Pour plus d’informations sur IPtables, consultez IptablesHowTo sur le site Web d’Ubuntu.

Solution

Configuration d’IPtables

Pour installer et activer le service IPtables, exécutez les commandes suivantes :

sudo yum install iptables-services -y
sudo systemctl enable iptables
sudo systemctl start iptables

Remarque : si vous avez installé IPtables avec des règles préconfigurées, effacez ces règles et configurez les nouvelles règles. Pour répertorier les règles, exécutez la commande suivante :

sudo iptables -L

Pour effacer toutes les règles, exécutez la commande suivante :

sudo iptables -F

Pour ouvrir un port spécifique, exécutez la commande suivante :

sudo iptables -A INPUT -p tcp --dport example_port -j ACCEPT

Remarque : remplacez example_port par votre numéro de port.

Pour autoriser le trafic entrant sur un port spécifique, vers une adresse IP ou un sous-réseau spécifique, exécutez la commande suivante :

sudo iptables -A INPUT -p tcp -s your_server_ip --dport example_port -j ACCEPT

Remarque : remplacez your_server_ip par votre adresse IP ou votre sous-réseau et example_port par votre port.

Modifiez les ports et les protocoles en fonction de votre cas d’utilisation. Voici une liste de ports et de protocoles couramment utilisés :

  • Port TCP 80 --Serveur HTTP
  • Port TCP 443 --Serveur HTTPS
  • Port TCP 25 --Serveur de messagerie
  • Port TCP 22 --Serveur shell sécurisé OpenSSH (distant)
  • Port TCP 110 --Serveur POP3 (Post Office Protocol v3)
  • Port TCP 143 --Protocole d’accès aux messages Internet (IMAP) -- gestion des messages électroniques
  • Port TCP/UDP 53 --Système de noms de domaine (DNS)

Pour répertorier les règles IPtables, exécutez la commande suivante :

sudo iptables -L

Suivez ces étapes pour supprimer la règle IPtables par chaîne et par numéro :

  1. Pour répertorier les règles avec des numéros de ligne, exécutez la commande suivante :

    sudo iptables -L --line-numbers
  2. Pour supprimer une règle, exécutez la commande suivante :

    sudo iptables -D example_chain example_number

    Remarque : remplacez example_chain par le nom de votre chaîne et example_number par le numéro de votre règle.

  3. Pour enregistrer les règles IPtables, exécutez la commande suivante :

    sudo service iptables save

L’ensemble de règles est automatiquement enregistré dans /etc/sysconfig/iptables et restauré à chaque démarrage.

Configuration des fichiers NFtables

La commande nft ne crée pas automatiquement des tables et des chaînes. Vous devez créer manuellement des tables et des chaînes. Pour en savoir plus sur NFtables, consultez la section Getting started with nftables sur le site Web de Red Hat Enterprise Linux (RHEL).

Pour installer et activer IPtables, exécutez les commandes suivantes :

sudo yum install nftables -y
sudo systemctl enable nftables
sudo systemctl start nftables

Utilisation des commandes NFT pour gérer des tables, des chaînes ou des règles

Prérequis : pour effectuer les tâches suivantes, vous devez disposer des autorisations sudo ou être un utilisateur racine.

Vous devez attribuer une famille d’adresses à chaque table. La famille d’adresses définit les types de paquets traités par la table.

Voici des familles d’adresses et les paquets auxquels elles correspondent :

  • adresse IP : Correspond uniquement aux paquets IPv4.
    Remarque : si vous n’indiquez pas de famille d’adresses précise, IP est la valeur par défaut.
  • IP 6 : Correspond uniquement aux paquets IPv6.
  • Inet : Correspond aux paquets IPv4 et IPv6.
  • Arp : Correspond aux paquets du protocole de résolution d’adresses IPv4 (ARP).
  • Bridge : Correspond aux paquets qui passent par un périphérique de pont.
  • Netdev : Correspond aux paquets de l’entrée.

Pour créer une table avec la famille d’adresses inet, qui pourra traiter à la fois les paquets IPv4 et IPv6, créez d’abord une table nommée test_rules. Puis, exécutez la commande suivante :

sudo nft add table inet test_rules

Pour ajouter une chaîne de base nommée INPUT qui traite le trafic réseau entrant, exécutez la commande suivante :

sudo nft add chain inet test_rules INPUT '{ type filter hook input priority 0 ; policy accept ; }'

Pour ajouter des règles à la chaîne INPUT afin d’autoriser les ports TCP 443, 22 et 80, exécutez les commandes suivantes en respectant l’ordre dans lequel vous souhaitez que nft ajoute les règles :

sudo nft add rule inet test_rules INPUT tcp dport 443 accept
sudo nft add rule inet test_rules INPUT tcp dport 22 accept
sudo nft add rule inet test_rules INPUT tcp dport 80 accept

Remarque : remplacez les ports TCP 443, 22 et 80 par vos numéros de port.

Pour afficher les règles actuelles, exécutez la commande suivante :

sudo nft -a list table inet test_rules

Pour insérer une règle avant la règle existante avec le handle 2, exécutez la commande suivante :

sudo nft insert rule inet test_rules INPUT position 2 tcp dport 8080 accept

Remarque : remplacez 2 par votre position et 8080 par vos numéros de port.

Pour ajouter une règle après la règle existante avec le handle 2, exécutez la commande suivante :

sudo nft add rule inet test_rules INPUT position 2 tcp dport 621 accept

Remarque : remplacez 2 par votre position et 621 par vos numéros de port.

Pour supprimer une règle avec le handle 3, exécutez la commande suivante :

sudo nft delete rule inet test_rules INPUT handle 3

Remarque : remplacez 3 par le numéro de votre position.

Pour supprimer toutes les règles, exécutez la commande suivante :

sudo nft flush chain inet test_rules INPUT

Pour enregistrer votre ensemble de règles, exécutez la commande suivante :

sudo bash -c "nft list ruleset > /etc/sysconfig/nftables.conf"

Informations complémentaires

Comparison of common iptables and nftables commands sur le site web RHEL.

Troubleshoot issues connecting to your Amazon EC2 Linux instance

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 mois