# IPTABLES

Pour commencer voici un script que je met par défaut sur tout serveur neuf. Après et au besoin, je le modifie.

Dans les lignes suivantes on retrouve "eth0", certains serveurs ne font pas référence a leur carte réseau principale avec eth0, exemple avec les vps d'OVH. Appliquer ce script bêtement et on peut se retrouver sans accés ssh

#!/bin/bash
## Règles iptables.

## On flush iptables.
iptables -F

## On supprime toutes les chaînes utilisateurs.
iptables -X

## On drop tout le trafic entrant.
iptables -P INPUT DROP

## On drop tout le trafic sortant.
iptables -P OUTPUT DROP

## On drop le forward.
iptables -P FORWARD DROP

## On drop les scans XMAS et NULL.
iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

## Dropper silencieusement tous les paquets broadcastés.
iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP

## Permettre à une connexion ouverte de recevoir du trafic en entrée.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Permettre à une connexion ouverte de recevoir du trafic en sortie.
iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT

## On accepte la boucle locale en entrée.
iptables -I INPUT -i lo -j ACCEPT

#on accepte le port 22 si on veut pouvoir se reconnecter
iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT

#on accepte le ping si on le souhaite
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

exit 0

Exemple d'autres lignes trés utiles:

#on accepte le port 80 pour le web/http
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT

#on accepte le port 443 pour le ssl/https
iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT

Des regles pour la mise en place d'un teamspeak

# Teamspeak Licence
iptables -t filter -A INPUT -p tcp --dport 2008 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 2008 -j ACCEPT

# Teamspeak Voix par défaut
iptables -t filter -A INPUT -p udp --dport 9987 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 9987 -j ACCEPT

# Teamspeak ServerQuery
iptables -t filter -A INPUT -p tcp --dport 10011 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 10011 -j ACCEPT

# Teamspeak File Transfer
iptables -t filter -A INPUT -p tcp --dport 30033 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 30033 -j ACCEPT

Et comment faire pour que ce script se lance au démarrage?

Et bien sous Debian en tout cas, je copie mon script firewall.sh dans le repertoire /etc/network/if-pre-up.d tout en lui donnait les droits d'execution avec chmod +x firewall.sh. Attention, avec cette méthode il se met en place avant le "up" de la carte réseau, donc faites un test de votre script avant en l’exécutant simplement suivi d'un déco/reco. Cela vous permettra de récupérer votre serveur avec un simple reboot dans votre interface de gestion.

source: https://doc.ubuntu-fr.org/iptables