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

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Installation de McMyAdmin sur Ubuntu 14.10

Installation de McMyAdmin sur Ubuntu 14.10

McMyAdmin est un panneau de contrôle de serveur Minecraft utilisé pour administrer votre serveur. Bien que McMyAdmin soit gratuit, il existe plusieurs éditions, dont certaines sont pai

Configurer un serveur TeamTalk sous Linux

Configurer un serveur TeamTalk sous Linux

TeamTalk est un système de conférence qui permet aux utilisateurs davoir des conversations audio / vidéo de haute qualité, un chat textuel, de transférer des fichiers et de partager des écrans. Cest moi

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Vous utilisez un système différent? Introduction CyberPanel est lun des premiers panneaux de contrôle du marché à la fois open source et utilisant OpenLiteSpeed. Quest-ce que

Installer phpBB avec Apache sur Ubuntu 16.04

Installer phpBB avec Apache sur Ubuntu 16.04

PhpBB est un programme de babillard open source. Cet article vous montrera comment installer phpBB sur un serveur Web Apache sur Ubuntu 16.04. Cétait écrit

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Avoir un seul utilisateur, qui est root, peut être dangereux. Permet donc de résoudre ce problème. Vultr nous donne la liberté de faire ce que nous voulons avec nos utilisateurs et nos serveurs

Installer eSpeak sur CentOS 7

Installer eSpeak sur CentOS 7

Vous utilisez un système différent? ESpeak peut générer des fichiers audio de synthèse vocale (TTS). Ceux-ci peuvent être utiles pour de nombreuses raisons, telles que la création de votre propre Turin

Comment installer Thelia 2.3 sur CentOS 7

Comment installer Thelia 2.3 sur CentOS 7

Vous utilisez un système différent? Thelia est un outil open source pour la création de sites Web de commerce électronique et la gestion de contenu en ligne, écrit en PHP. Code source Thelia i

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Vous utilisez un système différent? Fuel CMS est un système de gestion de contenu basé sur CodeIgniter. Son code source est hébergé sur GitHub. Ce guide vous montrera comment

Comment configurer loptimisation TCP sous Linux

Comment configurer loptimisation TCP sous Linux

Introduction Vous avez des problèmes de connectivité lorsque des visiteurs dautres pays accèdent à votre site Web? Vous vous demandez pourquoi la vitesse de téléchargement de votre Foreig

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Comment installer Pip sur Linux

Comment installer Pip sur Linux

Pip est un outil de gestion des packages Python. Lutilisation dun gestionnaire de packages permet une gestion efficace de votre serveur. Dans ce tutoriel, je vais expliquer comment t

Comment déployer Google BBR sur CentOS 7

Comment déployer Google BBR sur CentOS 7

BBR (Bottleneck Bandwidth and RTT) est un nouvel algorithme de contrôle de congestion qui est contribué à la pile TCP du noyau Linux par Google. Avec BBR en place,

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Icinga 2 est un système de surveillance des ressources réseau open source largement utilisé, et Icinga Web 2 est linterface Web officielle pour Icinga 2. Dans ce didacticiel,

Comment installer YOURLS sur CentOS 7

Comment installer YOURLS sur CentOS 7

YOURLS (Your Own URL Shortener) est une application open source de raccourcissement dURL et danalyse de données. Dans cet article, nous couvrirons le processus dinstallation

Comment activer TLS 1.3 dans Apache sur Fedora 30

Comment activer TLS 1.3 dans Apache sur Fedora 30

Vous utilisez un système différent? TLS 1.3 est une version du protocole TLS (Transport Layer Security) qui a été publiée en 2018 en tant que norme proposée dans la RFC 8446

Configurer un Chroot sur Debian

Configurer un Chroot sur Debian

Cet article vous apprendra comment configurer une prison chroot sur Debian. Je suppose que vous utilisez Debian 7.x. Si vous utilisez Debian 6 ou 8, cela peut fonctionner, bu

Comment installer PiVPN sur Debian

Comment installer PiVPN sur Debian

Introduction Un moyen facile de configurer un serveur VPN sur Debian est avec PiVPN. PiVPN est un installateur et un wrapper pour OpenVPN. Il crée des commandes simples pour vous t

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Vous utilisez un système différent? Alfresco Community Edition est une version open source des services de contenu Alfresco. Il est écrit en Java et utilise PostgreSQL t

Configurer Nginx-RTMP sur CentOS 7

Configurer Nginx-RTMP sur CentOS 7

Vous utilisez un système différent? RTMP est idéal pour diffuser du contenu en direct. Lorsque RTMP est associé à FFmpeg, les flux peuvent être convertis en différentes qualités. Vultr i

Comment générer des clés SSH?

Comment générer des clés SSH?

Découvrez comment générer une clé SSH pour accéder à votre serveur sans mot de passe. Suivez nos étapes faciles à comprendre pour créer et ajouter des clés SSH.

Créer un serveur de messagerie avec hMailServer sous Windows

Créer un serveur de messagerie avec hMailServer sous Windows

Découvrez comment créer un serveur de messagerie avec hMailServer sous Windows pour recevoir des e-mails facilement.

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.