Contactez nous

[RESOLU] chiffrer ses pass wapt

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum

* Questions can be asked in English or in French. If the thread is started in English, stick to English, if it is started in French, stick to French.
* Vous pouvez poser vos questions en Français ou en Anglais. Si un sujet est commencé en français, merci de répondre en français. Si un sujet est commencé en anglais, merci de répondre en anglais.
* Please prefix of the title of the thread to [SOLVED] if it is solved.
* Merci de préfixer le titre du thread par [RESOLU] si il est résolu.

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 ?
louisinger a écrit :
18 juillet 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 ?
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.
louisinger a écrit :
19 juillet 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 !
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.
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')
louisinger a écrit :
19 juillet 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
sfonteneau a écrit :
19 juillet 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.
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'])

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 :/