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
- installation http://coagul.org/drupal/node/353/
- installation http://www.tuxwin.net/securite/mise-en-place-dun-vpn-sll-avec-openvpn/
- documentation http://openvpn.net/index.php/open-source/documentation/howto.html
Aucun commentaire:
Enregistrer un commentaire