Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/02/2013, à 23:49

jotenakis

probleme parefeu et routage https vers eth0, le reste étant vers tun0

Bonjour
je fais suite aux questions posées ici http://forum.ubuntu-fr.org/viewtopic.php?id=1119581&p=2
je n'ai pas de pb de VPN.

en revanche mon parefeu ne fonctionne pas exactement comme je voudrais.
je me connecte à un VPN en openvpn (pas de pb).
je souhaite que tout le flux passe par le VPN (interface tun0), sauf le flux https que je souhaite faire passer par la ligne non protégée eth0.

mon firewall est ainsi :

#!/bin/sh
#
# Script de démarrage qui lance l'interface réseau internet
interfaceWWW="eth0"
interfaceVPN="tun0"
localIP="192.168.0.5"
network="192.168.0.0/24"
# Rappel IPTables .
#
#           /----------\         /-------\         /-----------\
# IN--->---< PREROUTING >--->---< FORWARD >--->---< POSTROUTING >--->--OUT
#           \----------/         \-------/         \-----------/
#              \                                            /
#               \                                          /
#             /-----\         /-------------\         /------\
#            < INPUT >--->---< LOCAL PROCESS >--->---< OUTPUT >
#             \-----/         \-------------/         \------/

 start() {

# Dans cette partie, on met en place le firewall
#vidage des chaines
iptables -F
iptables -X
#destruction des chaines personnelles
#stratégies par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# tout ouvert sur loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT 

## On drop les scans XMAS et NULL.
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 

## Dropper silencieusement tous les paquets broadcastés.
iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP

#on accepte tout le reseau local :)
iptables -A INPUT -s $network -j ACCEPT
iptables -A OUTPUT -d $network -j ACCEPT
iptables -A FORWARD -s $network -j ACCEPT 

#on autorise toutes les connexions déja etablies
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#on autorise les connexions sortantes vers les ports UDP sur interfaceWWW pour initialiser les connexions VPN openvpn (voir /etc/openvpn/openvpn.conf)
iptables -A OUTPUT -p UDP -m multiport --dports 7001,7002,7003,7004 -m state --state NEW -o $interfaceWWW -j ACCEPT

#on accepte ping sortants
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#on autorise les connexions sortantes sur le VPN
iptables -A OUTPUT -m state --state NEW -o $interfaceVPN -j ACCEPT
#on ouvre le port 1250 sur la connexion VPN pour accepter torrent que j'ai mis sur 1250 (transmission)
iptables -A INPUT -p TCP --dport 1250 -m state --state NEW -i $interfaceVPN -j ACCEPT


#on autorise les connexions sortantes vers le https sur interface WWW
iptables -A OUTPUT -p TCP --dport 443 -m state --state NEW -o $interfaceWWW -j ACCEPT
#on autorise les connexions sortantes vers le DNS sur interface WWW
iptables -A OUTPUT -p UDP --dport 53 -m state --state NEW -o $interfaceWWW -j ACCEPT


echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/$interfaceWWW/rp_filter
ip rule add fwmark 0x1 table connection

#on fait passer les connections HTTPs sur la connection internet standard
iptables -t mangle -A OUTPUT -p TCP --dport 443 -j MARK --set-mark 0x1
iptables -t nat -A POSTROUTING -o $interfaceWWW -p TCP --dport 443 -j SNAT --to $localIP

}
  
 stop() {

     iptables -P INPUT ACCEPT
     iptables -P FORWARD ACCEPT
     iptables -P OUTPUT ACCEPT
     iptables -F
 }
  
 case "$1" in
  start)
         start
         ;;
  
 stop)
         stop
         ;;
 restart)
         stop && start
         ;;
 *)
         echo "Usage $0 {start|stop|restart}"
         exit 1
 esac
  
 exit 0

de plus j'ai crée

cat /etc/network/if-up.d/parefeu
#!/bin/sh
#
set -e
if [ "$IFACE" = eth0 ]; then

/sbin/ip route add 192.168.0.0/24 dev eth0 src 192.168.0.5 table connection
/sbin/ip route add default via 192.168.0.254 table connection
/sbin/ip rule add from 192.168.0.5 table connection

fi

et

cat /etc/network/if-down.d/parefeu
#!/bin/sh
#
set -e
if [ "$IFACE" = eth0 ]; then

/sbin/ip route del 192.168.0.0/24 dev eth0 src 192.168.0.5 table connection
/sbin/ip route del default via 192.168.0.254 table connection
/sbin/ip rule del from 192.168.0.5 table connection

fi

et enfin

cat /etc/iproute2/rt_tables
#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep
1     connection

le bilan :
tout marche sauf le routage du flux https vers eth0.
je m'en rend compte soit en sniffant les trames (avec wireshark, je vois bien que la "poignée de main" lorsque je vais sur un https se passe sur l'interface tun0) soit en regardant mon ip renvoyé par le site https://ipdb.at/

qu'est ce qui ne marche pas ????

Hors ligne

#2 Le 01/03/2013, à 00:55

jotenakis

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

vous allez rire.......... roll

je crois que ça marche now.
j'avais oublié de rendre executable les fichiers /etc/network/if-down.d/parefeu et /etc/network/if-up.d/parefeu

Hors ligne

#3 Le 01/03/2013, à 01:03

jotenakis

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

bon c'est plus compliqué que cela...
en effet au démarrage ça marche. mon vpn se lance. le flux https est bien vers eth0.
en revanche, si je coupe le vpn et le relance => le flux https est maintenant vers tun0 !!!

HELP ?

Hors ligne

#4 Le 01/03/2013, à 01:21

jotenakis

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

au démarrage la table de routage "connection" est

default via 192.168.0.254 dev wlan0 
192.168.0.0/24 dev wlan0  scope link  src 192.168.0.5 

et tout marche.
en revanche dès que je coupe le vpn (avec le networkmanager), la table devient vide et ne se recrée par au redémarrage du vpn

Hors ligne

#5 Le 01/03/2013, à 01:56

jotenakis

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

je converge
dans /etc/network/if-up.d/parefeu et  /etc/network/if-down.d/parefeu

il faut remplacer if [ "$IFACE" = eth0 ]; then par if [ "$IFACE" = tun0 ]; then

et ca roule a priori.

Hors ligne

#6 Le 03/03/2013, à 13:38

kralisec

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

Bonjour,

Je suis un peu curieux: comment se fait la différence entre le traffic https et le reste ?

De mémoire il doit y avoir une ligne genre:

iptables -t mangle -A PREROUTING -p tcp --dport 443 -j MARK --set-mark 2

avec une ligne 2 https dans rt_tables ?

en espérant faire avancer le le shmilblick ;-)

(source: http://www.linuxtopia.org/Linux_Firewal … x4368.html je vois que c'est pour le kernel 2.3 à 2.6
je vais peut-être remettre mes infos à jour ... ^^)


a+,
Laurent.


Lorsqu'on s'occupe d'informatique il faut faire comme les canards...
Paraître calme en surface et pédaler comme un forcené par en-dessous

Hors ligne

#7 Le 06/03/2013, à 15:33

jotenakis

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

dans mon exemple http/https sont traités de la même façon (set mark 1). tout le reste passe ailleurs.

Hors ligne

#8 Le 16/03/2013, à 13:11

kralisec

Re : probleme parefeu et routage https vers eth0, le reste étant vers tun0

Oki, j'avais complètement raté l’ascenseur sur le 1er poste sad


a+,
Laurent.


Lorsqu'on s'occupe d'informatique il faut faire comme les canards...
Paraître calme en surface et pédaler comme un forcené par en-dessous

Hors ligne