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 :
*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 ?
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 ?
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 ?