iptables, redirection de port

gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

yop,

tite question:

J'ai une vm routeur avec iptables, je souhaite rediriger le port 20000 vers une ip définie, et je fais ca:

iptables -A FORWARD -p tcp --dport 20000 -d @IP -j ACCEPT

sauf que je peux pas prendre la main par ssh sur le poste en utilisant l'adresse ip de la vm routeur et le port redirigé.
J'ai bien changé le port dans sshd sur la 2ème vm et relancé le service.

je charge les module suivant avant d'appliquer mes règles de fw:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat

une idée?
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

je peux pas prendre la main sur une vm depuis le routeur mais depuis une autre vm sur une vm du même sous réseau ca passe.

je dois avoir une cagade au niveau du chargement des modules ou un truc du genre, je cherche.
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par Zedoune »

J'ai fait une fonction pour rediriger des ports dans mon script

Code : Tout sélectionner


function redirect {
        IP=$1
        SPORT=$2 # port externe
        PORT=$3  # port de la VM
        iptables -t nat -A PREROUTING -i eth0 -p tcp --dport $SPORT -j DNAT --to-destination $IP:$PORT
        iptables -A FORWARD -p tcp -i eth0 -o dummy0 -d $IP --dport $PORT --sport $SPORT -m state --state NEW -j ACCEPT
}
Utilisation dans le script shell

Code : Tout sélectionner

redirect 192.168.1.10 30010 22 
redirect 192.168.1.20 30020 22
dummy0 c'est une interface réseau interne entre les VM
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

j'avais pas le -i -o oO

je test ca :jap:
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

bon ca me prend le choux cette affaire.

voila la situation:

j'ai une vm sous debian qui fait routeur avec iptables dont voici le fichier:

[cpp]#!/usr/bin/env bash
# Firewall script

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat

#Vide les tables
iptables -F
iptables -X

#Strategie par defaut
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#LOG des paquets
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
iptables -A OUTPUT -j LOG

#Creation d'une chaine
iptables -N LOG_REJECT_SMTP
iptables -A LOG_REJECT_SMTP -j LOG --log-prefix ' SMTP REJECT PAQUET : '
iptables -A LOG_REJECT_SMTP -j DROP

# Anti-Taiwanais
iptables -A INPUT -i eth0 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth0 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth0 -s 168.95.0.0/16 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth2 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth2 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth2 -s 168.95.0.0/16 -j LOG_REJECT_SMTP

#Protection DDOS
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

#Ne pas casser les connexion deja etablies
iptables -A OUTPUT -m state --state established,related -j ACCEPT

#Accepte le ping
iptables -A INPUT -p icmp -j ACCEPT

#Connexion boucle locale
iptables -A INPUT -i lo -j ACCEPT

#Acceptation ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#Rate limite SSH
iptables -I INPUT 1 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --update --seconds 60 --hitcount 6 -j REJECT
iptables -I INPUT 2 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --set

#Acceptation dns
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

#Bloque tout le reste
iptables -A INPUT -i eth0 -j DROP

exit 0
[/cpp]

qui a 3 interfaces: eth 0 (212.81....) et eth2 (212.83....) en externe, et eth1 (192.169.20.65) en interne.

mes 4 vm internes ont comme passerelle eth1, elles pinguent toutes les interfaces du routeur que ce soit eth1 comme les deux externes.
Par contre, elles ne pinguent rien d'autre.
Par exemple 8.8.8.8 ca ping pas.

ce que je pige pas c'est: si elles pinguent les interfaces externes du routeur, elles devraient pinquer le reste nan?
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par Zedoune »

t'as ajouté l'ip LAN du routeur pour dire que c'était la route par défaut ?
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

ouaip les vm l'ont en gateway, je vais tester en ajoutant la route

edit: si elles avaient pas la route, elle ne pourrait pas pinguer les interfaces externe nan?
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

Voila l'archi que je veux réaliser:

Image
Avatar de l’utilisateur
dsebire
Messages : 13160
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

iptables, redirection de port

Message par dsebire »

euh.... manque le routage dans ton iptables ;)

iptables -t nat -A POSTROUTING -s 192.168.20.64/26 -j MASQUERADE

un peu de doc: http://www.linux-france.org/prj/edu/arc ... 62s03.html
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par Zedoune »

c'est vraiment pourris iptables
Avatar de l’utilisateur
dsebire
Messages : 13160
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

iptables, redirection de port

Message par dsebire »

non, ça fait exactement ce que tu lui demande. si t'oublie un morceau, tant pis pour toi.
perso je prefere ça a un truc qui fait tout a ta place et ou tu maitrise pas la moitié...
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par Zedoune »

packet filter c'est plus clair :D
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

merci dsebire je regarde ca :jap:
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

je rajoute ca et je test:

[cpp]#Routage general
iptables -t nat -A POSTROUTING -s 192.168.20.64/26 -j MASQUERADE

#Routage dedsrv-0001
iptables -A INPUT -p tcp --dport 19484 -j ACCEPT
iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp --dport 19484 --to-destination 192.168.20.66
iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 19484 -d 192.168.20.66[/cpp]
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par Zedoune »

alors ? :D
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

j'ai mis que la ligne de routage général, pour l'instant ca à l'air d'être bon, je test ^^
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

en mettant ca:

[cpp] #!/usr/bin/env bash
# Firewall script
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat
#Vide les tables
iptables -F
iptables -X
#Strategie par defaut
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#LOG des paquets
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
iptables -A OUTPUT -j LOG
#Creation d'une chaine
iptables -N LOG_REJECT_SMTP
iptables -A LOG_REJECT_SMTP -j LOG --log-prefix ' SMTP REJECT PAQUET : '
iptables -A LOG_REJECT_SMTP -j DROP
# Anti-Taiwanais
iptables -A INPUT -i eth0 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth0 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth0 -s 168.95.0.0/16 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth2 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth2 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth2 -s 168.95.0.0/16 -j LOG_REJECT_SMTP
#Protection DDOS
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
#Ne pas casser les connexion deja etablies
iptables -A OUTPUT -m state --state established,related -j ACCEPT
#Accepte le ping
iptables -A INPUT -p icmp -j ACCEPT
#Connexion boucle locale
iptables -A INPUT -i lo -j ACCEPT
#Acceptation ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#Rate limite SSH
iptables -I INPUT 1 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --update --seconds 60 --hitcount 6 -j REJECT
iptables -I INPUT 2 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --set
#Acceptation dns
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
#Routage general
iptables -t nat -A POSTROUTING -s 192.168.20.64/26 -j MASQUERADE
#Bloque tout le reste
iptables -A INPUT -i eth0 -j DROP
exit 0[/cpp]

ca route que dalle car une vm dans le réseau privé ne peut pas sortir.

Je pense que j'ai un truc trop restrictif ^^

le truc bizarre c'est que le fichier suivant lui fonctionnait bien dans une autre archie:

[cpp]#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat

#Vide les tables
iptables -F
iptables -X

#Strategie par defaut
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#Accepte le ping
iptables -A INPUT -p icmp -j ACCEPT

iptables -A FORWARD -m state --state established,related -j ACCEPT

#Accepte les connexions ssh
iptables -A INPUT -p tcp --dport ssh -s 10.10.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -s 172.16.0.64/26 -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j DROP

#Connexion boucle locale
iptables -A INPUT -i lo -j ACCEPT

#NAT serveur web
iptables -t nat -A POSTROUTING -o eth0:0 -s 172.16.0.67 -j SNAT --to-source 10.10.86.1
iptables -t nat -A PREROUTING -i eth0:0 -d 10.10.86.1 -j DNAT --to-destination 172.16.0.67

#NAT serveur messagerie
iptables -t nat -A POSTROUTING -o eth0:1 -s 172.16.0.66 -j SNAT --to-source 10.10.86.2
iptables -t nat -A PREROUTING -i eth0:1 -d 10.10.86.2 -j DNAT --to-destination 172.16.0.66

#Acces ssh messagerie
iptables -A FORWARD -p tcp -i eth0:1 -d 10.10.86.2 --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0:1 -d 10.10.86.2 --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0:1 -d 10.10.86.2 --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0:1 -d 10.10.86.2 --dport 143 -j ACCEPT

#Acces ssh web
iptables -A FORWARD -p tcp --dport 22 -d 172.16.0.67 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -d 172.16.0.67 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -d 172.16.0.67 -j ACCEPT
iptables -A FORWARD -p tcp --dport 20:21 -d 172.16.0.67 -j ACCEPT

#Bloque tout le reste
iptables -A INPUT -i eth0 -j DROP

exit 0[/cpp]
Avatar de l’utilisateur
dsebire
Messages : 13160
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

iptables, redirection de port

Message par dsebire »

regarde tes Policy par defaut ;)
dans un cas, tu drop, dans l'autre tu accepte.
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

on est d'accord, mais normalement, si je drop et que j'autorise après le routage, ca devrait passer nan?
Avatar de l’utilisateur
dsebire
Messages : 13160
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

iptables, redirection de port

Message par dsebire »

oui, mais essaie sans, ya pt'etre un truc autre qui coince.
fais par etape, commence par etre trop permissif, tu ferme au fur et a mesure.
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

J'ai ca en simplifié et pareil:

[cpp] #!/usr/bin/env bash
# Firewall script
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat

#Vide les tables
iptables -F
iptables -X

#Strategie par defaut
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#LOG des paquets
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
iptables -A OUTPUT -j LOG

#Ne pas casser les connexion deja etablies
iptables -A OUTPUT -m state --state established,related -j ACCEPT

#Accepte le ping
iptables -A INPUT -p icmp -j ACCEPT

#Connexion boucle locale
iptables -A INPUT -i lo -j ACCEPT

#Acceptation ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#Rate limite SSH
iptables -I INPUT 1 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --update --seconds 60 --hitcount 6 -j REJECT
iptables -I INPUT 2 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --set

#Acceptation dns
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

exit 0[/cpp]

l'installe de debian trouve pas les miroires, par contre un ping passe.

La je teste sans le chargement des modules au boot pour voir.
sinon doit y avoir une cagade au niveau DNS car j'ai pas de résolution de nom.

Toute mes vm ont comme DNS principale 8.8.8.8, la pour essayer j'ai tenté de mettre la vm routeur et pareil.
Avatar de l’utilisateur
dsebire
Messages : 13160
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

iptables, redirection de port

Message par dsebire »

trouvé !!!
change ça
iptables -A OUTPUT -m state --state established,related -j ACCEPT
en ça
iptables -A INPUT -m state --state established,related -j ACCEPT
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

la première permettait de ne pas casser les connexion en sortie déjà établie nan?

je vais tester, la je suis reparti de la base niveau réseau et iptables pour être sur.
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

iptables, redirection de port

Message par gizmo78 »

voila ce que j'ai actuellement comme fichier de conf:

[cpp]#!/usr/bin/env bash
# Firewall script
# De base a 1
echo 1 > /proc/sys/net/ipv4/ip_forward
# De base a 1
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# De base a 1
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# De base a 1
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# De base a 1
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
# De base a 0
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat

#Vide les tables
iptables -F
iptables -X

#Strategie par defaut
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#LOG des paquets
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
iptables -A OUTPUT -j LOG

#Creation d'une chaine
iptables -N LOG_REJECT_SMTP
iptables -A LOG_REJECT_SMTP -j LOG --log-prefix ' SMTP REJECT PAQUET : '
iptables -A LOG_REJECT_SMTP -j DROP

# Anti-Taiwanais
iptables -A INPUT -i eth0 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth0 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth0 -s 168.95.0.0/16 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth1 -s 61.64.128.0/17 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth1 -s 122.120.0.0/13 -j LOG_REJECT_SMTP
iptables -A INPUT -i eth1 -s 168.95.0.0/16 -j LOG_REJECT_SMTP

#Protection DDOS
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

#Ne pas casser les connexion deja etablies
iptables -A INPUT -m state --state established,related -j ACCEPT

#Accepte le ping
iptables -A INPUT -p icmp -j ACCEPT

#Connexion boucle locale
iptables -A INPUT -i lo -j ACCEPT

#Acceptation ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#Rate limite SSH
iptables -I INPUT 1 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --update --seconds 60 --hitcount 6 -j REJECT
iptables -I INPUT 2 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --set

#Acceptation dns
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

#Routage general
iptables -t nat -A POSTROUTING -s 192.168.20.64/26 -j MASQUERADE

#Bloque tout le reste
iptables -A INPUT -i eth0 -j DROP
iptables -A INPUT -i eth1 -j DROP

exit 0[/cpp]

depuis le routeur pas de soucis ca ping et ca résoud, par contre nada depuis une vm :/
Avatar de l’utilisateur
dsebire
Messages : 13160
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

iptables, redirection de port

Message par dsebire »

la première permettait de ne pas casser les connexion en sortie déjà établie nan?

je vais tester, la je suis reparti de la base niveau réseau et iptables pour être sur.
tu autorise tout le trafic sortant, donc pas besoin de la première.
par contre, manquait bien la 2eme, qui te permet de recevoir les paquets entrants d'une connexion établie en sortie.

edit:> vu que tu log tout le traffic, regarde les logs, tu verras les packet drop ;)
Répondre