mardi 19 avril 2011

tutoriel openvpn


Cet article décrit comment installer un serveur VPN sous ubuntu et comment configurer Ubuntu desktop pour se connecter à ce serveur.



Configuration du serveur

Sur le serveur:

installer openvpn
apt-get install openvpn

aller dans /usr/share/doc/openvpn/examples/easy-rsa/2.0
modifier ./vars:
export KEY_COUNTRY="FR"
export KEY_PROVINCE="France"
export KEY_CITY="Paris"
export KEY_ORG="infond"
export KEY_EMAIL="contact@infond.fr"

recharger ./vars
source ./vars

réinitialiser les clés
./clean-all

générer le certificat racine (les certificats sont placés dans keys/ )
./build-key --pass --initca

générer le certificat serveur
./build-key --pass --server serverVPN

générer le certificat client
./build-key --pass clientVPN

générer les paramètre diffie-hellman
./build-dh

générer la clé de signature des paquets
openvpn --genkey --secret keys/ta.key

créer le group et le user openvpn sur le serveur
groupadd openvpn
useradd -d /dev/null -g openvpn -s /bin/false openvpn


modifier les droits de la clé privée du serveur
chown openvpn:openvpn ./keys/serverVPN.key
chmod 600 ./keys/serverVPN.key
chown openvpn:openvpn ./keys/ta.key
chmod 600 ./keys/ta.key

placer les liens dans /etc/openvpn
cd /etc/openvpn
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ca.crt CAVPN.crt
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/serverVPN.crt serverVPN.crt
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/serverVPN.key serverVPN.key
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/dh1024.pem dh1024.pem
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ta.key ta.key

remarque: pour info, il existe un fichier de configuration modèle:
cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip server.conf.gz    
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

créer /etc/openvpn/server.conf :
port 1194
proto udp
dev tun
ca CAVPN.crt
cert serverVPN.crt
key serverVPN.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 217.70.184.225"
push "dhcp-option DNS 217.70.184.226"
keepalive 10 120
user openvpn
group openvpn
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append  /var/log/openvpn.log
verb 3

démarrer le serveur openvpn
/etc/init.d/openvpn restart


Configuration du client

récupérer clientVPN.key, clientVPN.crt, ta.key et ca.crt du serveur (les mettre dans /etc/openvpn , leur attribuer le owner et le group root et modifier les droits sur le .key en 600)

remarque: network-manager (sur le client) fait tourner le processus openvpn en root !

installer openvpn sur le client
sudo apt-get install openvpn network-manager-openvpn network-manager-openvpn-gnome

configurer network manager sur le client





relancer network manager
restart network-manager


Iptables sur le serveur 

modifier iptables sur le serveur (voir fichier firewall sauvegardé)
cat /etc/init.d/firewall 
#!/bin/sh 

# Vider les tables actuelles 
iptables -t filter -F 

# Vider les règles personnelles 
iptables -t filter -X 


# Interdire toute connexion entrante et sortante 
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP


# Interdir l'ip forwarding par défaut
echo 0 > /proc/sys/net/ipv4/ip_forward

# Ne pas casser les connexions deja etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autoriser loopback 
iptables -t filter -A INPUT -i lo -j ACCEPT 
iptables -t filter -A OUTPUT -o lo -j ACCEPT 

# Autoriser  ICMP (Ping) 
iptables -t filter -A INPUT -m state --state NEW -p icmp -j ACCEPT 
iptables -t filter -A OUTPUT -p icmp -j ACCEPT 

# DNS Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

# NTP Out 
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT


# openvpn
iptables -t filter -A INPUT -m state --state NEW -p udp --dport 1194 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -m state --state NEW -i tun+ -o eth0 -j ACCEPT
iptables -A INPUT -m state --state NEW -i tun+ -j ACCEPT
iptables -A OUTPUT -m state --state NEW -o tun+ -j ACCEPT

Références




Aucun commentaire:

Enregistrer un commentaire