#151 Le 20/11/2022, à 22:31
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Pour le serveur, il faut faire aussi une modif dans le fichier de conf :
trouver
;log-append /var/log/openvpn/openvpn.log
et retirer le ; pour que ce soit :
log-append /var/log/openvpn/openvpn.log
Puis sur le serveur :
sudo systemctl restart openvpn-server@server.service
sudo systemctl status openvpn-server@server.service
et sur le client (une fois le #149 fait):
sudo systemctl restart openvpn-client@client1.service
sudo systemctl status openvpn-client@client1.service
Hors ligne
#152 Le 20/11/2022, à 22:36
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
rappel moi le chemin du fichier
Hors ligne
#153 Le 20/11/2022, à 22:37
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Sur le serveur :
sudo nano /etc/openvpn/server/server.conf
Hors ligne
#154 Le 20/11/2022, à 22:41
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
pour le serveur c'est fait
facon-piscine@facon-piscine:~$ sudo systemctl restart openvpn-server@server.service
facon-piscine@facon-piscine:~$ sudo systemctl status openvpn-server@server.service
● openvpn-server@server.service - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vend>
Active: active (running) since Sun 2022-11-20 22:40:55 CET; 10s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 18695 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 6939)
Memory: 944.0K
CGroup: /system.slice/system-openvpn\x2dserver.slice/openvpn-server@server>
└─18695 /usr/sbin/openvpn --status /run/openvpn-server/status-serv>
nov. 20 22:40:55 facon-piscine systemd[1]: Starting OpenVPN service for server.>
nov. 20 22:40:55 facon-piscine systemd[1]: Started OpenVPN service for server.
lines 1-15/15 (END)
Hors ligne
#155 Le 20/11/2022, à 22:44
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
je bugg
je refais le #149 sur le client ??
Hors ligne
#156 Le 20/11/2022, à 22:47
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Pour pouvoir te répondre, donne moi le retour de :
grep remote /etc/openvpn/client/client1.conf
Hors ligne
#157 Le 20/11/2022, à 22:49
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
J'arrive
facon3@facon3-Inspiron-15-3511:~$ sudo systemctl restart openvpn-client@client1.service
facon3@facon3-Inspiron-15-3511:~$ sudo systemctl status openvpn-client@client1.service
● openvpn-client@client1.service - OpenVPN tunnel for client1
Loaded: loaded (/lib/systemd/system/openvpn-client@.service; disabled; ven>
Active: active (running) since Sun 2022-11-20 22:47:17 CET; 27s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 7592 (openvpn)
Status: "Pre-connection initialization successful"
Tasks: 1 (limit: 9150)
Memory: 1.8M
CPU: 15ms
CGroup: /system.slice/system-openvpn\x2dclient.slice/openvpn-client@client>
└─7592 /usr/sbin/openvpn --suppress-timestamps --nobind --config c>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: OpenVPN 2.5.5 x86_64-pc>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: library versions: OpenS>
nov. 20 22:47:17 facon3-Inspiron-15-3511 systemd[1]: Started OpenVPN tunnel for>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: TCP/UDP: Preserving rec>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Socket Buffers: R=[1310>
lines 1-23
● openvpn-client@client1.service - OpenVPN tunnel for client1
Loaded: loaded (/lib/systemd/system/openvpn-client@.service; disabled; ve>
Active: active (running) since Sun 2022-11-20 22:47:17 CET; 27s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 7592 (openvpn)
Status: "Pre-connection initialization successful"
Tasks: 1 (limit: 9150)
Memory: 1.8M
CPU: 15ms
CGroup: /system.slice/system-openvpn\x2dclient.slice/openvpn-client@clien>
└─7592 /usr/sbin/openvpn --suppress-timestamps --nobind --config >
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: OpenVPN 2.5.5 x86_64-p>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: library versions: Open>
nov. 20 22:47:17 facon3-Inspiron-15-3511 systemd[1]: Started OpenVPN tunnel fo>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: TCP/UDP: Preserving re>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Socket Buffers: R=[131>
lines 1-23
● openvpn-client@client1.service - OpenVPN tunnel for client1
Loaded: loaded (/lib/systemd/system/openvpn-client@.service; disabled; ve>
Active: active (running) since Sun 2022-11-20 22:47:17 CET; 27s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 7592 (openvpn)
Status: "Pre-connection initialization successful"
Tasks: 1 (limit: 9150)
Memory: 1.8M
CPU: 15ms
CGroup: /system.slice/system-openvpn\x2dclient.slice/openvpn-client@clien>
└─7592 /usr/sbin/openvpn --suppress-timestamps --nobind --config >
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: OpenVPN 2.5.5 x86_64-p>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: library versions: Open>
nov. 20 22:47:17 facon3-Inspiron-15-3511 systemd[1]: Started OpenVPN tunnel fo>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Chann>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: TCP/UDP: Preserving re>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Socket Buffers: R=[131>
lines 1-23
● openvpn-client@client1.service - OpenVPN tunnel for client1
Loaded: loaded (/lib/systemd/system/openvpn-client@.service; disabled; ven>
Active: active (running) since Sun 2022-11-20 22:47:17 CET; 27s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 7592 (openvpn)
Status: "Pre-connection initialization successful"
Tasks: 1 (limit: 9150)
Memory: 1.8M
CPU: 15ms
CGroup: /system.slice/system-openvpn\x2dclient.slice/openvpn-client@client>
└─7592 /usr/sbin/openvpn --suppress-timestamps --nobind --config c>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: OpenVPN 2.5.5 x86_64-pc>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: library versions: OpenS>
nov. 20 22:47:17 facon3-Inspiron-15-3511 systemd[1]: Started OpenVPN tunnel for>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Outgoing Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Incoming Control Channe>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: TCP/UDP: Preserving rec>
nov. 20 22:47:17 facon3-Inspiron-15-3511 openvpn[7592]: Socket Buffers: R=[1310>
lines 1-23
Hors ligne
#158 Le 20/11/2022, à 22:51
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Je n'avais pas compris que je n'avais pas corrigé la ligne correctement
facon3@facon3-Inspiron-15-3511:~$ grep remote /etc/openvpn/client/client1.conf
# You can have multiple remote entries
remote 192.168.0.30 1194
;remote my-server-2 192.168.0.30
# Choose a random host from the remote
;remote-random
remote-cert-tls server
facon3@facon3-Inspiron-15-3511:~$
Hors ligne
#159 Le 20/11/2022, à 22:51
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Sur le serveur, que donne :
sudo cat /var/log/openvpn/openvpn.log
Hors ligne
#160 Le 20/11/2022, à 22:52
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
facon-piscine@facon-piscine:~$ sudo cat /var/log/openvpn/openvpn.log
OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 22 2022
library versions: OpenSSL 1.1.1f 31 Mar 2020, LZO 2.10
NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
ROUTE_GATEWAY 192.168.0.254/255.255.255.0 IFACE=enp5s0 HWADDR=d4:5d:64:b9:8e:b2
TUN/TAP device tun0 opened
TUN/TAP TX queue length set to 100
/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
/sbin/ip route add 10.8.0.0/24 via 10.8.0.2
Could not determine IPv4/IPv6 protocol. Using AF_INET
Socket Buffers: R=[131072->131072] S=[16384->16384]
Listening for incoming TCP connection on [AF_INET][undef]:1194
TCPv4_SERVER link local (bound): [AF_INET][undef]:1194
TCPv4_SERVER link remote: [AF_UNSPEC]
GID set to nogroup
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
IFCONFIG POOL LIST
MULTI: TCP INIT maxclients=1024 maxevents=1028
Initialization Sequence Completed
facon-piscine@facon-piscine:~$
Hors ligne
#161 Le 20/11/2022, à 23:01
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Demain je dois me lever tôt pour mes chantiers si on ne fini pas ce soir ce n'est pas grave
j'ai honte de te dire ça toi qui est à fond pour me sortir du truc
Hors ligne
#162 Le 20/11/2022, à 23:03
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Pas de problème, on reprend ça plus tard.
J'aurais bien voulu voir le tunnel entre les 2 machines, mais il y a encore des choses à mettre en place.
Hors ligne
#163 Le 20/11/2022, à 23:07
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
c'est vraiment sympa que tu m'aides comme cela
pas de souci pour dans la semaine peut être
comme tu voudras
Bonne nuit
Hors ligne
#164 Le 21/11/2022, à 10:05
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Bonjour,
Le logiciel utilisé pour la mise en place de tunnel(s) VPN est openVPN. Le logiciel utilisé pour générer les certificats et clés est easy-rsa. Pour installer ces logiciels, sur les machines concernées :
sudo apt install openvpn
sudo apt install easy-rsa
openVPN est nécessaire sur le serveur et les clients, easy-rsa est nécessaire pour l'autorité de certification (voir ci-dessous)
####################################################################################
La première étape consiste à générer l'ensemble des fichiers qui servent au chiffrage et à l'authentification
Vue des fichiers qu'il faut générer pour le chiffrage et les authentifications :
Filename Needed By Purpose Secret
ca.crt server + all clients Root CA certificate NO
ca.key CA machine only Root CA key YES
server.crt server only Server Certificate NO
server.key server only Server Key YES
client1.crt client1 only Client1 Certificate NO
client1.key client1 only Client1 Key YES
ta.key server + all clients TLS key YES
Pour ça, il faut créer des infrastructures et on utilise easy-rsa (en version 3 à partir d'Ubuntu 20.04LTS) pour générer les certificats, les clés serveur et clients. openvpn est utilisé pour générer la clé d'authentification ta.key (utilisées pour le TLS)
Pour les certificats et la signature des clés, on passe par une autorité de certification (CA). Ici, c'est une autorité de certification privée On cherche à la protéger et il y a plusieurs manières de le faire :
- Une machine dédié, déconnectée du réseau quand elle n'est pas utilisée pour certifier (cette machine peut être une machine virtuelle)
- Un support amovible, utilisé uniquement pour ça, également débranché lorsqu'il n'y a pas besoin de générer clés et certificat
Ici, la seconde solution a été appliquée, easy-rsa a été installé sur le serveur, les fichiers générés stockés sur une clé USB.
La procédure est décrite ici : https://forum.ubuntu-fr.org/viewtopic.p … #p22620903 (post #46). Ci-dessous une version condensée :
[Version condensée]
Tout d'abord créer 2 fichiers à la racine :
cd
nano vars1
Copier dedans (modifier éventuellement, à convenance, les informations personnelles) :
set_var EASYRSA_REQ_COUNTRY "FR"
set_var EASYRSA_REQ_PROVINCE "Mon departement"
set_var EASYRSA_REQ_CITY "Ma ville"
set_var EASYRSA_REQ_ORG "Mon entreprise"
set_var EASYRSA_REQ_EMAIL "mon.adresse@email.fr"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
set_var EASYRSA_CERT_EXPIRE 36500
CTRL + o -Entrée - CTRL + x
La dernière ligne est optionnelle, sans elle, les certificats émis ont une validité par défaut de 3 ans.
nano vars2
Copier dedans
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
CTRL + o -Entrée - CTRL + x
export DIR_CLE= /media/$USER/CLE-USB/CA-DIR # Remplacer ce chemin par celui de la clé...
cd $DIR_CLE/
mkdir -p server-configs/keys
mkdir -p client-configs/keys
mkdir server
mkdir CA
cp ~/vars1 $DIR_CLE/CA/vars
cp ~/vars2 $DIR_CLE/server/vars
cd $DIR_CLE/server/
./easyrsa init-pki
openssl rand -writerand pki/.rnd
./easyrsa gen-req server nopass
cp pki/private/server.key $DIR_CLE/server-configs/keys
./easyrsa gen-req client1 nopass
cp pki/private/client1.key $DIR_CLE/client-configs/keys/
cd $DIR_CLE/server-configs/keys
openvpn --genkey --secret ta.key
cp ta.key $DIR_CLE/client-configs/keys/
cd $DIR_CLE/CA/
./easyrsa init-pki
openssl rand -writerand pki/.rnd
./easyrsa build-ca nopass
./easyrsa import-req ../server/pki/reqs/server.req server
./easyrsa sign-req server server
cp pki/issued/server.crt $DIR_CLE/server-configs/keys
cp pki/ca.crt $DIR_CLE/server-configs/keys
./easyrsa import-req ../server/pki/reqs/client1.req client1
./easyrsa sign-req client client1
cp pki/issued/client1.crt $DIR_CLE/client-configs/keys/
cp pki/ca.crt $DIR_CLE/client-configs/keys/
A la commande ./easyrsa gen-req client1 nopass il est demandé d'entrer un nom pour ce client, c'est certes optionnel, néanmoins c'est plus simple quand il faut aller chercher des informations dans les logs. (Sinon, c'est le nom de fichier par défaut, ici, client1, ce qui n'est pas très parlant...)
[/Version condensée]
En cas d'erreur, si la procédure pour générer certificats et clés doit être reprise, voir post suivant, à partir de "Pour modifier ce que l'on a fait jusqu'à présent". Adapter les chemins...
####################################################################################
La seconde étape consiste à configurer openVPN, côté serveur et côté client
Vue des fichiers de configuration :
Filename Needed By Purpose Secret
server.conf server server configuration NO
clientn.conf one per client client n configuration NO (/!\ external IP address)
Les fichiers de configuration pour le serveur sont à mettre dans /etc/openvpn/server
On doit donc avoir :
moi@server:~$ ls /etc/openvpn/server
ca.crt server.conf server.crt server.key ta.key
moi@server:~$
Les fichiers de configuration pour le client sont à mettre dans /etc/openvpn/client
moi@client1:~$ ls /etc/openvpn/client
ca.crt client1.conf client1.crt client1.key ta.key
moi@client1:~$
Ici, il n'y a pas d'échange de clés Diffie-Hellman utilisant un ficher dh.pem car les demandes de certificats sont configurées pour utiliser la cryptographie sur les courbes elliptiques (ECC) afin de générer des clés et des signatures sécurisées pour les clients et le serveur. (https://www.digitalocean.com/community/ … u-20-04-fr)
La procédure est décrite ici pour le serveur : https://forum.ubuntu-fr.org/viewtopic.p … #p22620905 (post #48)
La procédure est décrite ici pour le client : https://forum.ubuntu-fr.org/viewtopic.p … #p22620923 (post #53)
####################################################################################
La troisième étape consiste configurer la gestion du réseau côté serveur
Le tunnel VPN étant un réseau différent du réseau local, il faut activer l'IP forwarding afin que le serveur se comporte comme un routeur (https://www.it-connect.fr/activer-lip-f … -ipv4ipv6/)
Editer /etc/sysctl.conf :
sudo nano /etc/sysctl.conf
décommenter net.ipv4.ip_forward=1
décommenter dans ce fichier = retirer le #
Idem pour net.ipv6.conf.all.forwarding=1 (jamais testé de mon côté) pour l'IPv6
On vérifie que les lignes sont bien décommentées :
grep -E "ip_forward|all.forwarding" /etc/sysctl.conf
L'autre chose à faire est la configuration du pare-feu pour masquer tout le trafic en provenance du tunnel VPN (MASQUERADE). Ca peut se faire de différentes manières, IPTABLES ou UFW entre autres. Ici, c'est fait avec une simple ligne IPTABLES et une sauvegarde des règles IPTABLES avec le script iptables-persistent.
Rechercher d'abord l'interface réseau avec
ip a
Puis la reporter dans la commande suivante (ici on a pris l'exemple eth0) :
sudo iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE
sudo apt install iptables-persistent
Valider la sauvegarde des tables. Si iptables-persistent est déjà installé :sudo iptables-save > /etc/iptables/rules.v4
Digital Ocean le propose avec UFW.
/!\ : Ne pas utiliser UFW et iptables-persistent en même temps, c'est soit l'un, soit l'autre (l'expérience en a été faite ici)
####################################################################################
La quatirème étape consiste exposer le serveur VPN à l'extérieur et le démarrer
Pour ça, il faut ouvrir un port sur le routeur internet (la box) et rediriger ce port vers le serveur VPN, puis démarrer le serveur.
Un serveur ouvert à l'extérieur doit être à jour. Une gestion des mises à jour automatique et quotidienne doit être mise en place. Prendre en compte les mises à jour noyau qui nécessite soit une gestion particulière, soit un reboot.
Il est souhaitable de mettre en place une gestion des logs. logrotate étant l'utilitaire en charge de la rotation des logs, voici une configuration possible :
sudo nano /etc/logrotate.d/openvpn
Coller dedans :
/var/log/openvpn/openvpn.log {
rotate 2
weekly
compress
missingok
notifempty
}
CTRL + o - Entrée - CTRL + x
Il est possible de limiter les possibilités d'attaques par DoS ou par la force brut en mettant en place fail2ban. Néanmoins une vrai attaque est faite depuis différentes adresses IP (donc un fail2ban aura une influence limitée...)
Le démarrage du serveur se fait avec systemd :
sudo systemctl start openvpn-server@server.service
et on vérifie que le serveur est bien démarré :
sudo systemctl status openvpn-server@server.service
####################################################################################
La cinquième étape consiste à démarrer le client et tester la communication
Il est possible d'utiliser openVPN directement côté client. Le lancement d'openVPN se fait alors en ligne de commande (ou par un lanceur), la solution étant décrite ici : https://forum.ubuntu-fr.org/viewtopic.p … #p22624155 (post #276)
Sinon, une solution sous Ubuntu est l'utilisation du plug-in network-manager-openvpn. La solution est décrite ici : https://forum.ubuntu-fr.org/viewtopic.p … #p22625794 (post #365)
####################################################################################
Ajout d'un client supplémentaire
La procédure est décrite ici : https://forum.ubuntu-fr.org/viewtopic.p … #p22626127 (post #378)
####################################################################################
Renouveler un certificat qui arrive à expiration (par exemple, ici le certificat de client1) :
Mettre ta clé (sur le serveur) et aller dans le répertoire CA de la clé :
export DIR_CLE= /media/$USER/CLE-USB/CA-DIR # Remplacer ce chemin par celui de la clé...
cd $DIR_CLE/CA
./easyrsa renew client1
cp pki/issued/client1.crt ../client-configs/keys
Le nouveau certificat se trouve sur la clé ici : /media/$USER/CLE-USB/CA-DIR/client-configs/keys/client1.crt, à copier dans le répertoire du client qui va bien (ici, nous les avons mis dans /etc/openvpn/client)
Remplacer 1 par le chiffre qui va bien (ou client1 par le nom qui va bien)
/!\ : Un nouveau certificat peut être émis 30 jours avant l'expiration du précédent, pas avant.
Dernière modification par NicoApi73 (Le 13/01/2024, à 08:11)
Hors ligne
#165 Le 22/11/2022, à 15:31
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Bonjour,
EDIT : Mise en forme pour avoir le post ci-dessus uniquement dédié à la configuration
Tu peux commencer par refaire ce qui est décrit après "Pour modifier ce que l'on a fait jusqu'à présent" dans le post précédent. Tu as l'explication du pourquoi juste au dessus et n'hésite pas si tu as des questions.
####################################################################################
Erreur à corriger
####################################################################################
au #68, on a l'erreur suivante pour l’initialisation de la génération du certificat (ca.crt) et l'initialisation de la génération des clés (*.key) :
Can't load /media/facon-piscine/server/facon-piscine/CA/pki/.rnd into RNG
139838347605312:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/media/facon-piscine/server/facon-piscine/CA/pki/.rnd
Il est dit que le système ne peut pas charger le fichier pki/.rnd Ce fichier contient une chaîne aléatoire pour générer les certificats et clés. Je ne sais pas pourquoi il ne peut pas l'ouvrir, puisque ce fichier est créé pendant cette procédure, à priori un bug de openssl.
Le moyen d'y remédier est de générer ce fichier manuellement (c'est la méthode que j'ai trouvée, je n'ai pas trouvé comment corriger à la source...), avant la génération du certificat du CA et avant de générer la première clé. Pour ça, après chaque commande
./easyrsa init-pki
il faut passer la commande
openssl rand -writerand pki/.rnd
Pour modifier ce que l'on a fait jusqu'à présent, tu montes ta clé sur ton serveur, qui sert aussi de CA (avec la clé) et tu appliques la procédure suivante, en répondant à certaines questions qui te seront posées (par exemple valider la réinitilisation/suppression lors de l'init-pki) :
cd /media/facon-piscine/server/facon-piscine/
mkdir -p server-configs/keys
rm client-configs/keys/*
cd /media/facon-piscine/server/facon-piscine/server/
./easyrsa init-pki
openssl rand -writerand pki/.rnd
./easyrsa gen-req server nopass
cp pki/private/server.key /media/facon-piscine/server/facon-piscine/server-configs/keys
./easyrsa gen-req client1 nopass
cp pki/private/client1.key /media/facon-piscine/server/facon-piscine/client-configs/keys/
cp /etc/openvpn/server/ta.key /media/facon-piscine/server/facon-piscine/server-configs/keys
cp /etc/openvpn/server/ta.key /media/facon-piscine/server/facon-piscine/client-configs/keys/
cd /media/facon-piscine/server/facon-piscine/CA/
./easyrsa init-pki
openssl rand -writerand pki/.rnd
./easyrsa build-ca nopass
./easyrsa import-req ../server/pki/reqs/server.req server
./easyrsa sign-req server server
cp pki/issued/server.crt /media/facon-piscine/server/facon-piscine/server-configs/keys
cp pki/ca.crt /media/facon-piscine/server/facon-piscine/server-configs/keys
./easyrsa import-req ../server/pki/reqs/client1.req client1
./easyrsa sign-req client client1
cp pki/issued/client1.crt /media/facon-piscine/server/facon-piscine/client-configs/keys/
cp pki/ca.crt /media/facon-piscine/server/facon-piscine/client-configs/keys/
A ce stade dans /media/facon-piscine/server/facon-piscine/client-configs/keys/, tu dois avoir :
client1.key ta.key client1.crt ca.crt
et pour /media/facon-piscine/server/facon-piscine/server-configs/keys
server.key ta.key server.crt ca.crt
Tu copies les fichiers servers dans le répertoire associé :
sudo cp /media/facon-piscine/server/facon-piscine/server-configs/keys/* /etc/openvpn/server
Tu démontes la clé, tu vas sur ton client et tu transfères les fichiers clients :
sudo cp /media/facon3/server/facon-piscine/client-configs/keys/* /etc/openvpn/client
####################################################################################
Pour la suite
####################################################################################
Tu peux voir également comment ouvrir un port sur ta box, fixer l'adresse IP de ton serveur et rediriger le port ouvert de ta box vers le port 1194 de ton serveur.
Je continuerai à mettre à jour le post ci-dessus pour capturer tout ce qu'il y a à faire.
J'ai tout refait dans des machines virtuelles, en simulant un passage par un réseau extérieur. Normalement, il n'y a pas de problème de configuration.
Dernière modification par NicoApi73 (Le 23/11/2022, à 08:52)
Hors ligne
#166 Le 22/11/2022, à 21:53
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Bonsoir NicoApi73
Il semblerait que ces deux dernières commandes n'aient pas fonctionnées
facon-piscine@facon-piscine:/media/facon-piscine/server/facon-piscine/CA$ cp pki/issued/client1.crt /media/facon-piscine/server/facon-piscine/client-configs/keys/client-configs/keys/
cp: impossible de créer le fichier standard '/media/facon-piscine/server/facon-piscine/client-configs/keys/client-configs/keys/': Aucun fichier ou dossier de ce type
facon-piscine@facon-piscine:/media/facon-piscine/server/facon-piscine/CA$ cp pki/ca.crt /media/facon-piscine/server/facon-piscine/client-configs/keys/client-configs/keys/
cp: impossible de créer le fichier standard '/media/facon-piscine/server/facon-piscine/client-configs/keys/client-configs/keys/': Aucun fichier ou dossier de ce type
facon-piscine@facon-piscine:/media/facon-piscine/server/facon-piscine/CA$
ce sont les 2 dernières commandes de la modification
Hors ligne
#167 Le 22/11/2022, à 22:09
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Il n'y a rien de grave. Je suis sur smartphone. C'est une erreur de path. Je te donne la correction un peu plus tard
Hors ligne
#168 Le 22/11/2022, à 22:44
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
J'ai fait une erreur de copier-coller :
Les bonnes commandes :
cp /media/facon-piscine/server/facon-piscine/CA/pki/issued/client1.crt /media/facon-piscine/server/facon-piscine/client-configs/keys/
cp /media/facon-piscine/server/facon-piscine/CA/pki/ca.crt /media/facon-piscine/server/facon-piscine/client-configs/keys/
Ci-dessus il y a les chemins absolus pour la source, comme ça, pas d'erreur.
Hors ligne
#169 Le 22/11/2022, à 23:27
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Alors pour pour /media/facon-piscine/server/facon-piscine/server-configs/keys
Il manque : ta.key
Hors ligne
#170 Le 23/11/2022, à 00:07
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
C'est la clé TLS. Elle est la même pour le serveur et les clients et je t'ai fait reprendre celle qui avait été généré initialement.
Ta clé sur le serveur tu passes :
cp /etc/openvpn/server/ta.key /media/facon-piscine/server/facon-piscine/server-configs/keys
Dernière modification par NicoApi73 (Le 23/11/2022, à 08:53)
Hors ligne
#171 Le 23/11/2022, à 09:06
- joe28
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Tout comme Alex et Bruno,e je conseillerai le tunnel SSH.
[mode relou]
Le VPN est très bien pour des entreprises ayant un besoin complexe (chez mon client, grand compte, je suis en VPN), comme par exemple l'accès à de multiples services sur différentes machines distantes.
Or le besoin de polinux est une simple connexion distante à une base de donnée MySQL (et accessoirement à l'arborescence des répertoires de la machine distant au travail). Le VPN, c'est tué une mouche avec un bazzouka, cela me semble démesuré par rapport au besoin.
La machine distante au travail polinux est une machine sous Linux, je trouve dommage de ne pas profiter du serveur SSH. Si sa machine était sous Windows, cela aurait été bien plus compliqué mais là, c'est du Linux, et "l'ADN de communication" dans le milieu de Linux est du SSH. De plus pour maintenir sa machine à distance, la connexion SSH est toujours pratique, on peut se faire aider sur les forums.
Le VPN me semble inutillement compliqué. Je le vois dans vos échanges.
Une fois que polinux aurait réussit à se connecter depuis chez lui en SSH au poste de son travail, il lui suffirait de créer un tunnel ssh sur le port d'écoute par défaut de MySQL, le port 3306 en ajoutant une option dans sa commande de connexion SSH.
Puis une fois que polinux aurait validé sa connexion SSH par mot de passe, il faut s'il le souhaite passer en authentification par clef privé/public. La mise en place, se fait 3 commandes :
1./ création de la clef depuis le poste client
2./ upload de la clef sur le serveur (poste du travail). ssh propose une commande d'upload avec ssh-copy-id
3./ suppression de l'authentification par mot de passe.
[/mode relou]
Exemple concret similaire avec une connexion distante à la base de donnée.
Dans mon cas, j'ai un raspberry chez ma copine hébergeant un piwigo (portail photo Web) avec un serveur Web + un serveur MySQL/MariaDB.
Test de la connexion depuis chez moi, sans avoir établi le tunnel :
joe@joe:~$ mysql --user=backup --password=joe --host=localhost --port 3306 --database=piwigo_public
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
joe@joe:~$ mysql --user=backup --password=joe --host=localhost --port 3306 --database=piwigo_public --protocol=TCP
ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (115)
J'établis donc un tunnel SSH en me connectant sur serveur.dyndns.com (adresse de la box) :
joe@joe:~$ ssh -L 3306:localhost:3306 root@serveur.dyndns.com
Enter passphrase for key '/home/joe/.ssh/id_rsa':
Linux rpi4-20210823 5.10.0-12-arm64 #1 SMP Debian 5.10.103-1 (2022-03-07) aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Nov 23 07:58:40 2022 from 93.16.74.115
root@rpi4-20210823:~#
Je recommence ma tentative de connexion :
joe@joe:~$ mysql --user=backup --password=joe --host=localhost --port 3306 --database=piwigo_public --protocol=TCP
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 19982
Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [piwigo_public]>
Et au miracle, j'arrive à me connecter à distance à la base de donnée depuis chez moi.
PS : la commande mysql est installé par défaut sur tous les ubuntu et variantes, pratique pour tester la connexion à la base de donnée.
Et pour l'accès au fichier de la machine distante, il est possible de faire un montage distant via sshfs
https://doc.ubuntu-fr.org/ssh#monter_un … ce_a_sshfs
Enfin bon, je pense que maintenant cela vaut plus le coup de passer par du SSH. Polux a fait trop de manip de configuration VPN mais c'était pour dire que le VPN est sur-dimensionné, surtout quand on est sous Linux, on a une chouette alternative.
Hors ligne
#172 Le 23/11/2022, à 12:48
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
@joe : Bonjour,
Au #4 j'ai suggéré 2 solutions, le tunnel SSH ou le VPN. Je ne peux aider dans la mise en œuvre du SSH ne l’utilisant que pour une connexion par terminal à une machine distante. Je ne me suis pas intéressé aux autres possibilités de ce service, n'en ayant pas le besoin.
Alex est intervenu au post #23 pour proposer une solution SSH. J'ai indiqué au post #24 que Laurux intégrait cette possibilité, mais avec une connexion par mot de passe. Je me refuse à proposer une solution pérenne de ce type, qui peut poser des gros problèmes de sécurité informatique (https://forum.ubuntu-fr.org/viewtopic.php?id=2075080). Alex a précisé la solution technique pour connecter Laurux au serveur mySQL via une connexion SSH par clé au post #32.
L'autre proposition vient de airvb, proposant d'utiliser des fonctionnalités de la FreeBox et Wireguard. Je ne connais ni l'un, ni l'autre, et par conséquent je n'ai aucun argument technique là-dessus.
Polinux a exprimé le souhait au post #25 d'utiliser plusieurs services (mysql et partage de fichiers). Je n'ai jamais regardé à faire passer plusieurs services par un tunnel SSH ayant déjà un VPN pour adresser différents besoins. J'ai donc proposé de basculer sur une solution VPN après la mise en œuvre d'une solution SSH temporaire pour la compta, car c'est la solution que je connais pour accéder à plusieurs services. (#26)
Pour quelqu'un familier de la ligne de commande et qui connait un peu le fonctionnement des réseaux, la mise en place d'un serveur VPN est finalement simple et logique, mais avec beaucoup plus d'étapes que ce que tu as décrit ci-dessus pour SSH. Je vois bien que Polinux n'est pas très familier du terminal (et je ne sais pas pour sa connaissance des réseaux informatiques), même s'il s'en sort très bien. Par conséquent, c'est effectivement laborieux et je n'ai aucun problème avec ça.
Avant ton intervention, si quelqu'un a proposé une solution intégrant la compta et l'accès aux dossiers, j'en suis passé à côté. Nuliel a effectivement évoqué SSHFS au #39, quand il est intervenu suite à ma question sur le serveur CA et je n'y ai pas prêté suffisamment attention. Je n'ai pas vu d'intervention de Bruno dans ce fil de discussion, je n'ai pas eu non plus de message privé. Je n'ai aucune idée de ce qu'il conseillerait et ne me permettrais donc pas de le citer.
Techniquement, la solution SSH et SSHFS que tu proposes ci-dessus répond au besoin, avec beaucoup moins de lignes de commandes. Je ne la connaissais pas et si la proposition technique d'Alex couvrait également le partage de fichiers, je ne l'ai pas compris. Je laisse le soin à Polinux de préciser son choix entre SSH/SSHFS et VPN. S'il s'oriente vers SSH/SSHFS, je laisserais la main. (Pour éviter toute ambiguïté, ce n'est pas une frustration de ma part par rapport à un VPN, je ne l'ai simplement jamais mise en oeuvre )
Dernière modification par NicoApi73 (Le 23/11/2022, à 16:55)
Hors ligne
#173 Le 23/11/2022, à 19:09
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Bonsoir à tous et merci pour l’intérêt que vous portez à ma demande.
Effectivement la solution SSH semble plus simple à mettre en œuvre.
Après le lancement de mon fil de discussion j'ai du prendre une décision et celle NicoApi73 me semblait complète et sécure et en plus d'être présent pour me guider.
Je suis pisciniste sur les chantier la journée et le reste du temps je gère ma société et fervent supporter de linux.
J'ai pris le parti que l'intégralité de l'informatique serait sous linux ce qui pour un pisciniste représente un investissent mental important.
Ma qualification informatique est "bon à rien mais prêt à tout" alors je fonce....
Je vais donc terminer mon installation du VPN marteau et enclume, les mouches n'ont qu'a bien se tenir.
Mais je n'exclus pas de revenir ultérieurement sur la connexion SSH pour la beauté du geste et comprendre cette autre possibilité.
Hors ligne
#174 Le 23/11/2022, à 19:11
- polinux
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Petite question,
Pour passer la commande :
cp /etc/openvpn/server/ta.key /media/facon-piscine/server/facon-piscine/server-configs/keys
Je dois être positionné sur quel dossier ?
Hors ligne
#175 Le 23/11/2022, à 19:37
- NicoApi73
Re : Connexion distante d'un PC sur mon serveur [RESOLU]
Peu importe, les chemins commençant par / partent de la racine (ce sont des chemins absolus) il faut juste que tu sois sur le serveur.
Ma qualification informatique est "bon à rien mais prêt à tout" alors je fonce....
Ce n'est pas "un bon à rien" qui installe un serveur MySQL et utilise Laurux
Hors ligne