Page 1 sur 2
iptables, redirection de port
Publié : mer. 14 août 2013 17:23
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?
iptables, redirection de port
Publié : mer. 14 août 2013 17:34
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.
iptables, redirection de port
Publié : mer. 14 août 2013 17:40
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
iptables, redirection de port
Publié : jeu. 15 août 2013 10:56
par gizmo78
j'avais pas le -i -o oO
je test ca

iptables, redirection de port
Publié : ven. 16 août 2013 11:33
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?
iptables, redirection de port
Publié : ven. 16 août 2013 12:06
par Zedoune
t'as ajouté l'ip LAN du routeur pour dire que c'était la route par défaut ?
iptables, redirection de port
Publié : ven. 16 août 2013 12:21
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?
iptables, redirection de port
Publié : ven. 16 août 2013 16:18
par gizmo78
Voila l'archi que je veux réaliser:

iptables, redirection de port
Publié : ven. 16 août 2013 21:24
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
iptables, redirection de port
Publié : ven. 16 août 2013 21:31
par Zedoune
c'est vraiment pourris iptables
iptables, redirection de port
Publié : ven. 16 août 2013 21:48
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é...
iptables, redirection de port
Publié : ven. 16 août 2013 21:52
par Zedoune
packet filter c'est plus clair

iptables, redirection de port
Publié : sam. 17 août 2013 09:37
par gizmo78
merci dsebire je regarde ca

iptables, redirection de port
Publié : sam. 17 août 2013 10:49
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]
iptables, redirection de port
Publié : mar. 20 août 2013 10:03
par Zedoune
alors ?

iptables, redirection de port
Publié : mar. 20 août 2013 10:40
par gizmo78
j'ai mis que la ligne de routage général, pour l'instant ca à l'air d'être bon, je test ^^
iptables, redirection de port
Publié : mar. 20 août 2013 11:03
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]
iptables, redirection de port
Publié : mar. 20 août 2013 11:18
par dsebire
regarde tes Policy par defaut

dans un cas, tu drop, dans l'autre tu accepte.
iptables, redirection de port
Publié : mar. 20 août 2013 11:46
par gizmo78
on est d'accord, mais normalement, si je drop et que j'autorise après le routage, ca devrait passer nan?
iptables, redirection de port
Publié : mar. 20 août 2013 13:35
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.
iptables, redirection de port
Publié : mar. 20 août 2013 13:47
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.
iptables, redirection de port
Publié : mar. 20 août 2013 14:59
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
iptables, redirection de port
Publié : mar. 20 août 2013 15:07
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.
iptables, redirection de port
Publié : mar. 20 août 2013 15:32
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 :/
iptables, redirection de port
Publié : mar. 20 août 2013 16:34
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
