[RISOLTO] Crittografia delle password Wapt

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Louisinger
Messaggi: 27
Registrazione: 26 giugno 2018 - 09:40

18 luglio 2018 - 15:49

Salve,

in uno dei miei script carico un pacchetto sul server. Questa operazione richiede due password (password di amministratore e password della chiave privata). Dobbiamo necessariamente inserire la password direttamente nel codice, dato che è inclusa nei pacchetti?
Ultima modifica di louisinger il 20 lug 2018 - 08:47, modificato 1 volta.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

18 luglio 2018 - 23:01

louisinger ha scritto: 18 luglio 2018 - 15:49 Dobbiamo inserire la password direttamente nel codice, pur sapendo che è presente nei pacchetti?
Non capisco, hai inserito la password del server wapt e la password della tua chiave privata in un pacchetto wapt?
Louisinger
Messaggi: 27
Registrazione: 26 giugno 2018 - 09:40

19 luglio 2018 - 08:22

In un pacchetto chiamato `dispatch` che consente l'installazione automatica dei pacchetti GROUP,
eseguo un build-upload nello script dopo aver modificato il mio pacchetto host. Ecco perché la mia password è finita in un pacchetto.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

19 luglio 2018 - 14:10

louisinger ha scritto: 19 lug 2018 - 8:22 AM In un pacchetto chiamato dispatch che consente l'installazione automatica dei pacchetti GROUP.
Quindi eseguo un build-upload nello script dopo aver modificato il mio pacchetto host. Ecco perché la mia password è finita in un pacchetto.
Non devi assolutamente farlo. I pacchetti Wapt sono accessibili a chiunque voglia leggerli.
Nessuna informazione sensibile dovrebbe essere inserita in un pacco, a meno che non sia crittografata

Pacchetto di esempio: https://wapt.lesfourmisduweb.org/detail ... 4_all.wapt

Se vuoi creare pacchetti wapt utilizzando uno script (un crontab) su una macchina:
viewtopic.php?f=9&t=1341

Altrimenti, se ho capito bene cosa vuoi fare, ti consiglio di leggere questo:

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

Questo non crea un pacchetto macchina ma funziona molto bene.

Un'altra possibilità:
https://blog.lesfourmisduweb.org/gestio ... e-package/


In breve, spiegaci cosa vuoi fare e ti daremo una soluzione.
Ma ovviamente non conservare la password wapt in un pacchetto!
Louisinger
Messaggi: 27
Registrazione: 26 giugno 2018 - 09:40

19 luglio 2018 - 15:51

Sono d'accordo che memorizzare la password in uno script all'interno di un pacchetto sia controproducente. Lasciatemi spiegare:
Volevo creare i miei gruppi di utenti in base al loro nome host. Quindi ho creato i pacchetti di gruppo e ho scritto il codice del mio script. A seconda del nome host del client, il pacchetto `mnt-dispatch` installa il pacchetto di gruppo corrispondente. Inizialmente, ho usato `Wapt.install(group_name)`, ma questo ha causato un problema: il pacchetto è stato installato sulla macchina ma non è diventato una dipendenza! Ecco perché ho voluto sostituire `Wapt.install()` con `Wapt.edit_host()` e `Wapt.build_upload()` perché `edit_host()`, a differenza di `install()`, mi permette di aggiungere una dipendenza al pacchetto host.

Ecco il codice per il file setup.py del pacchetto mnt-dispatch:

Codice: Seleziona tutto

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
Ora hai capito un po' meglio il mio problema? Scusa se non è chiaro.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

19 luglio 2018 - 16:34

In questo caso, è necessario creare uno script Python separato che venga eseguito come attività pianificata.

Non metterlo in un pacco. Altrimenti saremo costretti a inserire le password nel pacchetto.

Algoritmo di script:

- Scansione del database
- Per ogni articolo, analizzare l'inventario per determinare cosa deve essere aggiunto come dipendenza.

Codice: Seleziona tutto

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
- Modificare il pacchetto macchina.
- Aggiungi dipendenze
- Carica il pacchetto macchina.

Codice: Seleziona tutto

    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 utente
vcardon
Esperto WAPT
Messaggi: 272
Registrazione: 06/10/2017 - 22:55
Posizione: Nantes, Francia

19 luglio 2018 - 21:26

louisinger ha scritto: 19 lug 2018 - 8:22 AM In un pacchetto chiamato dispatch che consente l'installazione automatica dei pacchetti GROUP.
Quindi eseguo un build-upload nello script dopo aver modificato il mio pacchetto host. Ecco perché la mia password è finita in un pacchetto.
Simon, hai risposto perfettamente.

Aggiungo un ulteriore livello per garantire che chi utilizza WAPT NON inserisca MAI le proprie password in un pacchetto, né in Community né in Enterprise.

In effetti, nel modello di sicurezza di WAPT, i pacchetti non sono una risorsa sensibile ai fini della sicurezza informatica.

Se inserisci la password della tua chiave e la password del tuo server nel tuo pacchetto e il pacchetto viene recuperato da un'entità non autorizzata e dannosa, questa controllerà la tua rete.

Un audit post-mortem da parte di un revisore della sicurezza dimostrerà senza ombra di dubbio che la tua firma è stata utilizzata per distribuire il malware, e avrai molte difficoltà a dimostrare di non aver causato intenzionalmente il danno. In effetti, la documentazione WAPT è chiara, esplicita e inequivocabile su questo punto.

Nel migliore dei casi, non ti resterà che trovare un nuovo lavoro gravato dalla tua nuova reputazione; in caso contrario, dovrai trovare un buon avvocato se il tuo errore ha causato un incidente con conseguenze materiali, finanziarie o umane irreparabili.

Quindi, un consiglio ai saggi.

Vincenzo
Vincent CARDON
Tranquillo IT
Louisinger
Messaggi: 27
Registrazione: 26 giugno 2018 - 09:40

20 luglio 2018 - 08:16

sfonteneau ha scritto: 19 luglio 2018 - 16:34 In questo caso, è necessario creare uno script Python separato che venga eseguito come attività pianificata.

Non metterlo in un pacco. Altrimenti saremo costretti a inserire le password nel pacchetto.

Algoritmo di script:

- Scansione del database
- Per ogni articolo, analizzare l'inventario per determinare cosa deve essere aggiunto come dipendenza.

Codice: Seleziona tutto

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
- Modificare il pacchetto macchina.
- Aggiungi dipendenze
- Carica il pacchetto macchina.

Codice: Seleziona tutto

    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')
Quindi sarà uno script! Tuttavia, il problema rimane lo stesso: la mia password è codificata. Credo che all'inizio dello script chiederò all'utente entrambe le password.

@vcardon Capisco il rischio di codificare una password in un pacchetto. Ecco perché sono venuto a chiederti un'alternativa, ma grazie per l'avvertimento.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

20 luglio 2018 - 09:31

PER TUA INFORMAZIONE

Codice: Seleziona tutto

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
Messaggi: 27
Registrazione: 26 giugno 2018 - 09:40

20 luglio 2018 - 10:02

sfontenau ha scritto: PER TUA INFORMAZIONE

Codice: Seleziona tutto

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'])

Impossibile trovare il modulo waptguihelper :/
Bloccato