« FAQ:Crypt FichiersMotDePasse » : différence entre les versions
| (12 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 10 : | Ligne 10 : | ||
<br> | <br> | ||
===Principes de fonctionnement=== | ===Principes de fonctionnement=== | ||
Actuellement il n'est pas toujours possible de s'affranchir des fichiers de mots de passe lorsque l'on souhaite automatiser des tâches avec des scripts.<br> | |||
Comme pour les autres outils les scripts de dbSQWare vont avoir besoin de fichiers de mots de passe afin d'établir des connexions aux moteurs SGDB.<br> | |||
Par défaut le plus souvent ces fichiers de mot de passe sont stockés à la racine du $HOME de l'utilisateur.<br> | |||
Vous avez la possibilité de changer cela avec les variables d'environnements gvsqw_<rdbms>PassFile et gvsqw_DistPasswdFile, par exemple pour MS SQL cela sera gvsqw_MssqlPassFile et gvsqw_DistPasswdFile.<br> | |||
<br> | |||
Afin d'améliorer les standards de sécurité nous vous proposons de chiffrer ces fichiers pour qu'ils ne soient plus lisibles par n'importe quel utilisateur connecté à votre serveur.<br> | |||
Vous pouvez réaliser ce chiffrement avec le script sqwmsq_Crypt.ksh le mode opération est décrit à la fin de ce billet.<br> | |||
<br> | <br> | ||
Lorsque l'un des scripts de dbSQWare va venir lire ce fichier et que ce dernier est chiffré il va alors utiliser le script sqwmsq_Uncrypt.ksh pour en lire le contenu. et pouvoir se connecter.<br> | |||
Ce déchiffrement se fait en RAM et le fichier reste chiffré sur le disque.<br> | |||
===Technologies utilisées=== | ===Technologies utilisées=== | ||
Nous opérons ce chiffrement avec OpenSSL, et nous avons fait le choix du chiffrement AES-256 sur lequel nous réalisons également du "salage". <br> | |||
==Mise en place== | |||
Ici, nous prendrons en exemple le fichier dédié aux connexions MS SQL, .passwd_mssql, se trouvant à la racine du home de l'utilisateur mssql sur la machine vmsqwarebox.<br> | |||
<br> | <br> | ||
Ce mode opératoire peut être reproduit pour tous les utilisateurs de la vmsqwarebox ou vos utilisateurs portant les instances sur les serveurs de base de données, oracle, postgres, mysql, ...<br> | |||
<br> | |||
< | Visualisation du contenu du fichier stocké en clair : | ||
< | |||
<pre> | <pre> | ||
mssql@ | mssql@vmsqwarebox:/home/mssql (NoSID) $ | ||
# cat .passwd_mssql | # cat .passwd_mssql | ||
DEFAULT;dba_dbs;def@ult_passworde | DEFAULT;dba_dbs;def@ult_passworde | ||
SRVDBMSQL01;msq_dba;def@ult_passworde | SRVDBMSQL01;msq_dba;def@ult_passworde | ||
SRVDBMSQ02;DBSQWARE\UserFreeTds;def@ult_passworde | |||
SRVDBMSQ03;DBSQWARE\UserFreeTds;def@ult_passworde | |||
SRVDBMSQ06;DEV-ENV\svc-mssql;def@ult_passworde | |||
</pre> | </pre> | ||
<br> | |||
Vérification que la connexion se fait bien, si la connexion ne fonctionne pas avec le fichier de mots de passe en clair cela ne fonctionnera pas avec le fichier chiffré. | |||
<pre> | |||
mssql@vmsqwarebox:/home/mssql (NoSID) $ | |||
# e SRVDBMSQL01 | |||
Sourcing .profile for SRVDBMSQL01 ... | |||
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ | |||
# tis | |||
Sourcing .profile for SRVDBMSQL01 ... | |||
Connection to instance SRVDBMSQL01 : login msq_dba ... | |||
locale is "en_US.UTF-8" | |||
locale charset is "UTF-8" | |||
using default charset "UTF-8" | |||
1> | |||
</pre> | |||
<br> | |||
On commence par renommer le fichier car le chiffrement n'écrase pas le fichier s'il existe, et, ou afin de le sauvegarder. | |||
<pre> | |||
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ | |||
# mv .passwd_mssql /backups/archives/.passwd_mssql_vmsqwarebox_20251007 | |||
</pre> | |||
<br> | |||
Ensuite il faut recréer le fichier .passwd_mssql mais cette fois si chiffré : | |||
<pre> | <pre> | ||
sqwmsq_Crypt.ksh | mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ | ||
# too | |||
total 68 | |||
drwxr-x--- 2 dbsqware dba 4096 Nov 9 19:53 . | |||
drwxr-x--- 15 dbsqware dba 187 Nov 9 19:53 .. | |||
-rwxr-x--- 1 dbsqware dba 6136 Nov 9 19:52 sqwmsq_AlterDatabaseModifyLogGrowth.ksh | |||
-rwxr-x--- 1 dbsqware dba 5871 Nov 9 19:52 sqwmsq_AlterDatabaseRecoverySimple.ksh | |||
-rwxr-x--- 1 dbsqware dba 6025 Nov 9 19:52 sqwmsq_AlterDatabaseShrinkLogs.ksh | |||
-rwxr-x--- 1 dbsqware dba 6017 Nov 9 19:52 sqwmsq_CreateAuditLogon.ksh | |||
lrwxrwxrwx 1 dbsqware dba 36 Jul 10 13:27 sqwmsq_Crypt.ksh -> ../../generic/tools/sqwgen_Crypt.ksh | |||
-rwxr-x--- 1 dbsqware dba 4895 Nov 9 19:52 sqwmsq_GenerateCreateInstance.ksh | |||
lrwxrwxrwx 1 dbsqware dba 44 Jul 10 13:27 sqwmsq_KillAllChilds.ksh -> ../../generic/tools/sqwgen_KillAllChilds.ksh | |||
lrwxrwxrwx 1 dbsqware dba 51 Jul 10 13:27 sqwmsq_ListAsyncFilesGlobal.ksh -> ../../generic/tools/sqwgen_ListAsyncFilesGlobal.ksh | |||
lrwxrwxrwx 1 dbsqware dba 45 Jul 10 13:27 sqwmsq_ListAsyncFiles.ksh -> ../../generic/tools/sqwgen_ListAsyncFiles.ksh | |||
lrwxrwxrwx 1 dbsqware dba 39 Jul 10 13:27 sqwmsq_MvToBash.ksh -> ../../generic/tools/sqwgen_MvToBash.ksh | |||
-rwxr-x--- 1 dbsqware dba 5589 Nov 9 19:52 sqwmsq_SetEnv.ksh | |||
-rwxr-x--- 1 dbsqware dba 1129 Nov 9 19:52 sqwmsq_Sqlcmd.ksh | |||
-rwxr-x--- 1 dbsqware dba 5289 Nov 9 19:52 sqwmsq_TestInstConnection.ksh | |||
lrwxrwxrwx 1 dbsqware dba 40 Jul 10 13:27 sqwmsq_TestMySQL.ksh -> ../../generic/tools/sqwgen_TestMySQL.ksh | |||
lrwxrwxrwx 1 dbsqware dba 43 Jul 10 13:27 sqwmsq_TestSendmail.ksh -> ../../generic/tools/sqwgen_TestSendmail.ksh | |||
-rwxr-x--- 1 dbsqware dba 1506 Nov 9 19:52 sqwmsq_Tis.ksh | |||
lrwxrwxrwx 1 dbsqware dba 38 Jul 10 13:27 sqwmsq_Uncrypt.ksh -> ../../generic/tools/sqwgen_Uncrypt.ksh | |||
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $ | |||
# ./sqwmsq_Crypt.ksh -h | |||
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ... | |||
Usage: sqwmsq_Crypt.ksh -ClearFile ClearFileName -EncryptedFile EncryptedFileName [-h] [+ options] | |||
DESCRIPTION | |||
sqwmsq_Crypt.ksh crypt file with openssl | |||
SUPPORT | |||
All rdbms type and version | |||
PARAMETERS | |||
-ClearFile file: File that contain clear datas. | |||
-EncryptedFile file: Dest file for encryted datas. | |||
OPTIONS | |||
-h : Display the full usage. | |||
-s : Display samples of usage. | |||
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $ | |||
# ./sqwmsq_Crypt.ksh -ClearFile /backups/archives/.passwd_mssql_vmsqwarebox_20251007 -EncryptedFile ~/.passwd_mssql | |||
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ... | |||
openssl enc -e -aes-256-cbc -pbkdf2 -iter 100000 -salt -in /backups/archives/.passwd_mssql_vmsqwarebox_20251007 -out /home/mssql/.passwd_mssql -pass file:/home/mssql/sqwConfig/.ssl | |||
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $ | |||
</pre> | </pre> | ||
Tentative de visualisation du contenu du nouveau fichier chiffré : | |||
<pre> | |||
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ | |||
# cat .passwd_mssql | |||
< | ▒▒w▒▒7J▒▒▒e)▒▒▒▒~/ZF▒}▒▒▒:▒Y▒▒h3/▒▒▒[▒L7▒Q1ؙXQ%)ÿQ▒_▒#=¤Գ▒▒▒▒▒A▒;<▒▒R▒شRR▒▒bط▒G▒▒▒?▒'▒8h▒U,▒▒▒!r5 | ||
mssql@vmsqwarebox:/home/mssql (NoSID) $ | |||
# | |||
</pre> | </pre> | ||
<br> | |||
Vérification que la connexion se fait bien avec le fichier chiffré. | |||
<pre> | |||
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $ | |||
# tis | |||
Sourcing .profile for SRVDBMSQL01 ... | |||
Case of encrypted file (tools/sqwmsq_SetEnv.ksh) ... | |||
Connection to instance SRVDBMSQL01 : login msq_dba ... | |||
locale is "en_US.UTF-8" | |||
locale charset is "UTF-8" | |||
using default charset "UTF-8" | |||
1> | |||
</pre> | </pre> | ||
<br> | |||
Enjoy !! | |||
Dernière version du 10 novembre 2025 à 10:00
Généralités
Limites de cette section
Cette section vous propose un chiffrement pour les fichiers de mots de passe qui peuvent être nécessaires au foncitonnement de certains scripts de dbSQWare.
Cette section est réservée à des DBA et Admin qui maîtrisent bien la partie authentification au SGBD.
Cette section se base sur une installation du point central sous Rocky Linux 9.x 64bits sur une VM (2 vCPU et 4 Go de RAM) avec 100 Go de disque (Permet de tenir 2 ans d'historique pour une centaine d'instances). Vous pouvez l'avoir installer sur un autre type de Linux/Unix, Il peut arriver que vous ayez besoin de paquets ou commandes différentes liées à ce choix.
Principes de fonctionnement
Actuellement il n'est pas toujours possible de s'affranchir des fichiers de mots de passe lorsque l'on souhaite automatiser des tâches avec des scripts.
Comme pour les autres outils les scripts de dbSQWare vont avoir besoin de fichiers de mots de passe afin d'établir des connexions aux moteurs SGDB.
Par défaut le plus souvent ces fichiers de mot de passe sont stockés à la racine du $HOME de l'utilisateur.
Vous avez la possibilité de changer cela avec les variables d'environnements gvsqw_<rdbms>PassFile et gvsqw_DistPasswdFile, par exemple pour MS SQL cela sera gvsqw_MssqlPassFile et gvsqw_DistPasswdFile.
Afin d'améliorer les standards de sécurité nous vous proposons de chiffrer ces fichiers pour qu'ils ne soient plus lisibles par n'importe quel utilisateur connecté à votre serveur.
Vous pouvez réaliser ce chiffrement avec le script sqwmsq_Crypt.ksh le mode opération est décrit à la fin de ce billet.
Lorsque l'un des scripts de dbSQWare va venir lire ce fichier et que ce dernier est chiffré il va alors utiliser le script sqwmsq_Uncrypt.ksh pour en lire le contenu. et pouvoir se connecter.
Ce déchiffrement se fait en RAM et le fichier reste chiffré sur le disque.
Technologies utilisées
Nous opérons ce chiffrement avec OpenSSL, et nous avons fait le choix du chiffrement AES-256 sur lequel nous réalisons également du "salage".
Mise en place
Ici, nous prendrons en exemple le fichier dédié aux connexions MS SQL, .passwd_mssql, se trouvant à la racine du home de l'utilisateur mssql sur la machine vmsqwarebox.
Ce mode opératoire peut être reproduit pour tous les utilisateurs de la vmsqwarebox ou vos utilisateurs portant les instances sur les serveurs de base de données, oracle, postgres, mysql, ...
Visualisation du contenu du fichier stocké en clair :
mssql@vmsqwarebox:/home/mssql (NoSID) $ # cat .passwd_mssql DEFAULT;dba_dbs;def@ult_passworde SRVDBMSQL01;msq_dba;def@ult_passworde SRVDBMSQ02;DBSQWARE\UserFreeTds;def@ult_passworde SRVDBMSQ03;DBSQWARE\UserFreeTds;def@ult_passworde SRVDBMSQ06;DEV-ENV\svc-mssql;def@ult_passworde
Vérification que la connexion se fait bien, si la connexion ne fonctionne pas avec le fichier de mots de passe en clair cela ne fonctionnera pas avec le fichier chiffré.
mssql@vmsqwarebox:/home/mssql (NoSID) $ # e SRVDBMSQL01 Sourcing .profile for SRVDBMSQL01 ... mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ # tis Sourcing .profile for SRVDBMSQL01 ... Connection to instance SRVDBMSQL01 : login msq_dba ... locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1>
On commence par renommer le fichier car le chiffrement n'écrase pas le fichier s'il existe, et, ou afin de le sauvegarder.
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ # mv .passwd_mssql /backups/archives/.passwd_mssql_vmsqwarebox_20251007
Ensuite il faut recréer le fichier .passwd_mssql mais cette fois si chiffré :
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $
# too
total 68
drwxr-x--- 2 dbsqware dba 4096 Nov 9 19:53 .
drwxr-x--- 15 dbsqware dba 187 Nov 9 19:53 ..
-rwxr-x--- 1 dbsqware dba 6136 Nov 9 19:52 sqwmsq_AlterDatabaseModifyLogGrowth.ksh
-rwxr-x--- 1 dbsqware dba 5871 Nov 9 19:52 sqwmsq_AlterDatabaseRecoverySimple.ksh
-rwxr-x--- 1 dbsqware dba 6025 Nov 9 19:52 sqwmsq_AlterDatabaseShrinkLogs.ksh
-rwxr-x--- 1 dbsqware dba 6017 Nov 9 19:52 sqwmsq_CreateAuditLogon.ksh
lrwxrwxrwx 1 dbsqware dba 36 Jul 10 13:27 sqwmsq_Crypt.ksh -> ../../generic/tools/sqwgen_Crypt.ksh
-rwxr-x--- 1 dbsqware dba 4895 Nov 9 19:52 sqwmsq_GenerateCreateInstance.ksh
lrwxrwxrwx 1 dbsqware dba 44 Jul 10 13:27 sqwmsq_KillAllChilds.ksh -> ../../generic/tools/sqwgen_KillAllChilds.ksh
lrwxrwxrwx 1 dbsqware dba 51 Jul 10 13:27 sqwmsq_ListAsyncFilesGlobal.ksh -> ../../generic/tools/sqwgen_ListAsyncFilesGlobal.ksh
lrwxrwxrwx 1 dbsqware dba 45 Jul 10 13:27 sqwmsq_ListAsyncFiles.ksh -> ../../generic/tools/sqwgen_ListAsyncFiles.ksh
lrwxrwxrwx 1 dbsqware dba 39 Jul 10 13:27 sqwmsq_MvToBash.ksh -> ../../generic/tools/sqwgen_MvToBash.ksh
-rwxr-x--- 1 dbsqware dba 5589 Nov 9 19:52 sqwmsq_SetEnv.ksh
-rwxr-x--- 1 dbsqware dba 1129 Nov 9 19:52 sqwmsq_Sqlcmd.ksh
-rwxr-x--- 1 dbsqware dba 5289 Nov 9 19:52 sqwmsq_TestInstConnection.ksh
lrwxrwxrwx 1 dbsqware dba 40 Jul 10 13:27 sqwmsq_TestMySQL.ksh -> ../../generic/tools/sqwgen_TestMySQL.ksh
lrwxrwxrwx 1 dbsqware dba 43 Jul 10 13:27 sqwmsq_TestSendmail.ksh -> ../../generic/tools/sqwgen_TestSendmail.ksh
-rwxr-x--- 1 dbsqware dba 1506 Nov 9 19:52 sqwmsq_Tis.ksh
lrwxrwxrwx 1 dbsqware dba 38 Jul 10 13:27 sqwmsq_Uncrypt.ksh -> ../../generic/tools/sqwgen_Uncrypt.ksh
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
# ./sqwmsq_Crypt.ksh -h
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ...
Usage: sqwmsq_Crypt.ksh -ClearFile ClearFileName -EncryptedFile EncryptedFileName [-h] [+ options]
DESCRIPTION
sqwmsq_Crypt.ksh crypt file with openssl
SUPPORT
All rdbms type and version
PARAMETERS
-ClearFile file: File that contain clear datas.
-EncryptedFile file: Dest file for encryted datas.
OPTIONS
-h : Display the full usage.
-s : Display samples of usage.
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
# ./sqwmsq_Crypt.ksh -ClearFile /backups/archives/.passwd_mssql_vmsqwarebox_20251007 -EncryptedFile ~/.passwd_mssql
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ...
openssl enc -e -aes-256-cbc -pbkdf2 -iter 100000 -salt -in /backups/archives/.passwd_mssql_vmsqwarebox_20251007 -out /home/mssql/.passwd_mssql -pass file:/home/mssql/sqwConfig/.ssl
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
Tentative de visualisation du contenu du nouveau fichier chiffré :
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $ # cat .passwd_mssql ▒▒w▒▒7J▒▒▒e)▒▒▒▒~/ZF▒}▒▒▒:▒Y▒▒h3/▒▒▒[▒L7▒Q1ؙXQ%)ÿQ▒_▒#=¤Գ▒▒▒▒▒A▒;<▒▒R▒شRR▒▒bط▒G▒▒▒?▒'▒8h▒U,▒▒▒!r5 mssql@vmsqwarebox:/home/mssql (NoSID) $ #
Vérification que la connexion se fait bien avec le fichier chiffré.
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $ # tis Sourcing .profile for SRVDBMSQL01 ... Case of encrypted file (tools/sqwmsq_SetEnv.ksh) ... Connection to instance SRVDBMSQL01 : login msq_dba ... locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1>
Enjoy !!
