Archives de catégorie : Composant VPN

Passerelle GSM DATA

Fixer le nom du modem

  • Créer un fichier dans /etc/udev/rules.d/80-modem.rules
cat > /etc/udev/rules.d/80-modem.rules << EOF
# udevadm info -a -n /dev/ttyACM0 
SUBSYSTEM=="tty", ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="004f", SYMLINK+="modemGSM"
EOF
  • Désactiver et stopper ModemManager
systemctl disable ModemManager.service
systemctl stop ModemManager.service

mgetty

Installation du paquet

  • Selon la distribution
yum install mgetty
apt-get install mgetty

Configuration

  • Ajout de l’entrée modemGSM dans le fichier /etc/mgetty+sendfax/mgetty.config
cat >> /etc/mgetty+sendfax/mgetty.config << EOF
port modemGSM
init-chat "" ATZ OK AT+CRC=0 OK
speed 9600
EOF
  • Dans /etc/mgetty+sendfax/login.config, décommenter la ligne :
/AutoPPP/ -     a_ppp   /usr/sbin/pppd auth -chap +pap login debug
systemctl enable mgetty@modemGSM
  • Ajouter l’option -D dans Exec du service mgetty@modemGSM
nano /etc/systemd/system/getty.target.wants/mgetty@modemGSM.service
systemctl daemon-reload
  • Démarrage du service mgetty@modemGSM
systemctl start mgetty@modemGSM.service

pppd

  • Créer le fichier /etc/ppp/options
cat > /etc/ppp/options << EOF
asyncmap 0
auth
crtscts
hide-password
172.16.3.254:172.16.3.1
netmask 255.255.255.0
noipdefault
-detach
+pap
debug
kdebug 4
proxyarp
login
lcp-echo-interval 30
lcp-echo-failure 4
noipx
EOF
  • Ajout d’une entrée PAP
cat >> /etc/ppp/pap-secrets << EOF
user * motdepasse *
EOF

Générer des certificats pour Ipsec avec Openssl

Dans un précédant article, j’ai pu configurer un serveur ipsec dans ipfire, soit mettre en place un serveur Ipsec/Strongswan et des clients Windows 7, Debian 7 ou Iphone, tout par le programme « ipsec pki » . Dans cet article, j’utilise uniquement le programme Openssl. Pour simplifier le processus de création des certificats d’autorités, client et serveur, je m’appuie sur mes scripts stockés sur Github.

A/ En résumé :

Avant de se lancer, je tiens à vous signaler qu’il ne faut surtout pas mettre des caractères avec des accents. En effet, la connexion VPN ne se fera pas à cause d’un différent sur les jeux de caractères (ANSI/UTF8). Les scripts suivants permettent de modifier les fichier de configuration à la volé et de générer tous les certificats.

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »rootfs/root/openssl » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]

En détail

Petit rappel: Openssl s’appuie sur le fichier /etc/ssl/openssl.cnf par défaut, cependant, il est possible de spécifier un autre fichier avec l’otion [-config $FILE]. Un certificat est composé de 2 fichiers, une clé privé et une clé publique. Dans le cas d’une configuration IpSec, le client doit avoir le drapeau  clientAuth  et serverAuth et doivent être signé par la même autorité.

B/ Le fichier de configuration d’OpenSSL.

B.1/ Génération du certificat d’autorité

Dans un premier temps, le champs [ca] dans le fichier openssl.cnf désigne l’autorité par défaut, soit [ROOT].

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »ipfire/rootfs/etc/ssl/openssl.cnf » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]

  • Policy_match sont les règles définies pour autoriser la création d’un sous certificat d’autorité.
  • req_distinguished_name normalise les champs composants le certificat. Les champs terminant par _default permettent à OpenSSL de suggérer une valeur lors de la génération du certificat. Je vous invite à renseigner la localité, le mail, la ville et le nom de l’organisation, le reste diffère.
  • Bien definir pour le certificat d’autorité la variable keyUsage avec les drapeaux critical, digitalSignature, cRLSign, keyCertSign.

Le fichier openssl.cnf renseigné à ce point, il est tout à fait possible de définir son certificat d’autorité.

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »ipfire/rootfs/usr/local/sbin/caroot » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]
Ensuite, lançons le premier script.

caroot

B.2/ Génération d’un sous certificat d’autorité

Pour simplifier les choses,  je préfère utiliser un autre fichier de configuration pour ipsec.

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »ipfire/rootfs/etc/ssl/ipsec.cnf » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]

Script pour générer un sous-certificat d’autorité.

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »ipfire/rootfs/usr/local/sbin/casec » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]

Pour générer le certificat d’autorité pour Ipsec, lançons le deuxième script.

casec

B.3/ Génération du certificat serveur.

DNS.1 est l’étiquette qui doit correspondre absolument à l’adresse IP ou FQDN du serveur dans le fichier ipsec.cnf.

  • extentedKeyUsage prend la valeur serverAuth, soit l’option pour que le certificat soit exploitable par un serveur ipsec.
  • Il est possible de générer plusieurs certicats pour autant de serveur.

Puis, pour générer le certificat serveur:

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »ipfire/rootfs/usr/local/sbin/secsrv » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]
Puis, lançons le troisième script.

[bash]secsrv[/bash]

B.4/ Génération du certificat client.

Dans le fichier ipsec.cnf, à noté que extentedKey prend la valeur clientAuth, soit l’option pour que le certificat soit exploitable par un client ipsec.

Il est possible de générer plusieurs certificats serveurs pour le même client sous la même autorité.
Donc, pour générer le certificat client:

[pcsh lang= »bash » user= »jbsky » repos= »jbsky » path_id= »ipfire/rootfs/usr/local/sbin/secacces » revision= »master » tab_size= »4″ hl_lines= » » provider= »github »/]

Enfin, lançons le dernier script.

[bash]secacces[/bash]