Dans ce tutoriel, nous allons vous montrer comment configurer un pare-feu avec iptables sur un VPS Linux exécutant Ubuntu ou CentOS comme système d'exploitation. Iptables est un outil d'administration pour le filtrage de paquets IPv4 et NAT et il est utilisé pour configurer et gérer les tables de règles de filtrage de paquets IPv4 dans le noyau Linux.
Configurer et configurer correctement un pare-feu est l'une des choses les plus importantes et cruciales que vous devez faire pour sécuriser votre serveur.
Avec iptables, plusieurs tables de correspondance de paquets différentes sont définies et chaque table peut contenir un certain nombre de chaînes intégrées ainsi que certaines chaînes définies par l'utilisateur. Les chaînes sont en fait des listes de règles qui correspondent à un ensemble de paquets et chaque règle spécifie ce qu'il faut faire avec le paquet correspondant.
Le tableau par défaut est le filter
table et contient les chaînes intégrées INPUT, FORWARD et OUTPUT. La chaîne INPUT est utilisée pour les paquets destinés aux sockets locaux, la chaîne FORWARD est utilisée pour les paquets acheminés via la boîte tandis que la chaîne OUTPUT est utilisée pour les paquets générés localement.
Connectez-vous à votre serveur via SSH et listez les règles définies dans une chaîne spécifique en utilisant la syntaxe suivante :
sudo iptables -L CHAIN
Remplacez CHAIN par l'une des chaînes intégrées pour voir les règles définies. Si aucune chaîne n'est sélectionnée, toutes les chaînes seront répertoriées dans la sortie.
sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Les règles de pare-feu spécifient ce qu'il faut faire avec un certain paquet s'il correspond à certains critères et si le paquet ne correspond pas aux critères, la prochaine règle de pare-feu définie dans la chaîne sera examinée. C'est une chose très importante à savoir lors de la définition des règles de pare-feu car vous pouvez facilement vous verrouiller hors de votre serveur si vous définissez la règle qui accepte les paquets de votre adresse IP locale après la règle de blocage.
Les cibles que vous pouvez utiliser pour les règles de pare-feu sont ACCEPT, DROP, QUEUE et RETURN. ACCEPT laissera passer le paquet, DROP abandonnera le paquet, QUEUE transmettra le paquet à l'espace utilisateur tandis que RETURN arrêtera le paquet traversant la chaîne actuelle et reprendra à la règle suivante dans la chaîne précédente. La politique de chaîne par défaut définira ce qu'il faut faire avec un paquet s'il ne correspond pas à certaines règles de pare-feu. Comme vous pouvez le voir dans la sortie de la première commande, la stratégie par défaut pour toutes les chaînes intégrées est définie sur ACCEPTER. ACCEPTER laissera passer le paquet donc il n'y a pas de protection.
Avant d'ajouter des règles spécifiques, ajoutez la suivante :
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Cela empêchera les connexions déjà établies d'être interrompues et votre session SSH actuelle restera active.
Ensuite, ajoutez des règles pour autoriser le trafic sur votre interface de bouclage :
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT
Ensuite, autorisez l'accès à votre serveur via SSH pour votre adresse IP locale afin que vous seul puissiez accéder au serveur :
sudo iptables -A INPUT -s 111.111.111.111 -p tcp --dport 22 -j ACCEPT
Où 111.111.111.111
est votre adresse IP locale et 22
est le port d'écoute de votre démon SSH. Si votre adresse IP locale change dynamiquement, il est préférable d'omettre le -s 111.111.111.111
partie et utilisez une méthode différente pour protéger le service SSH du trafic indésirable.
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Ensuite, autorisez l'accès à vos services importants comme le serveur HTTP/HTTPS :
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
[ecko_alert color="blue"]Coincé quelque part ? Obtenez un VPS de notre part et nous sécuriserons correctement votre serveur et configurerons un pare-feu pour vous, gratuitement ![/ecko_alert]
Maintenant, listez les règles actuelles et vérifiez si tout est OK. Pour une sortie détaillée, vous pouvez utiliser la commande suivante :
sudo iptables -nvL
Si vous souhaitez autoriser l'accès à d'autres services, il est préférable de le faire maintenant. Une fois que vous avez terminé, vous pouvez définir la stratégie par défaut de la chaîne intégrée INPUT sur DROP.
sudo iptables -P INPUT -j DROP
Cela supprimera tout paquet qui ne correspond pas aux critères des règles du pare-feu. Le résultat final devrait ressembler à celui-ci :
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Cependant, si vous redémarrez maintenant le serveur, vous perdrez toutes les règles de pare-feu que vous avez définies, il est donc très important de rendre les règles permanentes.
Si vous utilisez un VPS Ubuntu, vous devez installer un package supplémentaire à cet effet. Allez-y et installez le package requis à l'aide de la commande suivante :
sudo apt-get install iptables-persistent
Sur Ubutnu 14.04 vous pouvez enregistrer et recharger les règles de pare-feu à l'aide des commandes ci-dessous :
sudo /etc/init.d/iptables-persistent save sudo /etc/init.d/iptables-persistent reload
Sur Ubuntu 16.04 utilisez plutôt les commandes suivantes :
sudo netfilter-persistent save sudo netfilter-persistent reload
Si vous utilisez un VPS CentOS, vous pouvez enregistrer les règles de pare-feu à l'aide de la commande ci-dessous :
service iptables save
Bien sûr, vous n'avez rien à faire si vous utilisez l'un de nos services d'hébergement VPS entièrement géré, auquel cas vous pouvez simplement demander à nos administrateurs Linux experts de vous aider à configurer vos iptables sur votre serveur. Ils sont disponibles 24h/24 et 7j/7 et prendront immédiatement en charge votre demande.
PS . Si vous avez aimé cet article sur Comment configurer un pare-feu avec iptables sur Ubuntu et CentOS, partagez-le avec vos amis sur les réseaux sociaux en utilisant les boutons ci-dessous ou laissez simplement un commentaire dans la section des commentaires. Merci.