RHUM : Différence entre versions
(Page créée avec « == RHUM == Réseau d'échange des données avec l'UM Réseau : 1 Vdom dédié sur FW-Campus -> EXCH (Exchange) * Réseau Extra : 194.57.116.201/255.255.255.252, vl... ») |
(→Contacts) |
||
| (35 révisions intermédiaires par 2 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
| − | == RHUM == | + | === RHUM === |
Réseau d'échange des données avec l'UM | Réseau d'échange des données avec l'UM | ||
| + | Il s'agit de mettre en place des ressources (serveurs, scripts, réseau) afin d'échanger avec l'UM des données RH (de type CSV) provenant de1 fichier | ||
| + | nos SI RH respectif. | ||
| − | Réseau : | + | |
| + | Les données échangée sont critique, il a été chois d'appliquer 3 niveaux de chiffrement : | ||
| + | *1 Les données transitent par un tunnel chiffré (IPSec) | ||
| + | *2 Les données transitent dans un canal chiffré (SFTP) | ||
| + | *3 Le fichier de données est lui même chiffré via GPG | ||
| + | |||
| + | ==Contacts== | ||
| + | |||
| + | |||
| + | Stéphane Denys | ||
| + | Administrateur Système | ||
| + | Service Infrastructure et Cloud (SIC) | ||
| + | stephane.denys@umontpellier.fr | ||
| + | |||
| + | Aurelien Morat | ||
| + | Admin réseau | ||
| + | aurelien.morat@umontpellier.fr | ||
| + | |||
| + | ==Schéma de principe== | ||
| + | |||
| + | [[Fichier:Rhum-principe.png]] | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==Réseau :== | ||
1 Vdom dédié sur FW-Campus -> EXCH (Exchange) | 1 Vdom dédié sur FW-Campus -> EXCH (Exchange) | ||
| Ligne 11 : | Ligne 38 : | ||
* Réseau du serveur de récupération auprès de la DSI : 10.22.0.0/24 vlan 1250 | * Réseau du serveur de récupération auprès de la DSI : 10.22.0.0/24 vlan 1250 | ||
* Réseau d’échange avec l'UM : 10.22.1.0/24 vlan 1251 | * Réseau d’échange avec l'UM : 10.22.1.0/24 vlan 1251 | ||
| + | |||
| + | Le tunnel IPSEC est monté entre notre firewall et leur machine d’échange directement. | ||
| + | |||
| + | |||
| + | Machine d'export vers l'UM : 10.22.1.10. La machine UM qui viens récupérer les fichiers est 10.22.2.180 (au travers du tunnel IPSec) | ||
| + | |||
| + | |||
| + | [[Fichier:RHUM_Reseau.jpg]] | ||
| + | |||
| + | ==Logiciel== | ||
| + | |||
| + | Le code est développé par la DR6, il est dispo sur la forge de la DSI CNRS : | ||
| + | |||
| + | https://src.koda.dsi.cnrs.fr/dr/dr06/partenaires | ||
| + | |||
| + | |||
| + | '''Configuration :''' | ||
| + | |||
| + | Le fichier de conf globale est /root/partenaires/.env | ||
| + | |||
| + | Donner l'ID de la clé privée qui permet de déchiffrer les paramètres de connexion (rsd_login et rsd_pwd) | ||
| + | |||
| + | ex : | ||
| + | |||
| + | # gpg --list-secret-keys | ||
| + | /root/.gnupg/pubring.kbx | ||
| + | ------------------------ | ||
| + | sec rsa4096 2023-05-11 [SC] | ||
| + | '''A1EE625028168BC49EB9AA624C1784CFF1FDEFF2''' | ||
| + | uid [ ultime ] DR13 - SSI (Clé de chiffrement pour les fichiers de conf) <dr13.ssi@cnrs.fr> | ||
| + | ssb rsa4096 2023-05-11 [E] | ||
| + | [...] | ||
| + | |||
| + | # cat .env | ||
| + | structures="https://webservices.dsi.cnrs.fr/services/eairef/v1/structures/v2/" | ||
| + | personnels="https://webservices.dsi.cnrs.fr/services/eairef/v1/personnes/v1/" | ||
| + | id_pgp_delegation="'''A1EE625028168BC49EB9AA624C1784CFF1FDEFF2'''" | ||
| + | depot = "10.22.1.10" | ||
| + | port="22" | ||
| + | utilisateur="exch" | ||
| + | pub = "/root/.ssh/id_rsa.pub" | ||
| + | rsa = "/root/.ssh/id_rsa" | ||
| + | |||
| + | |||
| + | L'export direct depuis le script php fonctionne a present. Pour le transfert, le mot de passe de la clés privée RSA est chiffré dans le fichier pass. | ||
| + | |||
| + | Attention, il faut que la clé RSA soit compatible avec la lib php ssh -> elle doit être du type pem (doit commencer par -----BEGIN RSA PRIVATE KEY-----) | ||
| + | |||
| + | Si ce n'est pas le cas, il faut la changer de forme avec la commande suivante : | ||
| + | |||
| + | ssh-keygen -p -m PEM -f /root/.ssh/id_rsa | ||
| + | |||
| + | |||
| + | |||
| + | Le fichier de conf pour l'UM est /root/partenaires/tutelles/um/um.yaml | ||
| + | |||
| + | Les lignes marquées d'un ### sont a passer a 0 dès que le script est réparé. | ||
| + | |||
| + | Il faut indiquer la clé publique de l'UM dans le fichier pour chiffrer les données : | ||
| + | |||
| + | cat /root/partenaires/tutelles/um/um.yaml | ||
| + | # u1m.yaml | ||
| + | # fichier de configuration de partenaire | ||
| + | partenaire: 22794 # idReseda du partenaire | ||
| + | id_pgp: '''17CA360F1FD6C4DBCA990D17A5D92158A68550B9''' | ||
| + | pathdepot: '/home/exch/temp/' # exemple '/partenaires/ul/' | ||
| + | |||
| + | |||
| + | # gpg --list-public-keys | ||
| + | /root/.gnupg/pubring.kbx | ||
| + | ------------------------ | ||
| + | pub rsa4096 2023-05-11 [SC] | ||
| + | A1EE625028168BC49EB9AA624C1784CFF1FDEFF2 | ||
| + | uid [ ultime ] DR13 - SSI (Clé de chiffrement pour les fichiers de conf) <dr13.ssi@cnrs.fr> | ||
| + | sub rsa4096 2023-05-11 [E] | ||
| + | |||
| + | pub rsa4096 2023-09-11 [SC] [expire : 2024-09-10] | ||
| + | B95532C921C07CE7AAB9AAE9BD60BA20AEECE6A0 | ||
| + | uid [ ultime ] CNRS-DR13 (Clé d'échanges UM -> CNRS) <dr13.ssi@cnrs.fr> | ||
| + | sub rsa4096 2023-09-11 [E] [expire : 2024-09-10] | ||
| + | |||
| + | pub rsa4096 2023-09-28 [SCEA] [expire : 2024-09-27] | ||
| + | '''17CA360F1FD6C4DBCA990D17A5D92158A68550B9''' | ||
| + | uid [ inconnue] '''UM <transfert@UM>''' | ||
| + | sub rsa4096 2023-09-28 [SEA] [expire : 2024-09-27] | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | '''SENS CNRS -> UM''' | ||
| + | |||
| + | Script lancé par la crontab de Import-Partenaires. La machine est déclarée auprès de la DSI pour pouvoir accéder au Webservice (en réalité, adresse de NAT de ce réseau). Le script est dispo dans /root/partenaires/partenaires.sh : | ||
| + | |||
| + | #!/bin/bash | ||
| + | |||
| + | cd /root/partenaires/ | ||
| + | |||
| + | #Traitement de l'UM : | ||
| + | |||
| + | #Generation du fichier chiffré : | ||
| + | php /root/partenaires/partenaires.php um | ||
| + | |||
| + | |||
| + | Sur le Dock-Partenaires-UM un second script envoie les fichiers sur la machine de l'UM. Il se trouve sur /root/push-to-UM.sh : | ||
| + | |||
| + | #!/bin/bash | ||
| + | |||
| + | unset -v latest | ||
| + | dir="/home/exch/temp" | ||
| + | |||
| + | if [ -z "$(ls -A $dir | grep um.json)" ]; then | ||
| + | echo "Pas de fichier à transferer" | ||
| + | |||
| + | else | ||
| + | echo "Le fichier de données existe" | ||
| + | |||
| + | for file in "$dir"/*; do | ||
| + | [[ $file -nt $latest ]] && latest=$file | ||
| + | done | ||
| + | |||
| + | echo Dernier fichier : $file | ||
| + | echo "Copie vers les serveurs de l'UM" | ||
| + | |||
| + | sftp svc-dock-um@10.22.2.180 << SFTP | ||
| + | cd /data/dock | ||
| + | put $file | ||
| + | bye | ||
| + | SFTP | ||
| + | |||
| + | echo Purge des anciens fichiers | ||
| + | |||
| + | rm -f $dir/um.json* | ||
| + | |||
| + | fi | ||
| + | |||
| + | |||
| + | Modification de l'authentification par clé : | ||
| + | |||
| + | Pour contrôler plus finement les connexion et limiter a SFTP, les clé autorisées sont dans /etc/ssh/authorized_keys/. Cela permet aux utilisateurs de ne pas changer leur clé eux même. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | '''Sens UM -> CNRS''' | ||
| + | |||
| + | Les fichiers sont générés par l'UM | ||
| + | |||
| + | Fichiers déposés dans /home/dock-um/ via scp sur Dock-Partenaires-UM | ||
| + | |||
| + | Actuellement, aucun traitement ce ce fichier il faut faire un script de transfert vers Import-Partenaires puis un script de suppression avant de faire un script d'envoi vers la DSI | ||
| + | |||
| + | == Chiffrement == | ||
| + | |||
| + | Les secrets de connexion aux webservices RESEDA sont chiffrés, voir doc sur le GIT | ||
| + | |||
| + | l faut les chiffrer sur une machine windows avec le logiciel Katia | ||
| + | |||
| + | |||
| + | Les fichiers échangés sont chiffrés avec GPG. Voici quelques commandes utiles : | ||
| + | |||
| + | |||
| + | Tous les ans, il faut regénérer une nouvelle clé puis l’échanger avec l'UM. C'est vrai dans les 2 sens : | ||
| + | |||
| + | |||
| + | '''Importer la clé générée par l'UM :''' | ||
| + | |||
| + | gpg --import ../pkey_UM.pub | ||
| + | |||
| + | '''Exporter la clé publique CNRS :''' | ||
| + | |||
| + | gpg --output pkey_CNRS.pub --armor --export B95532C921C07CE7AAB9AAE9BD60BA20AEECE6A0 | ||
| + | |||
| + | |||
| + | '''Déchiffrer le fichier UM :''' | ||
| + | |||
| + | gpg --decrypt DATARH-UM-CNRS.pdf.gpg | ||
| + | (voir la passphrase dans le gestionnaire de mot de passes) | ||
| + | |||
| + | '''Lister les clés :''' | ||
| + | |||
| + | gpg --list-k | ||
| + | /root/.gnupg/pubring.kbx | ||
| + | ------------------------ | ||
| + | pub rsa4096 2023-05-11 [SC] | ||
| + | A1EE625028168BC49EB9AA624C1784CFF1FDEFF2 | ||
| + | uid [ ultime ] DR13 - SSI (Clé de chiffrement pour les fichiers de conf) <dr13.ssi@cnrs.fr> | ||
| + | sub rsa4096 2023-05-11 [E] | ||
| + | |||
| + | pub rsa4096 2023-09-11 [SC] [expire : 2024-09-10] | ||
| + | B95532C921C07CE7AAB9AAE9BD60BA20AEECE6A0 | ||
| + | uid [ ultime ] CNRS-DR13 (Clé d'échanges UM -> CNRS) <dr13.ssi@cnrs.fr> | ||
| + | sub rsa4096 2023-09-11 [E] [expire : 2024-09-10] | ||
| + | |||
| + | pub rsa4096 2023-09-28 [SCEA] [expire : 2024-09-27] | ||
| + | 17CA360F1FD6C4DBCA990D17A5D92158A68550B9 | ||
| + | uid [ inconnue] UM <transfert@UM> | ||
| + | sub rsa4096 2023-09-28 [SEA] [expire : 2024-09-27] | ||
| + | |||
| + | |||
| + | '''Générer une clé :''' | ||
| + | |||
| + | gpg --full-generate-key | ||
| + | |||
| + | '''Supprimer une clé :''' | ||
| + | |||
| + | gpg --delete-keys B429787F4574903F6EFAF55A7252CF800DEAB316 | ||
Version actuelle datée du 14 février 2024 à 14:57
RHUM[modifier]
Réseau d'échange des données avec l'UM Il s'agit de mettre en place des ressources (serveurs, scripts, réseau) afin d'échanger avec l'UM des données RH (de type CSV) provenant de1 fichier nos SI RH respectif.
Les données échangée sont critique, il a été chois d'appliquer 3 niveaux de chiffrement :
- 1 Les données transitent par un tunnel chiffré (IPSec)
- 2 Les données transitent dans un canal chiffré (SFTP)
- 3 Le fichier de données est lui même chiffré via GPG
Contacts[modifier]
Stéphane Denys Administrateur Système Service Infrastructure et Cloud (SIC) stephane.denys@umontpellier.fr
Aurelien Morat Admin réseau aurelien.morat@umontpellier.fr
Schéma de principe[modifier]
Réseau :[modifier]
1 Vdom dédié sur FW-Campus -> EXCH (Exchange)
- Réseau Extra : 194.57.116.201/255.255.255.252, vlan 229
- Réseau du serveur de récupération auprès de la DSI : 10.22.0.0/24 vlan 1250
- Réseau d’échange avec l'UM : 10.22.1.0/24 vlan 1251
Le tunnel IPSEC est monté entre notre firewall et leur machine d’échange directement.
Machine d'export vers l'UM : 10.22.1.10. La machine UM qui viens récupérer les fichiers est 10.22.2.180 (au travers du tunnel IPSec)
Logiciel[modifier]
Le code est développé par la DR6, il est dispo sur la forge de la DSI CNRS :
https://src.koda.dsi.cnrs.fr/dr/dr06/partenaires
Configuration :
Le fichier de conf globale est /root/partenaires/.env
Donner l'ID de la clé privée qui permet de déchiffrer les paramètres de connexion (rsd_login et rsd_pwd)
ex :
# gpg --list-secret-keys
/root/.gnupg/pubring.kbx
------------------------
sec rsa4096 2023-05-11 [SC]
A1EE625028168BC49EB9AA624C1784CFF1FDEFF2
uid [ ultime ] DR13 - SSI (Clé de chiffrement pour les fichiers de conf) <dr13.ssi@cnrs.fr>
ssb rsa4096 2023-05-11 [E]
[...]
# cat .env structures="https://webservices.dsi.cnrs.fr/services/eairef/v1/structures/v2/" personnels="https://webservices.dsi.cnrs.fr/services/eairef/v1/personnes/v1/" id_pgp_delegation="A1EE625028168BC49EB9AA624C1784CFF1FDEFF2" depot = "10.22.1.10" port="22" utilisateur="exch" pub = "/root/.ssh/id_rsa.pub" rsa = "/root/.ssh/id_rsa"
L'export direct depuis le script php fonctionne a present. Pour le transfert, le mot de passe de la clés privée RSA est chiffré dans le fichier pass.
Attention, il faut que la clé RSA soit compatible avec la lib php ssh -> elle doit être du type pem (doit commencer par -----BEGIN RSA PRIVATE KEY-----)
Si ce n'est pas le cas, il faut la changer de forme avec la commande suivante :
ssh-keygen -p -m PEM -f /root/.ssh/id_rsa
Le fichier de conf pour l'UM est /root/partenaires/tutelles/um/um.yaml
Les lignes marquées d'un ### sont a passer a 0 dès que le script est réparé.
Il faut indiquer la clé publique de l'UM dans le fichier pour chiffrer les données :
cat /root/partenaires/tutelles/um/um.yaml # u1m.yaml # fichier de configuration de partenaire partenaire: 22794 # idReseda du partenaire id_pgp: 17CA360F1FD6C4DBCA990D17A5D92158A68550B9 pathdepot: '/home/exch/temp/' # exemple '/partenaires/ul/'
# gpg --list-public-keys
/root/.gnupg/pubring.kbx
------------------------
pub rsa4096 2023-05-11 [SC]
A1EE625028168BC49EB9AA624C1784CFF1FDEFF2
uid [ ultime ] DR13 - SSI (Clé de chiffrement pour les fichiers de conf) <dr13.ssi@cnrs.fr>
sub rsa4096 2023-05-11 [E]
pub rsa4096 2023-09-11 [SC] [expire : 2024-09-10]
B95532C921C07CE7AAB9AAE9BD60BA20AEECE6A0
uid [ ultime ] CNRS-DR13 (Clé d'échanges UM -> CNRS) <dr13.ssi@cnrs.fr>
sub rsa4096 2023-09-11 [E] [expire : 2024-09-10]
pub rsa4096 2023-09-28 [SCEA] [expire : 2024-09-27]
17CA360F1FD6C4DBCA990D17A5D92158A68550B9
uid [ inconnue] UM <transfert@UM>
sub rsa4096 2023-09-28 [SEA] [expire : 2024-09-27]
SENS CNRS -> UM
Script lancé par la crontab de Import-Partenaires. La machine est déclarée auprès de la DSI pour pouvoir accéder au Webservice (en réalité, adresse de NAT de ce réseau). Le script est dispo dans /root/partenaires/partenaires.sh :
#!/bin/bash cd /root/partenaires/ #Traitement de l'UM : #Generation du fichier chiffré : php /root/partenaires/partenaires.php um
Sur le Dock-Partenaires-UM un second script envoie les fichiers sur la machine de l'UM. Il se trouve sur /root/push-to-UM.sh :
#!/bin/bash
unset -v latest
dir="/home/exch/temp"
if [ -z "$(ls -A $dir | grep um.json)" ]; then
echo "Pas de fichier à transferer"
else
echo "Le fichier de données existe"
for file in "$dir"/*; do
$file -nt $latest && latest=$file
done
echo Dernier fichier : $file
echo "Copie vers les serveurs de l'UM"
sftp svc-dock-um@10.22.2.180 << SFTP
cd /data/dock
put $file
bye
SFTP
echo Purge des anciens fichiers
rm -f $dir/um.json*
fi
Modification de l'authentification par clé :
Pour contrôler plus finement les connexion et limiter a SFTP, les clé autorisées sont dans /etc/ssh/authorized_keys/. Cela permet aux utilisateurs de ne pas changer leur clé eux même.
Sens UM -> CNRS
Les fichiers sont générés par l'UM
Fichiers déposés dans /home/dock-um/ via scp sur Dock-Partenaires-UM
Actuellement, aucun traitement ce ce fichier il faut faire un script de transfert vers Import-Partenaires puis un script de suppression avant de faire un script d'envoi vers la DSI
Chiffrement[modifier]
Les secrets de connexion aux webservices RESEDA sont chiffrés, voir doc sur le GIT
l faut les chiffrer sur une machine windows avec le logiciel Katia
Les fichiers échangés sont chiffrés avec GPG. Voici quelques commandes utiles :
Tous les ans, il faut regénérer une nouvelle clé puis l’échanger avec l'UM. C'est vrai dans les 2 sens :
Importer la clé générée par l'UM :
gpg --import ../pkey_UM.pub
Exporter la clé publique CNRS :
gpg --output pkey_CNRS.pub --armor --export B95532C921C07CE7AAB9AAE9BD60BA20AEECE6A0
Déchiffrer le fichier UM :
gpg --decrypt DATARH-UM-CNRS.pdf.gpg (voir la passphrase dans le gestionnaire de mot de passes)
Lister les clés :
gpg --list-k
/root/.gnupg/pubring.kbx
------------------------
pub rsa4096 2023-05-11 [SC]
A1EE625028168BC49EB9AA624C1784CFF1FDEFF2
uid [ ultime ] DR13 - SSI (Clé de chiffrement pour les fichiers de conf) <dr13.ssi@cnrs.fr>
sub rsa4096 2023-05-11 [E]
pub rsa4096 2023-09-11 [SC] [expire : 2024-09-10]
B95532C921C07CE7AAB9AAE9BD60BA20AEECE6A0
uid [ ultime ] CNRS-DR13 (Clé d'échanges UM -> CNRS) <dr13.ssi@cnrs.fr>
sub rsa4096 2023-09-11 [E] [expire : 2024-09-10]
pub rsa4096 2023-09-28 [SCEA] [expire : 2024-09-27]
17CA360F1FD6C4DBCA990D17A5D92158A68550B9
uid [ inconnue] UM <transfert@UM>
sub rsa4096 2023-09-28 [SEA] [expire : 2024-09-27]
Générer une clé :
gpg --full-generate-key
Supprimer une clé :
gpg --delete-keys B429787F4574903F6EFAF55A7252CF800DEAB316

