Apprenez à utiliser IpTable, le firewall Linux

iptables-firewall

Un firewall est un logiciel indispensable sur un serveur car il permet de gérer et limiter les connexions entrantes et sortantes.

Comme pour Windows, il existe de nombreux parefeux (firewall) sous Linux mais le plus communément utilisé est IpTables.

En effet, IpTables est disponible nativement sur les distributions Linux et il est relativement complet.

Nous allons donc voir les fonctions principales que l'on peut utiliser.

IANA nous explique les ports

IANA (Internet Assigned Numbers Authority) est l'autorité qui définit les ports des applications communes.

Sous Linux, vous pouvez ainsi voir l'ensemble de l'assignation des ports via la commande:

nano /etc/services

Vous verrez alors une liste de ports, leur protocol et le nom de l'application qui les utilisent:

ftp-data        20/tcp
ftp             21/tcp
fsp             21/udp          fspd
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp
telnet          23/tcp
smtp            25/tcp          mail
time            37/tcp          timserver
time            37/udp          timserver
rlp             39/udp          resource        # resource location
nameserver      42/tcp          name            # IEN 116

Maintenant que vous connaissez les principaux ports, vous pouvez utiliser IpTables pour en bloquer ou en autoriser certains.

Bloquer un port entrant avec IpTables

La syntaxe pour bloquer un port entrant est la suivante:

# bloquer un port entrant
/sbin/iptables -A INPUT -p tcp --destination-port {NUMERO_DE_PORT} -j DROP
 
# bloquer un port entrant sur l'interface eth0
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {NUMERO_DE_PORT} -j DROP
 
# bloquer un port entrant sur l'interface eth0 pour une adresse ip ou un réseau
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {NUMERO_DE_PORT} -s {ADRESSE_IP} -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {NUMERO_DE_PORT} -s {IP_OU_RESEAU} -j DROP

Ainsi pour bloquer le port 80 qui correspond au serveur HTTP, il faut utiliser la commande suivante:

/sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP

Puis il faut sauver les modifications:

/sbin/service iptables save

Petite astuce: pour bloquer le port 80 sauf pour l'ip 10.1.1.1, il faudra utiliser la commande suivante:

/sbin/iptables -A INPUT -p tcp -i eth1 -s ! 10.1.1.1 --dport 80 -j DROP

Bloquer un port sortant

De la même manière, pour bloquer un port sortant on utilisera la synxtaxe:

# bloquer un port sortant
/sbin/iptables -A OUTPUT -p tcp --dport {NUMERO_DE_PORT} -j DROP
 
# bloquer un port sortant sur l'interface eth0
/sbin/iptables -A OUTPUT -i eth0 -p tcp --dport {NUMERO_DE_PORT} -j DROP
 
# bloquer un port sortant sur l'interface eth0 pour une adresse ip ou un réseau
/sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {NUMERO_DE_PORT} -s {ADRESSE_IP} -j DROP
/sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {NUMERO_DE_PORT} -s {IP_OU_RESEAU} -j DROP

Par exemple, pour bloquer le port sortant 25 qui correspond au port smtp, on fera:

/sbin/iptables -A OUTPUT -p tcp --dport 25 -j DROP
/sbin/service iptables save

Pour bloquer le port 25 pour l'ip 10.1.1.1 uniquement on utilisera:

/sbin/iptables -A OUTPUT -p tcp -d 10.1.1.1 --dport 25 -j DROP
/sbin/service iptables save

Logguer les ports bloqués

Il peut être intéressant de savoir quels ports ont été bloqués et pour quelles adresses ip afin de superviser correctement son réseau:

# Logging #
/sbin/iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "PORT 80 DROP: " --log-level 7
/sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP

Un exemple concret: bloquer un cracker

Pour terminer, voilà un exemple pratique qui vous servira probablement. Il vous permet de bloquer un hacker qui lance de multiple requêtes UDP sur le port 161 (snmp) de votre serveur. Dans cet exemple, le cracker a l'ip 192.168.1.5

/sbin/iptables -A INPUT -s 192.168.1.5 -i eth1 -p udp -m state --state NEW -m udp --dport 161 -j DROP

Cette initiation à IpTables n'est qu'une entrée en la matière concernant les fonctionnalités offertes par ce firewall. Vous apprendez rapidement à configurer votre parefeu afin de sécuriser au maximum votre réseau.

4 Responses to Apprenez à utiliser IpTable, le firewall Linux

  1. […] Vous devrez ouvrir le port 25565 et le rediriger vers l’adresse ip de votre serveur (Pour connaître l’ip de celle-ci taper « ifconfig » et vous aurez l’ip de votre serveur) Pour pouvoir permettre au personnes extérieur à votre réseau local de ce connecter à votre serveur. (en général tous les port sont ouvert sur debian pour sécuriser cela je vous conseille d’utiliser  les règles iptable voir l’article ici) […]

  2. […] Vous devrez ouvrir le port 25565 et le rediriger vers l’adresse ip de votre serveur (Pour connaître l’ip de celle-ci taper « ifconfig » et vous aurez l’ip de votre serveur) Pour pouvoir permettre au personnes extérieur à votre réseau local de ce connecter à votre serveur. (en général tous les port sont ouvert sur debian pour sécuriser cela je vous conseille d’utiliser  les règles iptable voir l’article ici) […]

  3. […] Vous devrez ouvrir le port 25565 et le rediriger vers l’adresse ip de votre serveur (Pour connaître l’ip de celle-ci taper « ifconfig » et vous aurez l’ip de votre serveur) Pour pouvoir permettre au personnes extérieur à votre réseau local de ce connecter à votre serveur. (en général tous les port sont ouvert sur debian pour sécuriser cela je vous conseille d’utiliser  les règles iptable voir l’article ici) […]

  4. […] Vous devrez ouvrir le port 25565 et le rediriger vers l’adresse ip de votre serveur (Pour connaître l’ip de celle-ci taper « ifconfig » et vous aurez l’ip de votre serveur) Pour pouvoir permettre au personnes extérieur à votre réseau local de ce connecter à votre serveur. (en général tous les port sont ouvert sur debian pour sécuriser cela je vous conseille d’utiliser  les règles iptable voir l’article ici) […]

Leave a Reply

Your email address will not be published. Required fields are marked *