« FAQ:Crypt FichiersMotDePasse » : différence entre les versions

De WikiFr_dbSQWare
Aller à la navigation Aller à la recherche
 
(9 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===
AES-256 avec OpenSSL et du "salage"
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>
<br>


==Mise en place==
==Mise en place==
Ligne 20 : Ligne 37 :
<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>
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>
<pre>
</pre>
<br>
<br>
Visualisation du contenu du fichier stocké en clair :
Visualisation du contenu du fichier stocké en clair :
<pre>
<pre>
mssql@srvdbsqware04:/home/mssql (NoSID) $
mssql@vmsqwarebox:/home/mssql (NoSID) $
# cat .passwd_mssql
# cat .passwd_mssql
DEFAULT;dba_dbs;def@ult_passworde
DEFAULT;dba_dbs;def@ult_passworde
Ligne 35 : Ligne 49 :
</pre>
</pre>
<br>
<br>
Vérification que la connexion se fait bien, si la connexion ne fonctionne pas avec le fichiers de mot de passe en clair cela ne fonctionnera pas avec les fichiers chiffrés.
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>
<pre>
mssql@srvdbsqware04:/home/mssql (NoSID) $
mssql@vmsqwarebox:/home/mssql (NoSID) $
# e SRVDBMSQL01
# e SRVDBMSQL01
Sourcing .profile for SRVDBMSQL01 ...
Sourcing .profile for SRVDBMSQL01 ...




mssql@srvdbsqware04:/home/mssql (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $
# tis
# tis
Sourcing .profile for SRVDBMSQL01 ...
Sourcing .profile for SRVDBMSQL01 ...
Ligne 54 : Ligne 68 :
</pre>
</pre>
<br>
<br>
On commence par renommer le fichier avant de le sauvegarder et, ou de laisser le nom libre pour le fichier chiffré.
On commence par renommer le fichier car le chiffrement n'écrase pas le fichier s'il existe, et, ou afin de le sauvegarder.
<pre>
<pre>
mssql@srvdbsqware04:/home/mssql (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $
# mv .passwd_mssql /backups/archives/.passwd_mssql_vmsqwarebox_20251007
# mv .passwd_mssql /backups/archives/.passwd_mssql_vmsqwarebox_20251007
</pre>
</pre>
Ligne 62 : Ligne 76 :
Ensuite il faut recréer le fichier .passwd_mssql mais cette fois si chiffré :
Ensuite il faut recréer le fichier .passwd_mssql mais cette fois si chiffré :
<pre>
<pre>
mssql@srvdbsqware04:/home/mssql (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $
# too
# too
total 68
total 68
Ligne 86 : Ligne 100 :




mssql@srvdbsqware04:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
# ./sqwmsq_Crypt.ksh -h
# ./sqwmsq_Crypt.ksh -h
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ...
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ...
Ligne 105 : Ligne 119 :




mssql@srvdbsqware04:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
# ./sqwmsq_Crypt.ksh -ClearFile /backups/archives/.passwd_mssql_vmsqwarebox_20251007 -EncryptedFile ~/.passwd_mssql
# ./sqwmsq_Crypt.ksh -ClearFile /backups/archives/.passwd_mssql_vmsqwarebox_20251007 -EncryptedFile ~/.passwd_mssql
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ...
Sourcing sqwmsq_Global.lib v2025.10.04 SQWareProduction for MsSql (dbSQWare) ...
Ligne 111 : Ligne 125 :




mssql@srvdbsqware04:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
</pre>
</pre>


Tentative de visualisation du contenu du nouveau fichier chiffré :
Tentative de visualisation du contenu du nouveau fichier chiffré :
<pre>
<pre>
mssql@srvdbsqware04:/home/mssql (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql (SRVDBMSQL01) $
# cat .passwd_mssql
# cat .passwd_mssql
▒▒w▒▒7J▒▒▒e)▒▒▒▒~/ZF▒}▒▒▒:▒Y▒▒h3/▒▒▒[▒L7▒Q1ؙXQ%)ÿQ▒_▒#=¤Գ▒▒▒▒▒A▒;<▒▒R▒شRR▒▒bط▒G▒▒▒?▒'▒8h▒U,▒▒▒!r5
▒▒w▒▒7J▒▒▒e)▒▒▒▒~/ZF▒}▒▒▒:▒Y▒▒h3/▒▒▒[▒L7▒Q1ؙXQ%)ÿQ▒_▒#=¤Գ▒▒▒▒▒A▒;<▒▒R▒شRR▒▒bط▒G▒▒▒?▒'▒8h▒U,▒▒▒!r5


mssql@srvdbsqware04:/home/mssql (NoSID) $
mssql@vmsqwarebox:/home/mssql (NoSID) $
#
#
</pre>
</pre>
Ligne 126 : Ligne 141 :
Vérification que la connexion se fait bien avec le fichier chiffré.
Vérification que la connexion se fait bien avec le fichier chiffré.
<pre>
<pre>
mssql@srvdbsqware04:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
mssql@vmsqwarebox:/home/mssql/SQWareProduction/mssql/tools (SRVDBMSQL01) $
# tis
# tis
Sourcing .profile for SRVDBMSQL01 ...
Sourcing .profile for SRVDBMSQL01 ...
Ligne 138 : Ligne 153 :


</pre>
</pre>
<br>
Enjoy !!

Dernière version du 10 novembre 2025 à 10:00

Généralités


Warning:
Avant toutes choses, n'allez pas plus loin si vous n'avez pas lu la section "Concepts dbSQWare" !.


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 !!