Debian 5 : HowTo Serveur VPN en mode pont (bridge), authentification LDAP (optionnel) PDF Imprimer Envoyer
Note des utilisateurs: / 0
MauvaisTrès bien 
Informatique - Sécurité
Lundi, 01 Mars 2010 12:11

Source :

Mise en situation

Mise en place d’un serveur OpenVPN avec authentification LDAP.

Sécurisation des échanges par certificats (pas de certificat spécifique pour les clients).

Le mode utilisé est le mode pont. Les machines distantes possèderont une adresse IP du réseau interne.

Note

La création des certificats est disponible dans un autre article de ce site.

Installation du serveur

Installation des paquets

apt-get install openvpn bridge-utils

Installation du bridge

Script d’initialisation

Ce script est tiré du site officiel openVpn.

vi /etc/openvpn/bridge-start

#!/bin/bash

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
#Utiliser la commande ifconfig pour obtenir plus d’information concernant votre configuration

#Nom de l’interface physique
eth="eth0"
#Adresse IP de la carte physique
eth_ip="172.17.100.7"
#Masque
eth_netmask="255.255.255.0"
#Adresse de broadcast
eth_broadcast="172.17.100.255"

#La boucle n’est pas utile dans notre cas mais gardons l’exemple d’openvpn
#Creation de l’interface tap
for t in $tap; do
    openvpn --mktun --dev $t
done

#Creation de l’interface de remplacement (interface virtuelle qui remplacera votre interface sur votre réseau), la carte réelle va être re-paramétré et donc inutilisable en tant que telle.
brctl addbr $br
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

#Montage des interfaces tap en promiscious
for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

#Montage de l’inteface physique en mode promiscious
ifconfig $eth 0.0.0.0 promisc up

#Configuration compatible avec le réseau interne sur l’interface virtuelle
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
#Ajout de la passerelle du réseau interne
route add default gw 172.17.100.1

#Lancement du serveur openvpn avec son fichier de configuration
openvpn /etc/openvpn/server.cnf
#Autorisation du passage des flux
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT

#Modification des droits sur le fichier
chmod o+x /etc/openvpn/bridge-start

Script de suppression

vi /etc/openvpn/bridge-stop

br="br0"
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done
ifdown eth0
ifup eth0

chmod o+x /etc/openvpn/bridge-start

Lancement automatisé et scripté (exemple)

vi /etc/init.d/openvpn-server

#!/bin/sh
case "$1" in
        start)
                nohup /etc/openvpn/bridge-start &
        ;;
        stop)
                nohup /etc/openvpn/bridge-stop &
        ;;
        *)
                echo 'Usage: /etc/init.d/openvpn-server {start|stop}'
                exit 1
        ;;
esac
exit 0

chmod 755 /etc/init.d/openvpn-server

update-rc.d openvpn-server defaults

#Exemple d’utilisation

/etc/init.d/openvpn-server
/etc/init.d/openvpn-server start
/etc/init.d/openvpn-server stop

Fichier de configuration OpenVpn

;Ne demande pas de certificat spécifique au client
client-cert-not-required

;Exige le support TLS
tls-exit
;Chroot du répertoire d’exécution par sécurité
chroot /tmp

;Autorisation des communications clients à clients
client-to-client

;Port d’éxecution (à rediriger si nécessaire)
port 1194

;Utilisation du mode déconnecté UDP
proto udp

;Utilisation de l’interface tap0 (0 peut être différent, cela dépend de votre script d’exécution du bridge
dev tap0

;Adresse du certificat d’authorité
ca /etc/openvpn/ca.crt
;Adresse du certificat serveur
cert /etc/openvpn/openvpn.zo.midgard.info.crt
;Adresse de la clef serveur
key /etc/openvpn/openvpn.zo.midgard.info.key

;Adresse des paramètres DH
dh dh1024.pem

;Type de serveur, adresse IP et masque, Pool alloué aux serveurs VPN
server-bridge 172.17.100.7 255.255.255.0 172.17.100.200 172.17.100.250

;Force l’échange
keepalive 10 120

;Activer la compression de type lzo
comp-lzo

;Persistance
persist-key
persist-tun

;Fichier de log
status openvpn-status.log

;Niveau de notification
verb 3

;Exécution du programme avec des droits restreints
user nobody
group nogroup

Authentification LDAP

Mise en situation

Pour ajouter cette fonctionnalité, il faut que votre système d’authentification PAM soit déjà paramétré (cf : Debian Intégration Active Directory).

Installation des paquets nécessaires

apt-get install libpam0g-dev

Fichier de configuration du serveur

Il suffit d’ajouter une ligne pour activer le plugin :

plugin /usr/lib/openvpn/openvpn-auth-pam.so common-auth

Cas des routages NAT

Rediriger le port UDP 1194 vers l’adresse IP du serveur openvpn.

Installation du client

Installations des paquets nécessaires

apt-get install openvpn

Fichier de configuration

Attention, les fichiers nécessaire pour la sécurité (certificats et clefs) doivent être importé (cf : OpenVpn : Liaison VPN).

vi /etc/openvpn/client.conf

pull
client
dev tap

proto udp


remote midgard.info 1194

resolv-retry infinite
nobind

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

# Try to preserve some state across restarts.
persist-key
persist-tun


ca ca.crt
;Demande d’identifiant à la connexion dans le prompt
auth-user-pass

;ou recherche les identifiants dans un fichier (1er ligne : identifiant, 2eme ligne : mot de passe)
;auth-user-pass /etc/openvpn/file

ns-cert-type server

comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
;mute 20

Mise à jour le Lundi, 01 Mars 2010 12:37