Besoin d'aide pour règle iptables

Bonjour à tous :wink:

voila ma topologie réseau

firewall sous debian 6 ( acces SSH )

et voila ma question :slightly_smiling:

j’aimerais pour avoir acceder à mon pc fixe ( win 7 ) en remote desktop ( port 3389 ) qui lui a l’adresse ip 192.168.2.2

j’ai tenter l’iptables :
iptables -A FORWARD -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT
je me doute qu’il manque qq chose, mais je vois pas quoi

j’oubliais , je suis nouveau sous debian, donc je solicite votre aide

merci d’avance :wink:

Le firewall, c’est le frigo ?

Plusieurs observations :

  • Ta règle iptables autorise le trafic TCP depuis l’extérieur à travers le firewall à destination du port 3389, mais vers n’importe quelle adresse de destination, pas seulement le PC cible.

  • Le PC ayant une adresse IP privée non accessible depuis l’internet public, il faut aussi une règle iptables DNAT pour rediriger le port vers l’adresse privée.

iptables -t nat - A PREROUTING -i eth1 -p tcp --dport port_public -j DNAT --to adresse_privée:port_privé iptables -A FORWARD -i eth1 -d adresse_privée -p tcp --dport port_privé -j ACCEPT

  • Si le routeur wifi entre le firewall et le PC fait du NAT, il sera peut être nécessaire de rediriger le port vers l’adresse externe du routeur avec iptables et de créer une redirection du port vers le PC sur le routeur.

lol oui c’est tjs le frigo ( qui contient la bonne biere belge :stuck_out_tongue: )

j’ai fais ce que tu m’as conseillé

mais lorsque je fais un scan de port par rapport a mon adresse ip et le port 3389, il dit “isn’t responding on port 3389 (ms-wbt-server).”

Je n’ai donné qu’un vague conseil. Qu’as-tu fait exactement ?
Depuis où as-tu lancé le scan de port ?

et bien g adapté ton conseil a ma topologie, mais cela ne passe pas

le scan de port je l’ai fais de l’exterieur , c’est a dire de l’endroit de ma formation (d’une ip exterieur en somme ) :slightly_smiling:

mais est-ce normal que malgre mes efforts je ne vois pas le port 3389 ouvert ?

et y aurait il un autre moyen de faire ce que je desire ?

Oui: brancher le PC en direct sur le net, et désactiver le parefeu 20 daubes. :mrgreen:

Sinon, simplement, l’entrée, c’est une chose, mais il n’y aurait pas un pb sur le retour ?
Qu’est ce qui est autorisé en sortie pour les PC de l’intérieur ?

Si par exemple en plus de ce que dit pascalhambourg tu mets sur ton routeur une règle genre
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
est ce que ça fonctionne pas mieux ?

oui j’ai cette règles la d’etablie

mais cela ne donne rien

bon.
mais ton service de connection à distance est bien activé, et le parefeu de windows est bien désactivé (ou ouvert sur le 3389, mais vu qu’il ne protège de rien…).
Tu as scanné depuis l’intérieur pour voir ?

Au niveau de ton iptables il faut que tu mette un truc du genre :

iptables -A INPUT -i $interface_WAN -p udp --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -i $interface_WAN -p udp --dport 3389-j DNAT --to-destination 10.10.10.1

(remplace $interface_WAN par le nom de ton interface wan)
Ensuite dans ton routeur wifi tu cree une règle de redirection sur ton ip 192.168.2.2

Petite question : pourquoi ne pas mettre ton routeur wifi en mode pont de façon a faire des redirection de port uniquement sur ton serveur?

@matotop
oui parefeu windaube desactivé, et le service connexion a distance est bien actif aussi

@leo-25

je vais tester ce que tu me conseille , quand tu dis interface WAN tu parles du SSID ? ou de ETHx (car je ne sais pas cmt le savoir ca )

la redirection du port 3389 est bien effectuée pour l’ip 192.168.2.2 ( sur mon routeur )

pour ta question par rapport au mode pont de mon routeur, je ne vois pas de quelle option tu veux dire, les notions de pont etc… sont assez nouveau pour moi

et voici mon script firewall :

[quote]# script firewall

function flush_fw {
iptables -t filter -X
iptables -t filter -F
iptables -t nat -X
iptables -t nat -F
}
function f_start {
flush_fw
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED

Ssh sur le FW sur le port 22

iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth1 --sport 22 -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Activation du NAT

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Autoriser le http vers exterieur

iptables 

}

function f_stop {
flush_fw
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo " Firewall is stopped !!! "

}

function f_restart {
f_stop
f_start
}

function f_status {
iptables -t filter -L
iptables -t nat -L
echo "Statut du Firewall : "
}

case $1 in
start)
f_start
;;
stop)
f_stop
;;
restart)
f_restart
;;
status)
f_status
;;
*)
echo “Syntax error : /etc/init.d/firewall [start/stop/restart/status]”
;;
esac
[/quote]

Quand je parle de WAN, je parle de l’interface connectée à internet.
Je ne comprend pas comment ton script iptable fonctionne. perso je mettrais un script du genre :

[code]#!/bin/sh

Script de démarrage qui lance l’interface réseau internet,

met en place un firewall basique et un partage de connexion

#Déclaration des interfaces :
interface_WAN=eth1
interface_LAN=eth0

start() {

init du la périphérique internet (ici derriere une freebox)

/sbin/ifup $interface_WAN
echo “activation de l’interface WAN”

Dans cette partie, on met en place le firewall

#vidage des chaines
iptables -F
echo “vidage des chaines”
#destruction des chaines personnelles
iptables -X
echo “destruction des chaines personnelles”

#stratégies par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

echo “mise en place de la stratégie par défault (INPUT et FORWARD = DROP et OUTPUT = DROP)”

#init des tables NAT et MANGLE (pas forcément nécessaire)
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT

iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
echo “initialisation des tables NAT et MANGLE”

Acceptation de toutes les connexions en local (un process avec l’autre)

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo “Acceptation de toutes les connexions en local”

#####################

FORWARD

#####################

PORT FORWARDING:

attention : on ne peut malheureusement pas mettre un nom de machine en destination, il faut mettre l’adresse IP.

#redirection du port 3389 sur ton routeur wifi
iptables -A INPUT -i $interface_WAN -p udp --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -i $interface_WAN -p udp --dport 3389-j DNAT --to-destination 10.10.10.1

####################

OUTPUT

####################

=====================================================

=== TENTATIVE pour SORTIE (OUTPUT)Pour le SERVEUR ===

=====================================================

== On accepte la sortie de certains protocoles ==

iptables -A OUTPUT -o $interface_WAN -p UDP --dport 123 -j ACCEPT # Port 123 (Time ntp udp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 123 -j ACCEPT # Port 123 (Time ntp tcp)
iptables -A OUTPUT -o $interface_WAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 587 -j ACCEPT # Port 587 (Smtp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 22 -j ACCEPT # Port 22 (Ssh)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 10000 -j ACCEPT # Port 10000 (webmin)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 445 -j ACCEPT # Port 445 (Samba)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 139 -j ACCEPT # Port 139 (Samba)
#iptables -A OUTPUT -o $interface_WAN -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport nntp -j ACCEPT # Port 119 (News groups)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn messenger)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 11443 -j ACCEPT #port de connection routeur cheval
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 554 -j ACCEPT #port vlc
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 9200 -j ACCEPT #port play-the.net
iptables -t filter -A OUTPUT -o $interface_WAN -m state --state NEW -s $serveur -d $UPNP_Broadcast -p udp --sport 1024: --dport $SSDP_port -j ACCEPT # broadcast UPNP pour ushare
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 68 -j ACCEPT #DHCP

=== OUTPUT générique ? ===

On autorise les connexions deja etablies ou relatives à une autre connexion a sortir

iptables -A OUTPUT -o $interface_WAN --match state --state ESTABLISHED,RELATED -j ACCEPT
echo “Aceptation de certain protocole en sortie pour le serveur”

#Autoriser le ping sur des IP externes
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

==================================================

=== TENTATIVE pour SORTIE (OUTPUT) Pour le LAN ===

==================================================

== On accepte la sortie de certains protocoles ==

iptables -A OUTPUT -o $interface_LAN -p UDP --dport 123 -j ACCEPT # Port 123 (Time ntp udp)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 123 -j ACCEPT # Port 123 (Time ntp tcp)
iptables -A OUTPUT -o $interface_LAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 22 -j ACCEPT # Port 22 (Ssh)
#iptables -A OUTPUT -o $interface_LAN -p TCP --dport 10000 -j ACCEPT # Port 10000 (webmin)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 445 -j ACCEPT # Port 445 (Samba)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 139 -j ACCEPT # Port 139 (Samba)
iptables -A OUTPUT -o $interface_LAN -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport nntp -j ACCEPT # Port 119 (News groups)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn messenger)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)

=== OUTPUT générique ? ===

On autorise les connexions deja etablies ou relatives à une autre connexion a sortir

iptables -A OUTPUT -o $interface_LAN --match state --state ESTABLISHED,RELATED -j ACCEPT

echo “Aceptation de certain protocole en sortie pour le LAN”

##############################################

Partage de la connexion internet

##############################################

#création d’une nouvelle règle
iptables -N MAregle
#définition de la règle : accepter les nouvelles connexions ne venant pas de l’interface internet

et accepter toutes les connexions établies et reliées (ex: une demande de page HTML provoque l’ouverture

d’une connexion reliée pour acheminer cette page vers l’ordinateur)

iptables -A MAregle -m state --state NEW -i $interface_LAN -j ACCEPT
iptables -A MAregle -m state --state NEW,ESTABLISHED,RELATED,UNTRACKED -j ACCEPT

#application de la règle au partage de connexion
iptables -A INPUT -j MAregle
iptables -A FORWARD -j MAregle

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o $interface_WAN -j MASQUERADE
echo “Mise en place du partage de connextion internet”

LOG ### Log tous ce qui qui n’est pas accepter par une règles précédente

    # prés requit :       sudo apt-get install sysklogd
    #                     echo 'kern.warning             /var/log/iptables.log' > /etc/syslog.conf                     
iptables -A OUTPUT -j LOG --log-level 4 --log-prefix '[OUTPUT DROP]:'

iptables -A INPUT -j LOG --log-level 4 --log-prefix '[INPUT DROP]:'
iptables -A FORWARD -j LOG --log-level 4 --log-prefix '[FORWARD DROP]:'
echo "############ ##############"
iptables -L -n # commanter pour desactiver l’afichage des règles en cours
echo “############ ##############”
}

stop() {
echo 0 >/proc/sys/net/ipv4/ip_forward
ifdown $interface_WAN
}

case “$1” in

start)
start
echo “firewall IPv4 démarré”
;;

stop)
stop
echo “firewall IPv4 stopé”
;;
restart)
stop && start
echo “firewall IPv4 redémarré”
;;
status)
status
/sbin/iptables -L -n
/sbin/iptables -t nat -L -n
RETVAL=?
;;
*)
echo "Usage $0 {start|stop|restart|status}"
exit 1
esac

exit 0[/code]

et sur ton routeur internet ( si il est en mode routeur )tu redirige le flu sur le serveur. Du serveur tu redirige le flu sur le routeur wifi et enfin du routeur wifi tu redirige sur la machine 192.168.2.2

je suis dsl j’ai mis le mauvais script firewall lol , g pris le tout premier que j’avais fais et pour lequel justement je demandais de l’aide je place le nouveau maintenant :wink:

[quote]# script firewall

function flush_fw {
iptables -t filter -X
iptables -t filter -F
iptables -t nat -X
iptables -t nat -F
}
function f_start {
flush_fw
echo "[ Effacement des regles : [OK] ]"
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo "[ Firewall - inderdictions etablies : [OK] ]"
iptables -A INPUT -i eth0 -j ACCEPT
echo "[ Acceptation du LAN : [OK] ]"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

iptables -A INPUT -p udp --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 3389 -j DNAT --to-destination 10.10.10.1


echo "[ Acceptation du ping : 			[OK] ]"
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo "[ Acceptation du NAT : 				[OK] ]"
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
echo "[ Acceptation du SSH venant de l'exterieur : 	[OK] ]"
iptables -A INPUT -p tcp -i eth1 --dport 21 -j ACCEPT
echo "[ Acceptation de la connection FTP : 		[OK] ]"
iptables -t filter -A OUTPUT -j LOG
iptables -t filter -A INPUT -j LOG --log-level=6
echo "[ Firewall - Logging : 				[OK] ]"
echo "[ Lancement du Firewall : 			[OK] ]"

}

function f_stop {
flush_fw
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo “[ Arret du Firewall : [OK] ]”

}

function f_restart {
f_stop
f_start
}

function f_status {
iptables -t filter -L
iptables -t nat -L
echo "Statut du Firewall : "
}

case $1 in
start)
f_start
;;
stop)
f_stop
;;
restart)
f_restart
;;
status)
f_status
;;
*)
echo “Syntax error : /etc/init.d/firewall [start/stop/restart/status]”
;;
esac[/quote]

J’ai vu que tu avais intégrer les lignes que je t’ai donné. A tu tester avec cette conf ? ( sans oublier de faire la redirection sur ton routeur wifi comme indiqué précédemment).

je viens de tester avec mon script, pas le tient , et j’ai donc mis l’interface wan, mais lorsque je teste j’ai toujours un refus de connection

Un traceroute en TCP (ex: tcptraceroute) vers le port considéré peut aider à déterminer où ça coince. Et une capture de paquets (ex: tcpdump) sur les interfaces du chemin permet de vérifier si les paquets entrent ou sortent bien comme prévu.

que disent les logs iptables ? Cela permettra de savoir si c’est iptables qui bloque ou pas.

Plutôt, le résultat d’iptables-save, surtout, parceque les logs d’iptables, si tu ne mets pas des règles pour loguer, ça ne dit jamais rien.

salut à tous comment s’avoir si ca marhe?

Ce forum est francophone.