Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 tongue

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 hmm
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 smile
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 smile 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. hmm

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 smile )

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é. cool

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) smile il faut juste que tu sois sur le serveur.

polinux a écrit :

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 wink

Hors ligne