logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 09-06-2019 22:16:23

djjulian
Membre
Inscription : 02-11-2016

OpenVpn killswitch avec iptables

Bonjour à tous,

Je viens vers vous après avoir fait plusieurs recherche.

J'utilise une VM avec debian 9, iptables-persistent et Open Vpn. Sur cette machine il y à docker avec 2/3 containers.

J'aimerais que la machine ne puisse plus accéder à internet si pour je ne sais quelle raison, openvpn n'arrive pas à se connecter au serveur ou tout simplement qu'il ne démarre pas. J'ai vu sur plusieurs forum qu'il était possible de passer par iptables. Donc j'ai essayé de composer le truc à ma sauce.

La machine est chez moi en local et j'accède à ssh en local.

Voici mon ip a :



1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:dc:2c:a2:23:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.30/24 brd 192.168.1.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 2a01:cb10:2bc:d800:dc:2cff:fea2:231b/64 scope global mngtmpaddr dynamic
       valid_lft 1773sec preferred_lft 573sec
    inet6 fe80::dc:2cff:fea2:231b/64 scope link
       valid_lft forever preferred_lft forever
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.7.2.2/24 brd 10.7.2.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::aeb3:68c2:9f42:a23e/64 scope link flags 800
       valid_lft forever preferred_lft forever
 



Et voici le fichier iptables que j'ai composé :


# Fermeture de tout les ports sauf ceux indiqués plus bas
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP


# Autorise Localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Communiquer avec n’importe quel serveur DHCP
iptables -A OUTPUT -d 255.255.255.255 -j ACCEPT
iptables -A INPUT -s 255.255.255.255 -j ACCEPT


# Communiquer au sein du réseau
iptables -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/24 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.1/24 -d 192.168.1.1/24 -j ACCEPT


# Autoriser les sessions établies à recevoir du trafic:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# Autoriser TUN0
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A OUTPUT -o tun0 -j ACCEPT


# autoriser la connexion SSH
iptables -I INPUT 1 -p tcp --destination-port 22 -j ACCEPT


# Bloquer tout le reste
iptables -A OUTPUT -j DROP
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP



J'aimerais avoir votre avis avant de le mettre en pord et tout casser.

Merci et bonne soirée smile

Dernière modification par djjulian (09-06-2019 22:17:42)

Hors ligne

#2 10-06-2019 10:20:19

raleur
Membre
Inscription : 03-10-2014

Re : OpenVpn killswitch avec iptables

# Communiquer avec n’importe quel serveur DHCP
 iptables -A OUTPUT -d 255.255.255.255 -j ACCEPT
 iptables -A INPUT -s 255.255.255.255 -j ACCEPT
 


L'adresse de broadcast limité 255.255.255.255 ne peut pas être utilisée comme adresse source. Un serveur DHCP répond avec son adresse unicast.
Le client DHCP n'envoie pas forcément les requêtes à l'adresse de broadcast 255.255.255.255. Lorsqu'il a reçu une réponse d'un serveur DHCP, il peut envoyer les paquets suivants à l'adresse unicast de celui-ci.
Le trafic DHCP peut être identifié par d'autre critères : il utilise le protocole UDP, le port 67 côté serveur et le port 68 côté client.

 # Communiquer au sein du réseau
 iptables -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/24 -j ACCEPT
 iptables -A OUTPUT -s 192.168.1.1/24 -d 192.168.1.1/24 -j ACCEPT
 


Le préfixe du réseau local s'écrit plutôt 192.168.1.0/24.
Note que ces règles ne prennent pas en compte les paquets reçus à destination de l'adresse de broadcast limité 255.255.255.255

 # Autoriser les sessions établies à recevoir du trafic:
 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 


Il faudrait faire la même chose dans OUTPUT.

  # autoriser la connexion SSH
 iptables -I INPUT 1 -p tcp --destination-port 22 -j ACCEPT
 


Si tu veux que cette règle soit placée au début de la chaîne, pourquoi ne pas la mettre au début du script ?

 # Bloquer tout le reste
 iptables -A OUTPUT -j DROP
 iptables -A INPUT -j DROP
 iptables -A FORWARD -j DROP
 


C'est redondant avec les politiques par défaut à DROP. Si plus tard tu ajoutes manuellement une règle en fin de chaîne avec -A elle n'aura pas d'effet.


Il vaut mieux montrer que raconter.

Hors ligne

#3 10-06-2019 13:43:01

djjulian
Membre
Inscription : 02-11-2016

Re : OpenVpn killswitch avec iptables

Salut raleur, merci pour ta réponse et merci pour ton temps.

Du coup je pense qu'il faut que je simplifie l’ensemble. j'ai quelques lacunes en réseau.

Du coup mon serveur est directement connecté à la box. Je ne sais pas si j'ai besoin de communiquer avec un serveur DHCP ? Du coup je peux supprimer ça je pense ?

Donc dans la finalité si c'est juste :


# Fermeture de tout les ports sauf ceux indiqués plus bas
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP

# autoriser la connexion SSH
iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 22 -j ACCEPT

# Autorise Localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Communiquer au sein du réseau
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT


# Autoriser les sessions établies à recevoir du trafic:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# Autoriser TUN0
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A OUTPUT -o tun0 -j ACCEPT
 

Hors ligne

Pied de page des forums