[OpenVPN] ... et iptables

Applications, problèmes de configuration réseau
booga
Hankyu
Messages : 39
Inscription : dim. 13 nov. 2011, 19:52

[OpenVPN] ... et iptables

Message par booga »

Bonjour,

Je souhaite ajouter au pare-feu de mon serveur des regles concernant OpenVPN. En me référant à la doc, je vois qu'il faut ajouter ces règles :

Code : Tout sélectionner

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT
Toutefois, il ne précise pas à quel endroit les positionner.
J'ai suivi la doc également et mes règles Iptables correspondent plus ou moins à celles-ci :

Code : Tout sélectionner

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp --dport 80 -j ACCEPT
-A TCP -p tcp --dport 443 -j ACCEPT
-A TCP -p tcp --dport 22 -j ACCEPT
-A TCP -p tcp --dport 53 -j ACCEPT
-A UDP -p udp --dport 53 -j ACCEPT
COMMIT
Où dois-je positionner les règles openVPN ? (J'imagine que cela compte dans l'ordre de traitement des paquets)
Question subsidiaire : la règle ssh est-elle correctement placée ?

Merci :)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [OpenVPN] ... et iptables

Message par benjarobin »

Bonjour, tes règles existantes me semblent "foireuses". Peux tu décrires le filtrage que tu veux mettre en place ? Quel genre de filtrage veux tu mettre en sortie ? Pourquoi voudrais tu bloquer un port de sortie ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
booga
Hankyu
Messages : 39
Inscription : dim. 13 nov. 2011, 19:52

Re: [OpenVPN] ... et iptables

Message par booga »

Voici un nouvel essai ;) Sont-elles moins foireuses ?

Code : Tout sélectionner

iptables -N TCP
iptables -N UDP
iptables -N IN_SSH
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j IN_SSH
iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
-------------------------------------------
iptables -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 3 --seconds 10 -j DROP
iptables -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 4 --seconds 1800 -j DROP 
iptables -A IN_SSH -m recent --name sshbf --set -j ACCEPT
-------------------------------------------
iptables -A TCP -p tcp --dport 80 -j ACCEPT
iptables -A TCP -p tcp --dport 443 -j ACCEPT
#iptables -A TCP -p tcp --dport 22 -j ACCEPT
iptables -A UDP -p udp --dport 53 -j ACCEPT
---------------------------------------
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
Sinon ce sont des regles pour un firewall sur un vps donc un truc de base...
booga
Hankyu
Messages : 39
Inscription : dim. 13 nov. 2011, 19:52

Re: [OpenVPN] ... et iptables

Message par booga »

Je suis tombé par hasard, ce matin, sur cet article. J'en ai profité pour remanier les régles iptables :

Code : Tout sélectionner

iptables -N TCP
iptables -N UDP
# Déclaration des chaînes ajoutant un nouveau bannissement
iptables -N SSH_BAN_10_MINUTES
iptables -N SSH_BAN_1_DAY
iptables -N SSH_BAN_1_HOUR
iptables -N SSH_BAN_1_WEEK
# Déclaration des chaînes vérifiant les bannissements en cours
iptables -N SSH_BANNED_10_MINUTES
iptables -N SSH_BANNED_1_DAY
iptables -N SSH_BANNED_1_HOUR
iptables -NSSH_BANNED_1_WEEK

iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh
iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
-------------------------------------------

# Si l'adresse IP est déjà bannie, blocage de la connexion
# Le paramètre --reap permet de nettoyer automatiquement les listes en supprimant les adresses IP qui n'ont envoyé
# aucun paquet pendant la durée de surveillance
iptables -A INPUT -m recent --rcheck --seconds 604800 --reap --hitcount 1 --name ssh_banned_1_week -j SSH_BANNED_1_WEEK
iptables -A INPUT -m recent --rcheck --seconds 86400 --reap --hitcount 1 --name ssh_banned_1_day -j SSH_BANNED_1_DAY
iptables -A INPUT -m recent --rcheck --seconds 3600 --reap --hitcount 1 --name ssh_banned_1_hour -j SSH_BANNED_1_HOUR
iptables -A INPUT -m recent --rcheck --seconds 600 --reap --hitcount 1 --name ssh_banned_10_minutes -j SSH_BANNED_10_MINUTES

# Ajout d'un bannissement si une limite du nombre de nouvelles connexions est atteinte :
#   12 connexions en une journée : Blocage pendant une semaine
#   8 connexions en une heure : Blocage pendant une journée
#   4 connexions en dix minutes : Blocage pendant une heure
#   2 connexions en une minute : Blocage pendant dix minutes
# Le paramètre --reap n'est placé que sur la règle définissant la durée la plus longue
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 86400 --reap --hitcount 13 --name ssh -j SSH_BAN_1_WEEK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 3600 --hitcount 9 --name ssh -j SSH_BAN_1_DAY
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 600 --hitcount 5 --name ssh -j SSH_BAN_1_HOUR
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 3 --name ssh -j SSH_BAN_10_MINUTES

# Si l'adresse IP n'est pas bannie et n'a pas atteint de limite, le paquet est accepté
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# Règles d'ajout d'un nouveau bannissement
iptables -A SSH_BAN_1_WEEK -m recent --set --name ssh_banned_1_week -j SSH_BANNED_1_WEEK
iptables -A SSH_BAN_1_DAY -m recent --set --name ssh_banned_1_day -j SSH_BANNED_1_DAY
iptables -A SSH_BAN_1_HOUR -m recent --set --name ssh_banned_1_hour -j SSH_BANNED_1_HOUR
iptables -A SSH_BAN_10_MINUTES -m recent --set --name ssh_banned_10_minutes -j SSH_BANNED_10_MINUTES

# Règles de blocage d'un utilisateur banni
# Le paramètre --update conserve la date du dernier paquet reçu, pour réinitialiser la durée du bannissement
iptables -A SSH_BANNED_1_WEEK -m recent --update --name ssh_banned_1_week -j DROP
iptables -A SSH_BANNED_1_DAY -m recent --update --name ssh_banned_1_day -j DROP
iptables -A SSH_BANNED_1_HOUR -m recent --update --name ssh_banned_1_hour -j DROP
iptables -A SSH_BANNED_10_MINUTES -m recent --update --name ssh_banned_10_minutes -j DROP

-------------------------------------------
iptables -A TCP -p tcp --dport 80 -j ACCEPT
iptables -A TCP -p tcp --dport 443 -j ACCEPT
iptables -A UDP -p udp --dport 53 -j ACCEPT
---------------------------------------
#OpenVPN
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
Z'en pensez quoi ?

Question subsidiaire : l'utlisation de sshl aurait-elle un impact sur ces regles ?
Répondre