Dans ce tutoriel, nous allons parler de iptables, le pare-feu ou pare-feu que nous avons sous Linux. Cet outil nous permettra de filtrer les paquets (dont le tutoriel traitera), de générer un enregistrement de journal, d'effectuer des traductions NAT.
Grâce à iptables, nous pouvons générer des règles pour filtrer les paquets assez simplement, même si la première fois que vous l'utilisez, cela peut sembler un peu déroutant, vous verrez que lorsque vous l'utilisez pendant quelques jours, il n'a aucune complication.
L'utilisation de cet outil nécessite des privilèges élevés, c'est-à-dire que nous devrons être des super-utilisateurs pour le faire fonctionner. Nous avons de nombreuses fonctionnalités au sein d'iptables, l'objectif du tutoriel est de voir une approximation de son utilisation à travers des exemples. Il est important qu'une fois le didacticiel terminé, vous continuez à creuser, car il est très utile.
Ensuite, nous quittons le site officiel au cas où cela vous intéresserait :
NoterPour IPv6, nous avons ip6tables.
Si nous voulons voir des informations sur iptables, nous exécuterons ce qui suit dans un terminal :
homme iptablesNous verrons les informations suivantes :
Dans l'image, vous pouvez voir une partie des informations fournies par la commande, pour tout voir, faites défiler vers le bas dans le terminal. Comme nous l'avons vu au début du tutoriel, une des tâches que nous permettra iptables est de créer des règles ou des filtres pour savoir quoi faire avec les paquets qui ont notre machine comme origine/destination. Pour cette tâche, nous nous intéresserons à savoir pourquoi nous utilisons les concepts suivants :
Planches
Iptables a plusieurs tables mais pour notre tutoriel nous nous concentrons uniquement sur table de filtrage, qui est en charge du filtrage, est utilisé par défaut dans iptables.
Chaînes
Les chaînes que je vais mettre ici sont celles qui appartiennent au tableau commenté précédemment.
- Saisir: Colis destinés à notre machine.
- Production: paquets qui proviennent de notre système.
- Effronté: les colis qui passent par notre machine pour être acheminés vers une autre.
Règles
Nous allons indiquer les 2 qui seront utilisées dans le tutoriel, mais il y en a d'autres.
- J'accepte: Les colis sont acceptés.
- Tomber: les paquets sont rejetés.
Paramètres
Certains des paramètres que nous pouvons utiliser sont les suivants.
- -Une règle: Pour ajouter une règle
- -D règle: Supprimer la règle que nous indiquons.
- -L: Permet de lister les règles.
- -F: supprimer toutes les règles existantes.
- -j cible: Définir le type de règle (Accepter, Abandonner).
- -t table: Il indiquera la table qui est utilisée (par défaut table de filtrage).
- -p protocole: Utilisé pour indiquer le protocole.
- -i interface: Nous établissons l'interface pour la règle.
- -s: Pour indiquer l'origine.
- -ré: Pour indiquer la destination.
- -h: Affiche l'aide.
Il y en a beaucoup d'autres, car ils peuvent être --le port de destination ou alors --source-port. Pour les voir tous, vous pouvez exécuter la commande dont nous avons parlé ci-dessus :
homme iptablesOu vous pouvez également exécuter :
iptables -hNoterIl faut bien regarder les options proposées par l'outil, puisqu'il fait la distinction entre les lettres minuscules et majuscules et on peut se tromper (ce ne sera pas la même chose de mettre -p Quoi -P).
Commençons par les exemples, un total de 10 seront mis, ce sera donc mieux compris et nous pourrons voir comment fonctionne iptables en mode pare-feu. Dans les exemples vous ne verrez pas sudo, ce ne sera pas nécessaire si vous êtes en tant que root, sinon vous devrez ajouter le mot sudo au début de chaque exemple.
1. Interdire le départ vers n'importe quelle destinationPour commencer, nous allons donner un exemple simple, ne laissez la sortie nulle part.
iptables -A SORTIE -j DROPCelui-ci est très facile, comme vous pouvez le voir, le suivant est encore plus facile.
2. Effacer toutes les règlesNous continuons avec un exemple très simple, laissons nos iptables sans règles, pour cela nous exécuterons :
iptables -FEh bien compliquons un peu plus dans le prochain.
3. Interdire le départ par le port 80Maintenant, nous nous occupons de fermer la sortie via un port spécifique, dans ce cas c'est 80, donc nous n'aurons pas de navigation Web via le protocole http (si nous naviguons vers une page https, nous pouvons naviguer, bien que nous puissions faire la même chose comme 80).
iptables -A SORTIE -p tcp --destination-port 80 -j DROPNoterLors de l'utilisation d'un port de destination ou source, nous devrons mettre le paramètre -p pour indiquer le protocole.
Passons au quatrième exemple.
4. Interdire la navigation vers une pageA cette occasion, nous sommes intéressés à interdire l'accès à la page X depuis notre système, imaginons que cette page soit solvetic.com, pour cela nous trouvons son IP, très facilement en exécutant un ping nous l'obtiendrons.
Et maintenant nous allons exécuter :
iptables -A SORTIE -d 178.33.118.246 -j DROPComme on peut le voir, il suffit d'indiquer votre IP après le paramètre -ré.
5. Lister les règles qui existentCet exemple va essayer de lister les règles de filtrage que nous avons actuellement définies :
iptables -LNous voyons une image, nous n'avons que deux règles définies, comme nous le voyons ci-dessous :
Passons au sixième exemple, dans lequel nous utiliserons à nouveau la liste des règles.
6. Supprimer une règle spécifiqueIci, à partir des règles que nous avions dans l'exemple précédent, nous allons supprimer l'une des règles de sortie, dans ce cas la première qui apparaît, nous exécutons ce qui suit :
iptables -D SORTIE 1Et pour vérifier qu'il a bien été supprimé, nous utilisons l'exemple 5 :
Continuons avec plus.
7. Évitez d'être cingléNous ne voulons pas qu'ils nous envoient un ping, pour cela nous allons bloquer l'entrée du protocole ICMP.
iptables -A INPUT -p ICMP -j DROPCi-dessous, je laisse une image de ping avant d'exécuter la commande ci-dessus et après :
Nous pouvons voir que notre machine ne répond pas, car elle rejette les paquets ICMP. Si nous bloquons la sortie au lieu de l'entrée, nous exécuterons :
iptables -A SORTIE -p ICMP -j DROPLa même chose que dans l'image précédente se reproduirait. Pour tester j'ai fait 3 fois ping, si on exécute on peut voir le nombre de packages :
iptables -L -v
On voit qu'il met effectivement 3 dans l'image précédente.
8. Empêcher une IP de nous envoyer des donnéesNous allons appliquer une entrée, nous ne voulons pas qu'une certaine IP nous connecte, nous allons donc exécuter :
iptables -A INPUT -s 192.168.66.1 -j DROPRegardons un exemple un peu plus long.
9. Autoriser les sorties vers une plage d'adresses IPImaginez que vous vouliez uniquement accepter les sorties vers une plage d'adresses IP, mais rejeter le reste des sorties, nous devons exécuter :
Iptables -A SORTIE -d 192.168.0.0/24 -j ACCEPTER Iptables -A SORTIE -j SUPPRIMERNoterL'ordre d'exécution des règles compte, essayez cet exemple avec le réseau que vous souhaitez autoriser et faites une connexion, vous verrez que cela fonctionne, puis supprimez toutes les règles et exécutez les 2 phrases à l'envers, maintenant cela rejetterait les connexions .
Passons au dixième et dernier exemple.
10. Ouvrez le port 143 (imap)Nous allons ouvrir un port pour l'entrée de tous les paquets tcp, en l'occurrence 143 (il en serait de même pour le reste).
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPTDans cet exemple, nous voulions utiliser --dport, vous pouvez donc voir que nous pouvons utiliser ceci ou --le port de destination, on pourrait aussi utiliser --sport au lieu de --source-port.
Le tutoriel se termine ici, maintenant vous essayez d'appliquer d'autres règles, plus vous pratiquez, plus vite vous aurez lors de l'application des règles, et moins cela vous coûtera. Pour finir, nous laissons un tutoriel qui peut vous intéresser, ouvrir et fermer des ports dans Windows 10.