Forum d'entraide de la communauté Freedom-IP VPN
Vous n'êtes pas identifié(e).
Bonjour,
pour commencer ce tutoriel va se dérouler en 4 parties distinctes seule la première est obligatoire,
chaque partie a été réduite au minimum vous trouverez plus de détails dans les discussions que j'ai fait sur le forum ou sur mon blog.
1 l'installation
je vais commencer par récapituler vite fait l'installation comme on est sur linux on va principalement utiliser la ligne de commande ce sera plus rapide
je télécharge sur le site les configurations du serveur j'ai donc dans mon dossier téléchargement freedomip.zip
j'ouvre mon terminal et j'installe openvpn avec cette commande
sudo apt-get install openvpn network-manager-openvpn-gnome
je crée un dossier freedomip dans mon dossier utilisateur
mkdir ~/freedomip
puis je vais dans mon dossier téléchargement à adapter suivant l'endroit où se trouve votre fichier
cd ~/téléchargement
et je décompresse l'archive
unzip freedomip.zip -d ~/freedomip/
il ne reste plus qu'à aller dans network manager choisir configurer le vpn → ajouter → importer une configuration VPN enregistrée
on prend le serveur ovpn et on remplit avec son identifiant fip***** et votre mot de passe on enregistre et c'est fini plus qu'à choisir le serveur pour se connecter
2 bloquer le trafic si on est pas connecté au vpn
le souci étant que si la connexion décroche on se retrouve avec notre adresse ip publique
je vais donc vous fournir un script qui va gérer votre parefeu de façon stricte (pour une version plus souple et explicative vous pouvez aller sur mon blog)
pour remplir les quatre variables au début du script en dessous de ### END INIT INFO il suffit de faire
sudo ifconfig -a
puis on crée notre fichier
sudo gedit /etc/init.d/parefeu
#!/bin/sh
### BEGIN INIT INFO
# Provides: chillispot et freeradius dans le chroot
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $remote_fs
# Default-Start:
# Default-Stop:
# Short-Description: Wireless & LAN Access Point Controller
# Description: ChilliSpot is an open source captive portal
# or wireless LAN access point controller.
### END INIT INFO
interfaceWWW="eth0"
interfaceVPN="tun0"
localIP="192.168.0.10"
network="192.168.0.0/24"
start() {
# Dans cette partie, on met en place le firewall
#vidage des chaînes
iptables -F
#destruction des chaînes personnelles
#stratégies par défaut
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#on accepte tout le réseau local
iptables -A INPUT -s $network -j ACCEPT
iptables -A OUTPUT -d $network -j ACCEPT
iptables -A FORWARD -s $network -j ACCEPT
# On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes "ping"
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# On autorise les pings
iptables -A INPUT -p icmp -j ACCEPT
#on autorise les connexions sortantes sur interfaceWWW pour initialiser les connexion VPN
iptables -A OUTPUT -p TCP --dport 8080 -m state --state NEW -o $interfaceWWW -j ACCEPT
iptables -A OUTPUT -p TCP --dport 80 -m state --state NEW -o $interfaceWWW -j ACCEPT
iptables -A OUTPUT -p TCP --dport 443 -m state --state NEW -o $interfaceWWW -j ACCEPT
#on autorise les connexions sortantes sur le VPN
iptables -A OUTPUT -m state --state NEW -o $interfaceVPN -j ACCEPT
}
stop() {
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop && sleep 2 && start
;;
*)
echo "Usage $0 {start|stop|restart}"
exit 1
esac
exit 0
une fois enregistré on le rend exécutable
sudo chmod +x /etc/init.d/parefeu
on démarre notre parefeu
sudo service parefeu start
en cas de souci on peut arrêter le parefeu avec
sudo service parefeu stop
voila là on est protégé si on est plus connecté au vpn notre connexion internet sera bloqué
3 la reconnexion automatique
ensuite il suffit de se reconnecter automatiquement avec ce script
pour cela on a trois variable à remplir
serveur="NL2-(Pays-Bas)" → vous mettez le nom du serveur auquel vous voulez vous reconnecter
eth="Connexion filaire 1" → ici on indique la connexion qui va être protégé par le vpn autre exemple eth="*****_wifi"
ipnonprotege="00.000.000.00" → ici vous devez mettre votre adresse ip publique soit vous allez sur un site pour la connaître soit vous lancez cette commande
dig +short myip.opendns.com @resolver1.opendns.com
gedit ~/freedomip/demon-vpn
#! /bin/bash
# par: ljere
# Script permettant la reconnexion du vpn automatiquement si l'IP de connexion a changé ou si le vpn tombe
while true
do
sleep 5
serveur="NL2-(Pays-Bas)"
eth="ljere_wifi"
ipnonprotege="88.176.186.21"
log=/tmp/demon-log
monip=`dig +short myip.opendns.com @resolver1.opendns.com`
maderniereip=`cat /tmp/monip`
PING=$(ping -c 2 freedom-ip.com | grep % | cut -d ' ' -f4)
if [[ "$monip" != "$maderniereip" || "$ipnonprotege" = "$maderniereip" || -z $PING ]];
then
(
echo Pas de connexion Internet fonctionnelle
notify-send 'Freedom-IP:' 'Pas de connexion Internet fonctionnelle' -i dialog-error
# L'adresse IP a changé, on lance une reconnexion du vpn
VPN_STAT=$(nmcli con status | grep freedomip | cut -d\ -f 1)
nmcli con down id "${VPN_STAT}"
sleep 20
nmcli con down id $eth
sleep 20
nmcli con up id $eth
sleep 30
nmcli con up id $serveur
NEW_IP=`dig +short myip.opendns.com @resolver1.opendns.com`
echo $NEW_IP > /tmp/monip
notify-send 'Freedom-IP:' 'Connexion sur le serveur '$serveur' réussie' -i dialog-ok
) 2>&1 | tee -a $log
fi
done
on le rend exécutable
chmod +x ~/freedomip/demon-vpn
plus qu'à le mettre dans application au démarrage pour qu'il se lance à chaque démarrage
nom → VPN
commande → sh -c "~/.freedomip/demon-vpn"
commentaire → le démon vpn pour se connecter automatiquement
alors le vpn c'est good, iptables c'est good, la reconnexion auto c'est good, c'est bien beau tout ça mais il reste le souci des dns
4 modifier les DNS
On modifie les dns pour ne plus être fliqué ni bridé par votre fai moi j'ai décidé de faire confiance à opennicproject
la ça va aller vite in édite le fichier resolv.conf
sudo nano /etc/resolv.conf
on efface tout ce qu'il contient et on met les dns qu'on a récupéré (je l'ai fait pour vous)
nameserver 185.19.104.45
nameserver 185.19.105.6
puis on empêche la modification par network manager
sudo chattr +i /etc/resolv.conf
si on reçoit un message de ce type
chattr: Opération non supportée lors de la lecture des drapeaux sur /etc/resolv.conf
il faut d'abord supprimer resolvconf
sudo apt-get purge resolvconf
puis on relance
sudo chattr +i /etc/resolv.conf
un petit tour sur ce site https://www.dnsleaktest.com/ nous confirmera la réussite de notre changement de dns
info: les dns d'opennicproject ne seront utilisé que lorsque vous n'utilisez pas le vpn
lorsque vous utilisez le vpn ce sont les dns du vpn qui sont utilisés
AMD 3000+, nvidia FX5200 et 2 giga de ram sur Voyager 12.04 LTS en 32 bit
et TOSHIBA satellite_c670d-11l sur openbox/xubuntu 14.04 en 64 bit
Hors ligne
Félicitations pour le tuto.
@++ mimi42
Hors ligne
Bonjour,
Le script Iptable ne marche pas chez moi. J'ai passé quelques jours à essayer de l'adapter, sans succès. Je suis derrière une freebox (192.168.0.254) qui fait le routeur. j'ai modifié localIP="192.168.0.10" en 192.168.0.11 (baux DHCP permanent, ca va de 192.168.0.10 à .50). Tout va bien en l'absence du parefeu. Quand il est activé la connection VPN ne peut s'établir et, si elle a été établi avant, les connections ne passent pas.
System:~$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 50:46:5d:a3:30:36
inet adr:192.168.0.11 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::5246:5dff:fea3:3036/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:240262 erreurs:0 :0 overruns:0 frame:0
TX packets:147711 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:330980692 (330.9 MB) Octets transmis:15116833 (15.1 MB)
Interruption:20 Mémoire:f7c00000-f7c20000
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:65536 Metric:1
Packets reçus:12578 erreurs:0 :0 overruns:0 frame:0
TX packets:12578 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
Octets reçus:1385647 (1.3 MB) Octets transmis:1385647 (1.3 MB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:10.8.32.114 P-t-P:10.8.32.113 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
Packets reçus:778 erreurs:0 :0 overruns:0 frame:0
TX packets:886 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
Octets reçus:492039 (492.0 KB) Octets transmis:117536 (117.5 KB)
wlan0 Link encap:Ethernet HWaddr dc:85:de:06:d6:d4
UP BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)
Help ! je sèche.
Hors ligne
Bonjour Sip,
Pourrais-tu me montrer ton script modifié ?
Merci,
Didier.
Hors ligne
Bien sur. Au final j'ai remis l'initial en ne changeant que l'IP. Aucune de mes modif ne marchait.
#!/bin/sh
### BEGIN INIT INFO
# Provides: chillispot et freeradius dans le chroot
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $remote_fs
# Default-Start:
# Default-Stop:
# Short-Description: Wireless & LAN Access Point Controller
# Description: ChilliSpot is an open source captive portal
# or wireless LAN access point controller.
### END INIT INFO
interfaceWWW="eth0"
interfaceVPN="tun0"
localIP="192.168.0.11"
network="192.168.0.0/24"
start() {
# Dans cette partie, on met en place le firewall
#vidage des chaînes
iptables -F
#destruction des chaînes personnelles
#stratégies par défaut
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#on accepte tout le réseau local
iptables -A INPUT -s $network -j ACCEPT
iptables -A OUTPUT -d $network -j ACCEPT
iptables -A FORWARD -s $network -j ACCEPT
# On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes "ping"
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# On autorise les pings
iptables -A INPUT -p icmp -j ACCEPT
#on autorise les connexions sortantes sur interfaceWWW pour initialiser les connexion VPN
iptables -A OUTPUT -p TCP --dport 8080 -m state --state NEW -o $interfaceWWW -j ACCEPT
iptables -A OUTPUT -p TCP --dport 80 -m state --state NEW -o $interfaceWWW -j ACCEPT
iptables -A OUTPUT -p TCP --dport 443 -m state --state NEW -o $interfaceWWW -j ACCEPT
#on autorise les connexions sortantes sur le VPN
iptables -A OUTPUT -m state --state NEW -o $interfaceVPN -j ACCEPT
}
stop() {
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop && sleep 2 && start
;;
*)
echo "Usage $0 {start|stop|restart}"
exit 1
esac
exit 0
Dernière modification par Sip (2014-11-27 20:03:41)
Hors ligne
Bonjour Sip,
je ne vois pas de raison pour que ça ne fonctionne pas dans ton parefeu.
peut etre faudrait-il regarder au niveau de ta box si les ports 80, 443, et 8080 sont ouvert en TCP pour ton ordinateur.
pour le moment je ne peut pas tester cher moi ma ligne internet m'a lachée.
A+,
Didier.
Hors ligne
peut etre faudrait-il regarder au niveau de ta box si les ports 80, 443, et 8080 sont ouvert en TCP pour ton ordinateur.
Je ne l'ai pas fait : sans le pare feu tout marche.
Hors ligne
Je l'avais bien compris, mais cher moi avec le parefeu sa fonctionne (enfin plus pour le moment, mais je n'ai plus d'accès au net), et je suis cher Free moi aussi.
Comme mon poste est en DMZ (sans protection de la box) il me semblait logique d'ouvrir ces trois ports qui me semble nécessaire a la connexion.
Maintenant il y a bien une autre possibilité qui me viens a l'esprit. C'est que tu cherche a te connecter au réseau Wi-Fi quand tu utilise le pare-feu et non au réseau Ethernet comme le laisse penser ton message plus haut (celui avec le retour ifconfig qui montre des échanges uniquement sur eth0).
Ne pouvant actuellement pas testé les différentes pistes qui pourraient t'aider je compte sur toi pour le faire.
A+,
Didier.
Hors ligne
Comme mon poste est en DMZ (sans protection de la box) il me semblait logique d'ouvrir ces trois ports qui me semble nécessaire a la connexion.
Bonjour,
Si ton PC est dans la DMZ il est inutile de rediriger quelque port que ce soit étant donné qu'ils sont tous ouverts.
Je ne suis pas un expert mais le bash pour iptables me semble assez louche, pourquoi se casser la tête avec la Policy Output que l'on peut régler sur Accept étant donné qu'elle ne joue pas un grand rôle dans la sécurité mais qui peut être utile pour les paranos.
Ce que je vois c'est que seul le protocole Icmp est autorisé dans la Policy Input ainsi que les IP locales (192.168.0.0/24) et 127.0.0.1, ça me parait donc normal qu'il soit impossible d'accéder à internet.
J'aurais commencé la règle Input par un:
iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
et ensuite tu ajoutes tes ports ou tes IP selon tes besoins, par exemple pour ssh :
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
De plus ce script est réservé à ceux qui n'ont aucune règles iptables de paramétrées sous peine de les voir disparaître avec la commande flush.
Personnellement je met les Policy Input et Forward sur drop et j'ajoute les règles au fur et à mesure selon mes besoins, il ne faut pas négliger iptables car c'est la grande force de Linux et le meilleur pare-feu au monde.
Dernière modification par chico (2014-11-28 17:45:03)
U Play...U Pay
Hors ligne
Bonsoir ...
Je trouve cette ligne relativement dangeureuse, surtout si la machine est en DMZ :
iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
... car toute demande de connexion (NEW), d'où elle vienne, est autorisée. Il faut, pour un minimum de sécurité, ajouter une source (réseau local).
iptables -A INPUT -m state --state NEW,ESTABLISHED -s 192.168.0.0/24 -j ACCEPT
Personnellement, je préfère laisser mes postes hors de la DMZ et rediriger au niveau de la box chaque service à la machine correspondante.
Cordialement, David.
Hors ligne
@David, oui mais avec cette règle t'as au moins accès au net et puis c'est sûr que la DMZ c'est une zone qui craint, perso j'utilise la RELATED,ESTABLISHED plus un paquet d'autres règles mais aucune dans la police de sortie, peut-être ai-je tort.
U Play...U Pay
Hors ligne
Bonsoir chico,
tu as raison de dire que je n'ai pas besoins d'ouvrir ces ports car je suis en DMZ, et sa tombe bien, je ne les ai pas ouvert, par contre sa pourait peut etre aider Sip.
Je suis content que tu confirme que l'acces au Web est très limité avec les règles iptables fournis, car ces le but recherché, limité l'acces au maximum, sauf pour tun0 qui donne un plein acces au web.
A+,
Didier.
Hors ligne
L'ouverture des ports sur le FBX ne change effectivement rien. tun0 ne passe pas mieux et je ne peux pas établir une connection vpn à partir de la connection filaire (eth0). Les connections VPN sont configurées sur cette connection ethernet. (la fonction wifi de la box est désactivée)
Hors ligne
Bonsoir ...
Si vous pouviez nous mettre les traces des logs de votre connexion VPN ainsi que le résultat des commandes " route -n " puis " traceroute -n freedom-ip.com " pour voir ce qu'il se passe réellement, nous aurons de la matière pour commencer à voir ce qui bloque.
Cordialement, David.
Hors ligne
Bonsoir Didier-T,
Bon j'ai peut-être était un peu vite dans la compréhension du script, effectivement la police de sortie est primordiale dans ce cas le seul petit problème est peut-être qu'il faille autoriser les DNS car les fichiers de conf de Freedom-IP sont configurer avec des noms de domaines et non des adresses IP.
Il faudrait donc rajouter
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
-------------------------------------------------------------------------------
Edité par jejedu67
J'ai fais un petit script pour me rattraper
#!/bin/sh
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o tun0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#FIP BE1
iptables -A INPUT -s be1.freedom-ip.com -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d be1.freedom-ip.com -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Avec ce script tu peux communiquer sur internet uniquement via l'interface tun0, bien sûr ton interface wifi ou ethernet continue d'accéder au net mais uniquement sur les serveurs FIP, si le VPN se déconnecte tu ne peux normalement plus accéder à internet, si tu veux surfer avec ton IP publique tu devras désactiver iptables, le plus simple est de le placer dans /etc/init.d et de faire comme a expliqué ljere dans le premier message de ce thread, en ce qui concerne la reconnexion auto au vpn il me semble qu'il existe une appli sous ubuntu qui s'appel VPNAUTOCONNECT
Il faut aussi ajouter les localisations, je ne l'ai fait qu'avec le serveur Belge.
Désolé pour les 2 messages un derrière l'autre, j'ai encore oublier d'utiliser la fonction "Modifier", ça ne se reproduira plus
Finalement je confirme bien que les règles iptables du script de ljere ne sont pas fonctionnelles et n'offre aucun accès au net ni aux serveurs Freedom-IP.
Après l'avoir testé et modifié j'ai réussi à me connecter à rien puis aux serveurs FIP mais pas au net, au net et aux serveurs FIP mais avec mon IP publique visible en cas de déconnexion.
Dernière modification par chico (2014-11-29 15:44:42)
U Play...U Pay
Hors ligne
Bonjour Chico... Ca marche ! Bravo!
L'ouverture tcp et udp 53 est probablement la solution.
VPNAUTOCONNECT n'est pas fonctionnel chez moi alors que le demon-vpn de Ljere marche bien.
Par ailleurs, tes regles pourraient servir au script de Didier-T
Merci et encore merci. J'y ai passé quelques heures de tripatouillage sans me lancer réellement dans la machininerie d'iptable. Mais même si je l'avais fait j'aurais toujours bloqué sur le port 53. Bref plusieurs jours de galere.
Dernière modification par Sip (2014-11-29 20:17:42)
Hors ligne
Bonsoir,
Comme le dit Sip, ton script pourrait bien me servir chico.
Je le testerai des que j'aurai récupérée ma connexion internet, je vous tiendrai au courant.
A+,
Didier.
Hors ligne
Bonsoir,
Le script de reconnection de ljere ne marchait pas avec ces regles. J'ai ajouté le ping et l'acces à curlmyip
...
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes "ping"
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# On autorise les pings
iptables -A INPUT -p icmp -j ACCEPT
# On autorise le script vpn à se connecter à curlmyip
iptables -A INPUT -s curlmyip.com -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d curlmyip.com -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
...
Dernière modification par Sip (2014-11-29 21:32:22)
Hors ligne
Super les gars si ça peut servir à la communauté, pour VPNAUTOCONNECT j'peux rien te dire, je l'ai jamais utilisé.
Malheureusement pour le script de ljere ajouter les règles pour les DNS n'est pas suffisant.
U Play...U Pay
Hors ligne
Bonsoir,
J'étais justement en train de plancher sur les règles Iptables pour modifier le parefeu inclus au script de Didier-T (celui de ljere en fait) car je me suis aperçu que mon Ip publique était visible dans certains cas ou la connexion ne se faisait pas au VPN au lieu de bloquer toute connexion.
J'ai finalement retenu les règles suivantes mais comme je ne suis pas du tout expert, je ne suis pas sûr de ce que j'ai fais. Ça semble fonctionner en bloquant tout sauf HTTPS en cas de déconnexion du VPN. Sans HTTPS, la connexion au VPN était impossible, par contre je n'ai pas autorisé les DNS comme indiqué et la connexion se fait bien.
Si vous pouviez m'éclairer sur les règles, voir si c'est correct. Et si oui, comment autoriser HTTPS que vers les serveurs freedom-Ip.
#!/bin/sh
interfaceWWW=`ip -o link show | awk 'BEGIN{} $9=="UP" {gsub(":",""); print $2} END{}'`
interfaceVPN="tun+"
localIP=`ip -o route | awk -v interfaceWWW=$interfaceWWW 'BEGIN{} $3==interfaceWWW && $4=="proto" {print $9} END{}'`
network=`ip -o route | awk -v interfaceWWW=$interfaceWWW 'BEGIN{} $3==interfaceWWW && $4=="proto" {print $1} END{}'`
start() {
#vidage des chaînes
iptables -F
#on ferme tout
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#on accepte tout le réseau 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 connexion déjà établies
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes "ping"
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# On autorise les pings
iptables -A INPUT -p icmp -j ACCEPT
#Autoriser HTTPS
iptables -A OUTPUT -p TCP --dport 443 -m state --state NEW -o $interfaceWWW -j ACCEPT
#on autorise les connexions sortantes sur le VPN
iptables -A OUTPUT -m state --state NEW -o $interfaceVPN -j ACCEPT
}
stop() {
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop && sleep 2 && start
;;
*)
echo "Usage $0 {start|stop|restart}"
exit 1
esac
exit 0
Bon, tout ceci plus pour mon information car apparemment chico a fait un script fonctionnel que je n'ai pas encore testé.
Dernière modification par metalux (2014-11-29 23:06:05)
Hors ligne
Bonsoir metalux,
Je trouve plus simple et plus sécurisé d'autoriser uniquement les noms de domaines FIP plutôt que d'autoriser HTTPS, de nombreux sites en SSL peuvent donc récupérer ton IP publique.
Avec mes règles tu es obligé soit d'autoriser DNS ou de modifier les noms de domaines FIP en adresses IP dans les fichiers de conf. (pas terrible car les IP FIP peuvent changer) sinon aucune connexion possible puisque tout est sur DROP il ne résoudra pas les noms de domaines.
Je viens de tester ton script et il fonctionne mais tu devrais changer
iptables -A OUTPUT -p TCP --dport 443 -m state --state NEW -o $interfaceWWW -j ACCEPT
par
iptables -A INPUT -s "nom de domaine du VPN" -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d "nom de domaine du VPN" -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Dans ce cas tu devras surement autoriser DNS.
Dernière modification par chico (2014-11-29 23:40:29)
U Play...U Pay
Hors ligne
Merci chico, le souci dans le script de Didier-T, il y a besoin d'ouvrir HTTPS pour le profil de connexion Occupation entre autre. Je t'invite à l'essayer pour mieux comprendre. En Ping, ça fonctionne, normal vu qu'il y a les règles pour ça.
Mais ça doit être possible également d'autoriser la connexion https que vers l'API de freedom-ip comme en faisant vers les serveurs. Je crois que Didier-T trouvera le nécessaire avec tes indications.
Pour les DNS, je n'ai pas eu besoin d'ajouter les règles, ça fonctionne sans bien que ça me parait étrange vu tes explications.
Pour ton script post #16, il y a la possibilité d'ajouter cette boucle pour ouvrir vers l'ensemble des serveurs:
serveurs=( be1 ch1 cz1 de1 de2 dk1 es fi1 fr1 gr1 ie1 it1 lt1 lu1 mt1 nl1 nl2 nl3 nl4 pl1 pt1 uk )
for servfreedom in ${serveurs[@]};do
iptables -A INPUT -s $servfreedom.freedom-ip.com -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d $servfreedom.freedom-ip.com -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
done
Par contre ça ne fonctionne qu'en bash, en sh ça renvoie une erreur.
Dernière modification par metalux (2014-11-30 01:44:01)
Hors ligne
Bonjour,
Pour les DNS, je n'ai pas eu besoin d'ajouter les règles, ça fonctionne sans bien que ça me parait étrange vu tes explications.
Normal si le port 443 est autorisé.
Pour ton script post #16, il y a la possibilité d'ajouter cette boucle pour ouvrir vers l'ensemble des serveurs:
serveurs=( be1 ch1 cz1 de1 de2 dk1 es fi1 fr1 gr1 ie1 it1 lt1 lu1 mt1 nl1 nl2 nl3 nl4 pl1 pt1 uk ) for servfreedom in ${serveurs[@]};do iptables -A INPUT -s $servfreedom.freedom-ip.com -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -d $servfreedom.freedom-ip.com -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT done
Effectivement, plus propre et plus pratique avec les variables.
Par contre ça ne fonctionne qu'en bash, en sh ça renvoie une erreur.
Quel est ce message d'erreur?
U Play...U Pay
Hors ligne
Bonjour,
Pour les DNS, c'est en laissant le port 443 fermé, voilà pourquoi je trouve ça étrange. Je n'ai utilisé que la fonction ping du script de Didier-T pour tester.
Pour l'erreur: Syntax error: "(" unexpected (expecting "}")
En bash, la boucle fonctionne correctement.
Pour permettre l'accès à l'API de freedomip, j'ai ajouté ces règles:
iptables -A INPUT -s freedom-ip.com -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d freedom-ip.com -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Comme ça tout fonctionne, tout est bloqué y compris HTTPS sauf le site freedomip et tous les services associés ce qui permet au script de Didier-T de fonctionner même en sélectionnant "occupation" ou "bande passante".
Chico, je n'ai fais qu'un copier/coller de tes règles en modifiant les serveurs VPN par l'adresse freedom-ip.com, est-ce correct de procéder ainsi?
Dernière modification par metalux (2014-11-30 11:19:15)
Hors ligne