[RESOLU] chiffrer ses pass wapt

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

18 juil. 2018 - 15:49

Bonjour,

Dans un de mes scripts, j'upload un paquet sur le serveur. Cette fonction demande deux mots de passe (mdp admin et mdp de la clé privé). Sommes nous obligé d'écrire le mot de passe en dur dans le code sachant que celui ci est présent dans les paquets ?
Dernière modification par louisinger le 20 juil. 2018 - 08:47, modifié 1 fois.
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

18 juil. 2018 - 23:01

louisinger a écrit : 18 juil. 2018 - 15:49 Sommes nous obligé d'écrire le mot de passe en dur dans le code sachant que celui ci est présent dans les paquets ?
Je ne comprends pas, vous avez mis le mot de passe de votre serveur wapt et le mot de passe de votre clé privée dans un paquet wapt ?
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

19 juil. 2018 - 08:22

Dans un paquet nommé dispatch qui permet l'installation automatique de paquets GROUP.
Je fais donc un build-upload dans le script après avoir éditer mon paquet host. Voila pq mon mot de passe se retrouve dans un paquet.
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

19 juil. 2018 - 14:10

louisinger a écrit : 19 juil. 2018 - 08:22 Dans un paquet nommé dispatch qui permet l'installation automatique de paquets GROUP.
Je fais donc un build-upload dans le script après avoir éditer mon paquet host. Voila pq mon mot de passe se retrouve dans un paquet.
Il ne faut surtout pas faire cela. En effet les paquets wapt sont accessibles à n'importe qui en lecture.
Aucune information sensible ne doit être mise dans un paquet à moins de chiffrer celui-ci

Exemple de paquet: https://wapt.lesfourmisduweb.org/detail ... 4_all.wapt

Si vous souhaitez créer des paquet wapt en script (une crontab) sur une machine :
viewtopic.php?f=9&t=1341

Sinon si j'ai bien compris ce que vous souhaitez faire je vous conseille de lire ceci:

https://www.wapt.fr/fr/doc/CreationPaqu ... quets-wapt

Cela ne crée pas de paquet machine mais ça fonctionne très bien.

Autre piste :
https://blog.lesfourmisduweb.org/gestio ... e-package/


Bref expliquez nous plutôt ce que vous souhaitez faire on vous donnera une solution.
Mais clairement, ne stockez pas votre mot de passe wapt dans un paquet !
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

19 juil. 2018 - 15:51

Je suis d'accord que stocker le mot de passe dans un script d'un paquet c'est contre productif. Je vous explique :
Je voulais créer mes groupes d'utilisateurs en fonctions de leur nom d’hôte. J'ai donc créé mes paquets groupes et codé mon script. En fonction du hostname du client le package mnt-dispatch install le package groupe correspondant. Dans un premier temps j'ai utilisé Wapt.install(nom_du_groupe) mais cela pose un problème : le paquet est installé sur le poste mais ne devient pas une dépendance ! Voila pourquoi j'ai voulu remplacer Wapt.install() par Wapt.edit_host() & Wapt.build_upload() car edit_host, contrairement à install me permet d'ajouter une dépendance au paquet host.

Voila le code du setup.py du paquet mnt-dispatch :

Code : Tout sélectionner

def install():
    print('Start dispatching')
    myWapt = Wapt(config_filename = makepath('c:', programfiles32, 'wapt', 'wapt-get.ini'))
    print("write into ini file")
    inifile_writestring(WAPT.config_filename, 'global', 'personal_certificate_path', '\\\\**************\c$\private\********.crt')
    print("get hostname and computername")
    computer_name = environ['COMPUTERNAME']
    print('computer name = %s'%computer_name)
    host_name = myWapt.host_packagename()
    print('host name = %s'%host_name)
    pathToTempDirectory = r'C:\Temp\%s'%computer_name
    if isdir(pathToTempDirectory):
        print('remove temp tree : ' + pathToTempDirectory)
        remove_tree(pathToTempDirectory)
    print('site name :')
    site_name = computer_name[0:4]
    print("site name is : %s" %site_name)
    group_name = alias_groupe.get(switcher.get(site_name, 0), 'hors-lot')
    print("group name is : %s"%group_name)
    myWapt.edit_host(host_name, target_directory = "C:\Temp\%s"%computer_name, append_depends = group_name)
    myWapt.build_upload(r'C:\Temp\%s'%(computer_name), private_key_passwd = '***', wapt_server_user = 'admin', wapt_server_passwd = '***')
    return 0
Comprenez vous un peu mieux mon problème ? Pardon si ce n'est pas clair.
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

19 juil. 2018 - 16:34

Dans ce cas Il faut faire un script python à coté qui tourne en tâche planifiée.

Ne pas le faire dans un paquet. Sinon on est justement obligé de mettre les mots de passe dans le paquet.

Algo du script:

- Parcours de la base de donnée
- Pour chaque poste, analyser l'inventaire pour savoir ce qu'il faut ajouter en dépendance.

Code : Tout sélectionner

data = json.loads(wgets('https://%s:%s@%s/api/v1/hosts?columns=host_certificate&limit=10000' % (user,password,urlserver)))
for value in data['result']:
	blabalba
- Editer le paquet machine.
- ajouter les dépendances
- uploader le paquet machine.

Code : Tout sélectionner

    myWapt = Wapt(config_filename=makepath(r'C:\Users\Administrateur\AppData\Local\waptconsole\waptconsole.ini'))
    tmpdir = 'c:/dummy'
    myWapt.edit_host(machine,target_directory=tmpdir,append_depends='tis-firefox')
    myWapt.build_upload(r'c:\waptdev\test',private_key_passwd=ur'passwordkey',wapt_server_user='admin',wapt_server_passwd=ur'passwordserver')
Avatar de l’utilisateur
vcardon
Expert WAPT
Messages : 248
Inscription : 06 oct. 2017 - 22:55
Localisation : Nantes, FR

19 juil. 2018 - 21:26

louisinger a écrit : 19 juil. 2018 - 08:22 Dans un paquet nommé dispatch qui permet l'installation automatique de paquets GROUP.
Je fais donc un build-upload dans le script après avoir éditer mon paquet host. Voila pq mon mot de passe se retrouve dans un paquet.
Simon, tu as parfaitement répondu.

J'en rajoute une couche pour que ceux qui utilisent WAPT ne mettent JAMAIS leurs mots de passe dans un paquet, ni en Community, ni en Enterprise.

En effet, dans le modèle de sécurité de WAPT, les paquets ne sont pas un bien sensible au sens de la cybersécurité.

Si vous mettez le mot de passe de votre clé et le mot de passe de votre serveur dans votre paquet et que votre paquet est récupéré par une entité non-autorisée et malveillante, alors elle contrôlera votre parc.

Un audit post-mortem de la situation par un auditeur de sécurité prouvera sans chercher plus loin que c'est votre signature qui aura été utilisée pour déployer le malware et vous aurez un mal fou à prouver que ce n'est pas vous qui aurez causé de manière intentionnelle les dégâts. En effet, la documentation WAPT est claire, explicite et non ambiguë concernant ça.

Dans le meilleur des cas, vous n'aurez plus qu'à vous trouver un nouveau boulot chargé de votre nouvelle réputation, sinon vous aurez à vous trouver un bon avocat si votre erreur aura provoqué un accident avec des conséquences matérielles, financières ou humaines irrémédiables.

Donc, à bon entendeur.

Vincent
Vincent CARDON
Tranquil IT
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

20 juil. 2018 - 08:16

sfonteneau a écrit : 19 juil. 2018 - 16:34 Dans ce cas Il faut faire un script python à coté qui tourne en tâche planifiée.

Ne pas le faire dans un paquet. Sinon on est justement obligé de mettre les mots de passe dans le paquet.

Algo du script:

- Parcours de la base de donnée
- Pour chaque poste, analyser l'inventaire pour savoir ce qu'il faut ajouter en dépendance.

Code : Tout sélectionner

data = json.loads(wgets('https://%s:%s@%s/api/v1/hosts?columns=host_certificate&limit=10000' % (user,password,urlserver)))
for value in data['result']:
	blabalba
- Editer le paquet machine.
- ajouter les dépendances
- uploader le paquet machine.

Code : Tout sélectionner

    myWapt = Wapt(config_filename=makepath(r'C:\Users\Administrateur\AppData\Local\waptconsole\waptconsole.ini'))
    tmpdir = 'c:/dummy'
    myWapt.edit_host(machine,target_directory=tmpdir,append_depends='tis-firefox')
    myWapt.build_upload(r'c:\waptdev\test',private_key_passwd=ur'passwordkey',wapt_server_user='admin',wapt_server_passwd=ur'passwordserver')
Alors sa sera un script ! Cependant il reste le même problème mon mot de passe est écrit en dur dans le code. Je pense qu'au début du script je demanderai à l'utilisateur les deux mot de passe.

@vcardon Je comprends le risque de mettre un mot de passe en dur dans un paquet. Voila pourquoi je suis venu demandé une alternative mais merci pour votre mise en garde.
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

20 juil. 2018 - 09:31

Pour info

Code : Tout sélectionner

import waptguihelper
urlserver = inifile_readstring(makepath(install_location('WAPT_is1'),'wapt-get.ini'),'global','wapt_server')
mycrt = inifile_readstring(makepath(user_local_appdata(),'waptconsole','waptconsole.ini'),'global','personal_certificate_path')

passwordkey = waptguihelper.key_password_dialog('Password for private key',mycrt, '')
credentials_url = waptguihelper.login_password_dialog('Credentials for wapt server',urlserver,'admin','')

print(passwordkey['keypassword'])
print(credentials_url['user'])
print(credentials_url['password'])

louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

20 juil. 2018 - 10:02

sfonteneau a écrit : Pour info

Code : Tout sélectionner

import waptguihelper
urlserver = inifile_readstring(makepath(install_location('WAPT_is1'),'wapt-get.ini'),'global','wapt_server')
mycrt = inifile_readstring(makepath(user_local_appdata(),'waptconsole','waptconsole.ini'),'global','personal_certificate_path')

passwordkey = waptguihelper.key_password_dialog('Password for private key',mycrt, '')
credentials_url = waptguihelper.login_password_dialog('Credentials for wapt server',urlserver,'admin','')

print(passwordkey['keypassword'])
print(credentials_url['user'])
print(credentials_url['password'])

Impossibble de trouver le module waptguihelper :/
Verrouillé