Installation OpenVPN :
Article non finalisé !!
Vous pouvez installer Webmin en premier.
1- Installation OpenVPN :
– apt-get install openvpn openssl
2- Préparation du serveur :
– Créer le dossier easy-rsa : mkdir /etc/openvpn/easy-rsa/
– Copier les fichiers de configuration : cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
3- Configuration du serveur :
– Éditer le fichier /etc/openvpn/easy-rsa/vars :
nano /etc/openvpn/easy-rsa/vars
Export KEY_DIR=$D/keys
Export KEY_COUNTRY=FR
Export KEY_PROVINCE=FR
Export KEY_CITY=Lille
Export KEY_ORG=example
Export KEY_EMAIL=example@yoyo.org
- Initialiser les variables :
cd /etc/openvpn/easy-rsa/
- source vars
- ./clean-all
4- Génération clés et certificats racine :
Génération du certificat racine "ca.cert" et de la clé d'autorité de certification racine "ca.key" dans le dossier /etc/openvpn/easy-rsa/keys.
5- Génération clé et certificat serveur :
Génération du certificat racine "Nomduserveur.cert" et de la clé d'autorité de certification racine "Nomduserveur.key" dans le dossier /etc/openvpn/easy-rsa/keys.
- Il faut se trouver dans le dossier /etc/openvpn/easy-rsa.
- ./build-key-server Nomduserveur (ex:svrvpn)
- Au prompt :
- « sign this certificate », répondre Y
- « 1 out of 1 certificate requests certificated, commit », répondre Y
6- Génération des paramètres de Diffie-Hellman :
- Génération du fichier
"
dh1024.pem"
dans le dossier /etc/openvpn/easy-rsa/keys.
- Il faut se trouver dans le dossier /etc/openvpn/easy-rsa.
7- Génération d’une clé statique :
Cette clé permet de prévenir les attaques "
Man in the middle"
.
- Génération d’une clé
"
ta.key"
dans le dossier /etc/openvpn/easy-rsa/keys
.
- Il faut se trouver dans le dossier /etc/openvpn/easy-rsa.
openvpn --genkey --secret keys/ta.key
8- Edition du fichier de configuration du serveur :
- Copier :
-
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
-
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
-
gunzip /etc/openvpn/server.conf.gz
- Editer server.conf : nano /etc/openvpn/server.conf
local « IP du serveur VPN »
dev tun
proto tcp
port 1188
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/NomduCertificat.crt
key /etc/openvpn/easy-rsa/keys/NomduCertificat.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig 10.8.0.1 10.8.0.2
push « redirect-gateway def1 »
push « route 10.8.0.1 255.255.255.255 » # route vers le serveur VPN
push « route 10.8.0.0 255.255.255.0 » # route vers le sous-réseau VPN
push « route 192.168.0.125 255.255.255.0 » #sous-réseau local – adaptez l’adresse IP locale de votre serveur
push « dhcp-option DNS 89.2.0.1 » # Par exemple le serveur dns primaire de Numericable
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
9- Génération clé et certificat client :
- cd /etc/openvpn/easy-rsa/
- ./build-key gilles (par exemple)
Une fois tous les clients créés, il faut transférer dur le poste client:
- ca.crt
- USER.crt
- USER.key
- ta.key
10- Monitoring : Merci Troublenow
Créer le fichier openvpn-status en collant le texte ci-dessous : nano /usr/local/bin/openvpn-status
#!/usr/bin/env python
# -*- coding: utf-8 -*-
STATUS = "/var/log/openvpn-status.log"
status_file = open(STATUS, 'r')
stats = status_file.readlines()
status_file.close()
hosts = []
headers = {
'cn': 'Common Name',
'virt': 'Virtual Address',
'real': 'Real Address',
'sent': 'Sent',
'recv': 'Received',
'since': 'Connected Since'
}
sizes = [
(1<<50L, 'PB'),
(1<<40L, 'TB'),
(1<<30L, 'GB'),
(1<<20L, 'MB'),
(1<<10L, 'KB'),
(1, 'B')
]
def byte2str(size):
for f, suf in sizes:
if size >= f:
break
return "%.2f %s" % (size / float(f), suf)
for line in stats:
cols = line.split(',')
if len(cols) == 5 and not line.startswith('Common Name'):
host = {}
host['cn'] = cols[0]
host['real'] = cols[1].split(':')[0]
host['recv'] = byte2str(int(cols[2]))
host['sent'] = byte2str(int(cols[3]))
host['since'] = cols[4].strip()
hosts.append(host)
if len(cols) == 4 and not line.startswith('Virtual Address'):
for h in hosts:
if h['cn'] == cols[1]:
h['virt'] = cols[0]
fmt = "%(cn)-25s %(virt)-18s %(real)-15s %(sent)13s %(recv)13s %(since)25s"
print fmt % headers
print "\n".join([fmt % h for h in hosts])
La suite plus tard ……….