Configuration et exemples faciles dIPTables sur Ubuntu 16.04

introduction

iptablesest un outil puissant utilisé pour configurer le pare-feu intégré du noyau Linux. Il est préinstallé sur la plupart des distributions Ubuntu, mais si vous utilisez une version personnalisée d'Ubuntu ou que vous exécutez dans un conteneur, vous devrez probablement l'installer manuellement.

sudo apt-get install iptables iptables-persistent

Après l'installation, si vous êtes invité à enregistrer vos règles actuelles, cela n'a pas d'importance pour le moment car vous allez supprimer ou créer de nouvelles règles plus tard.

Conseils

Vous pouvez utiliser la netcatcommande (sur un autre ordinateur que votre serveur) pour tester quels ports sont ouverts ou fermés.

nc -z -w5 -v SERVER_IP PORT
  • nc est la commande netcat.
  • -z il suffit d'envoyer un paquet sans charge utile.
  • -w5 attendez jusqu'à 5 secondes pour une réponse.
  • -v mode verbeux.
  • Remplacez SERVER_IPpar votre adresse de serveur.
  • Remplacez PORTpar le port que vous souhaitez tester s'il est ouvert (par exemple 22).

Sur votre serveur, vous pouvez utiliser la netstatcommande pour voir quels ports écoutent actuellement les connexions.

sudo netstat -tulpn

Remarque: Bien qu'il netstatsoit pratique de trouver les ports avec lesquels vous souhaitez travailler, vous devez connaître les applications que vous avez actuellement installées sur votre serveur et quels ports sont à l'écoute, vous n'avez pas à autoriser tous les ports que vous trouvez dans la netstatsortie .

Syntaxe

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTajouter une règle à la INPUTchaîne, une chaîne est un groupe de règles, celles que nous utilisons le plus dans ce guide seront INPUT, OUTPUTet PREROUTING.
  • -p tcpdéfini tcpcomme le protocole auquel cette règle s'appliquera, vous pouvez également utiliser d'autres protocoles tels que udp, icmpou all.
  • -m tcputilisez le tcpmodule. iptablesprend en charge des fonctionnalités supplémentaires via des modules, dont certains sont déjà préinstallés iptableset d'autres, comme le geoipmodule.
  • --dport 22les commandes commençant par --indiquent des options supplémentaires pour le module utilisé précédemment, dans ce cas, nous dirons au tcpmodule de ne s'appliquer qu'au port 22.
  • -m geoiputilisez le geoipmodule. Il limitera les paquets par pays (plus d'informations à l'étape 5).
  • --src-cc PEdites au geoipmodule de limiter les paquets entrants à ceux qui viennent du Pérou. Pour plus de codes de pays, recherchez ISO 3166 country codessur Internet.
  • -j ACCEPTl' -jargument indique iptablesce qu'il faut faire si un paquet correspond aux contraintes spécifiées dans les arguments précédents. Dans ce cas, il s'agira de ACCEPTces paquets, d'autres options le sont REJECT, DROPet plus encore. Vous pouvez trouver plus d'options en recherchant iptables jump targetssur Internet.

1. Bases

Liste toutes les règles.

sudo iptables -L

Liste toutes les commandes utilisées pour créer les règles actuellement utilisées, utiles pour modifier ou supprimer des règles.

sudo iptables -S

Pour supprimer une règle spécifique, choisissez une règle sudo iptables -Set remplacez-la -Apar -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Liste toutes les règles numérotées de la INPUTchaîne.

sudo iptables -L INPUT --line-numbers

Supprimez une règle numérotée.

sudo iptables -D INPUT 2

Pour effacer toutes les règles.

sudo iptables -F

Avertissement: vous risquez de perdre la connexion si vous êtes connecté par SSH .

Effacer uniquement les règles de la OUTPUTchaîne.

sudo iptables -F OUTPUT

2. Créez des règles initiales

Autoriser SSHsur l' eth0interface

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 appliquer la règle à une interface spécifique, pour permettre à toute interface de supprimer cette commande.

Pour limiter les paquets entrants à une adresse IP spécifique (par exemple 10.0.3.1/32).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 spécifie un IP / sous-réseau à partir duquel autoriser les connexions.

Définissez les règles de chaîne par défaut.

Avertissement: avant de continuer, assurez-vous d'avoir appliqué les règles SSH correctes si vous travaillez sur un serveur distant .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP refuse tous les paquets entrants (c'est-à-dire que personne ne pourra se connecter à vos serveurs en cours d'exécution tels qu'Apache, SQL, etc.).
  • -P FORWARD DROP refuse tous les paquets transférés (c'est-à-dire lorsque vous utilisez votre système comme routeur).
  • -P OUTPUT ACCEPTautorise tous les paquets sortants (c'est-à-dire lorsque vous effectuez une HTTPdemande).

Autorisez tout le trafic sur l'interface de bouclage ( recommandé ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Rendre les règles persistantes

Enregistrez les iptablesrègles actuelles .

sudo netfilter-persistent save
sudo netfilter-persistent reload

Si vous exécutez à l'intérieur d'un conteneur, la netfilter-persistentcommande ne fonctionnera probablement pas, vous devez donc reconfigurer le iptables-persistentpackage.

sudo dpkg-reconfigure iptables-persistent

4. Autoriser les connexions sortantes

Autorisez les requêtes DNS.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Utilisez le statemodule pour autoriser RELATEDet ESTABLISHEDsortir les paquets.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Autorisez les ports souhaités; dans ce cas, les HTTPports.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Plus de ports que vous voudrez peut-être utiliser.

  • FTP: TCP au port 21
  • HTTPS: TCP sur le port 443
  • DHCP: udp au port 67
  • NTP: udp au port 123

Remarque: Si vous souhaitez autoriser, apt-getil peut être nécessaire d'autoriser FTPetHTTPS .

Autoriser le trafic renvoyé uniquement pour RELATEDet déjà les ESTABLISHEDconnexions ( recommandé car parfois une communication bidirectionnelle est requise).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Autres règles utiles

Autorisez les requêtes ping de l'extérieur.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Transférer le trafic sur le eth0port 2200vers 10.0.3.21:22(utile si vous souhaitez exposer un serveur SSH qui s'exécute à l'intérieur d'un conteneur).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Si vous vous connectez avec succès à votre serveur en utilisant SSH, une connexion persistante sera créée (c.-à-d. Aucune nouvelle connexion même si vous êtes connecté pendant plus d'une heure). Si vous échouez et essayez de vous reconnecter, une nouvelle connexion sera créée. Cela bloquera les tentatives de connexion SSH continues en limitant les nouvelles connexions par heure.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Redirigez toutes les demandes sur le port 443vers le port 4430(utile si vous souhaitez vous lier au port 443sans root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 l'interface réseau.
  • -m geoip module de bloc de pays (voir étape 5).

Avertissement: ne l'utilisez pas lo, le système d'exploitation supprimera tous les paquets redirigés vers l'interface de bouclage .

5. Autoriser ou bloquer des pays entiers

5.1 Installer xtables-addons

Vous pouvez installer le xtables-addonsmodule en utilisant différentes méthodes, n'hésitez pas à utiliser la méthode d'installation qui vous convient le mieux.

  • Installez en utilisant apt-get.

    sudo apt-get install xtables-addons-common
    
  • Installez en utilisant module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Installez depuis la source.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Créer une base de données "pays".

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Redémarrez votre système.

sudo reboot

Après xtables-addonsavoir été installé avec succès, après le premier redémarrage, exécutez depmodsinon le blocage par pays ne fonctionnera pas correctement (cela n'est requis que pour la première fois).

sudo depmod 

Créez un script à /etc/cron.monthly/geoip-updaterpour mettre à jour la geoipbase de données mensuellement.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Rendez /etc/cron.monthly/geoip-updaterexécutable.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Exemples de règles

_Remarque: Si vous recevez une iptables: No chain/target/match by that nameerreur lorsque vous essayez d'appliquer une geoiprègle, il est possible qu'elle xtables-addonsn'ait pas été installée correctement. Essayez une autre méthode d'installation.

Bloquer tous les paquets entrants en provenance de Chine, Hong Kong, Russie et Corée.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Autorisez les paquets entrants sur le port 80de partout, sauf dans les pays ci-dessus.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Autorisez les paquets entrants sur l' ens3interface sur le port 22uniquement du Pérou (n'hésitez pas à choisir le code de pays dont vous souhaitez accepter les paquets, par exemple USpour les États-Unis).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Autoriser les paquets entrants sur le port 443uniquement du Pérou.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.