Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ibmsecurity — Funzioni idempotenti per le API REST di IBM Security Appliance. Attualmente copre le appliance ISAM e ISDS. | Kitploit
Strumenti/GitHubGitHub/ibm-security/ibmsecurity
Scripting e AutomazioneAudit di ConfigurazioneSicurezza di ReteDevSecOpsGestione Identità e Accessi (IAM)Sicurezza delle API
GitHubibm-security/ibmsecurity

ibmsecurity

Funzioni idempotenti per le API REST di IBM Security Appliance. Attualmente copre le appliance ISAM e ISDS.

Vedi Repository
517651 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Codice di esempio IBM

Questo repository contiene codice Python per gestire gli apparati IBM Security tramite le rispettive API REST. L'appliance ISAM dispone del codice più maturo.

Il codice per l'appliance ISDS è in fase di sviluppo.

Il codice per l'appliance ISVG è nuovissimo (testato solo con 10.0.1.0 e versioni successive).

Requisiti

Per questo pacchetto è richiesto Python v3.9 o superiore.

Sono richiesti i seguenti pacchetti Python:

  1. requests - per effettuare chiamate API REST
  2. PyYAML - per il funzionamento del codice di esempio
  3. jmespath - richiesto per il codice di esempio

I seguenti pacchetti Python sono opzionali:

  1. cryptography - per eseguire azioni sui certificati (usato per l'idempotenza in management_ssl_certificate)
  2. python-dateutil - utilità per le date (usato per l'idempotenza in management_ssl_certificate)

Gli appliance devono avere un indirizzo IP definito per la propria LMI. Ciò potrebbe significare che gli appliance hanno completato la configurazione iniziale con l'accettazione della licenza.

Verifica TLS abilitata (v2024.4.5)

Queste modifiche sono retrocompatibili. Per impostazione predefinita non eseguiamo la verifica, ma mostriamo sempre un avviso:

root@kitploit:~
Certificate verification has been disabled. Python is NOT verifying the SSL
certificate of the host appliance and InsecureRequestWarning messages are

being suppressed for the following host:

https://{0}:{1}

To use certificate verification:

1. When the certificate is trusted by your Python environment:
   Instantiate all instances of ISAMAppliance with verify=True or set
   the environment variable IBMSECLIB_VERIFY_CONNECTION=True.
2. When the certificate is not already trusted in your Python environment:
   Instantiate all instances of ISAMAppliance with the verify parameter
   set to the fully qualified path to a CA bundle.

See the following URL for more details:
https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification

Per risolvere questo avviso di validazione del certificato, prendere in considerazione le istruzioni riportate di seguito:

Utilizzo corretto:

Se si dispone del certificato su disco in una posizione qualsiasi, istanziare ISAMAppliance con:

root@kitploit:~
ISAMAppliance(…, verify=<path to cert>)

È possibile recuperarlo dall'appliance utilizzando un comando come:

root@kitploit:~
openssl s_client -connect ${HOSTNAME}:${PORT} </dev/null 2>/dev/null | openssl x509 -outform pem >  isamAppliance.pem

Se il certificato è già considerato attendibile nell'ambiente Python, istanziare ISAMAppliance con:

root@kitploit:~
ISAMAppliance(…, verify=True)

oppure impostare la variabile d'ambiente: IBMSECLIB_VERIFY_CONNECTION=true

Se si ricevono errori relativi al nome host che non corrisponde al certificato:

Potrebbe apparire così:

root@kitploit:~
<stack trace>

…

    raise CertificateError("hostname %r doesn't match %r" % (hostname, dnsnames[0]))

urllib3.util.ssl_match_hostname.CertificateError: hostname '192.168.42.111' doesn't match 'appliance.ibm.com'

Assicurarsi che il nome host utilizzato durante l'istanziazione di ISAMAppliance corrisponda al Subject Alternative Name del certificato.

Verificare con:

root@kitploit:~
openssl x509 -in <cert-pem-file> -text

Esempio:

root@kitploit:~
$ openssl x509 -in /path/to/appliance.pem -text

Certificate:

root@kitploit:~
Data:
    Version: 3 (0x2)
    …
        X509v3 Subject Alternative Name:
            DNS:appliance.ibm.com

…

Quanto segue genererà errori:

root@kitploit:~
ISAMAppliance(host=”192.168.42.111”, lmi_port=443, verify=/path/to/appliance.pem)

poiché il nome host non corrisponde al Subject Alternative Name. In alternativa, utilizzare:

root@kitploit:~
ISAMAppliance(host=”appliance.ibm.com”, lmi_port=443, verify=/path/to/appliance.pem)

Versionamento

Questo pacchetto utilizza una data per il versionamento. Ad esempio: "2017.03.18.0"

Si tratta della data in cui il pacchetto viene rilasciato, con un numero di sequenza alla fine per gestire i casi in cui vi siano più rilasci nello stesso giorno (cosa che dovrebbe essere rara).

Funzionalità

Questo pacchetto Python offre le seguenti funzionalità:

  1. Facile da usare - i dettagli dell'esecuzione di una chiamata REST sono gestiti all'interno di una classe dell'appliance
  2. Struttura intuitiva del pacchetto di codice e nomi che corrispondono all'interfaccia GUI dell'appliance
  3. Idempotenza - le funzioni che effettuano aggiornamenti interrogano l'appliance per confrontare i dati forniti e verificare se una modifica è necessaria prima di apportare la modifica effettiva.
  4. I passaggi Commit e Deploy sono forniti separatamente per consentire flessibilità nella loro invocazione
  5. È incluso il logging standard - con la possibilità di impostare i livelli di logging.
  6. I parametri delle funzioni utilizzeranno valori predefiniti standard dove possibile.
  7. È prevista un'opzione force per ignorare l'idempotenza.
  8. Sono fornite funzioni di confronto - accettano output JSON e forniscono un confronto significativo.

Formato dei dati restituiti dalle funzioni

root@kitploit:~
{
    rc:       <0 for success, higher for errors>
    changed:  <True or False>
    warnings: <List of strings with warnings - e.g. incompatible version>
    data:     <JSON data returned by appliance REST API that the function called>
}

Nota: è preferibile restituire avvisi piuttosto che un rc diverso da zero.

Organizzazione del codice

Classi degli appliance

Una classe astratta ibmappliance viene estesa per creare una classe per ciascun appliance supportato in questo repository. Attualmente si tratta degli appliance ISAM e ISDS.

Classi utente

Una classe astratta User viene estesa per ogni tipo di utente necessario. Per ISAM si tratta di un utente per l'accesso all'appliance e di un altro per l'autenticazione a Web Runtime (Policy Server).

Struttura dei pacchetti ISAM

Ci sono quattro pacchetti ISAM primari: base, web, aac e fed. web contiene tutti i componenti necessari per configurare le funzionalità web, inclusi ldap integrato, runtime e funzionalità attivate come parte del modulo wga. aac contiene le funzionalità attivate come parte del modulo mga e fed quelle della federation. base contiene tutto il resto - inclusi runtime di aac e fed e Audit Configuration (questi sono comuni a aac e fed e quindi si trovano in base).

Nomi di pacchetti e file

I nomi dei pacchetti e dei file sono stati creati con la seguente intenzione:

  1. Mantenere nomi che corrispondano a quelli presenti nell'interfaccia GUI (LMI per l'appliance ISAM).
  2. Ogni file dovrebbe contenere un solo tipo di funzione per ciascuna tipologia (vedere elenco sotto) - ad esempio un solo add().
  3. Raggruppare funzioni correlate - una per ciascun tipo - in un file.
  4. L'URI per le chiamate API REST all'interno di un file sarà lo stesso e gestirà una "funzionalità" dell'appliance.

Utility

Contiene funzioni varie generiche e indipendenti da qualsiasi appliance IBM, ad esempio json_compare().

Tipi di funzioni

get_all()

Questa funzione in genere restituisce tutti gli oggetti correlati a quella funzionalità.

get()

Questa funzione restituisce i dettagli di un particolare oggetto.

set()

Questa funzione determina se l'oggetto da manipolare esiste; in caso contrario chiama add(), altrimenti chiama update(). Nei casi in cui non esiste update(), confronta il valore esistente sull'appliance con quello impostato tramite la funzione - se diverso, elimina (delete()) l'oggetto prima di chiamare add().

add()

Controlla se l'oggetto esiste già - in tal caso lo salta, altrimenti lo aggiunge.

update()

Controlla se l'oggetto esiste già - in tal caso verifica se è necessario un aggiornamento prima di apportare una modifica, altrimenti non fa nulla.

delete()

Controlla se l'oggetto esiste già - in tal caso lo elimina, altrimenti non fa nulla.

import_<>()

"import" è una parola riservata, quindi viene aggiunto un suffisso per indicare cosa importare (ad esempio file o key). Questa funzione verifica se l'oggetto esiste prima di importarlo.

export_<>()

Export verifica se l'oggetto esiste prima di esportarlo - quando si esporta in un file e il file esiste già, non lo riesporta. Esporta

compare()

Compare accetta l'output JSON delle funzioni get_all() e lo confronta. Rimuove dall'JSON i dati che sono unici per ciascun appliance (ad esempio i valori UUID). Il valore deleted_keys restituito elenca le chiavi JSON che sono state eliminate prima del confronto.

Parametri delle funzioni

Oggetto Appliance

Creare un oggetto appliance e passarlo alla funzione. L'appliance e l'oggetto User necessari sono classi che consentono future estensioni come l'autenticazione tramite certificato anziché nome utente/password.

check_mode

Il valore predefinito è False; passare True per restituire senza apportare modifiche. Il flag "changed" verrà impostato su True se vengono rilevate modifiche.

force

Il valore predefinito è False; passare True per ignorare la logica di idempotenza.

Altri parametri

Gli altri parametri corrisponderanno esattamente alla documentazione dell'API REST. L'intenzione era quella di fare riferimento alla documentazione dell'API REST senza doverla ripetere. Fare riferimento alla documentazione dell'API REST per i dettagli.

Aggiunta e apportamento di modifiche

Si prega di aprire una issue su GitHub quando viene scoperto un bug o quando ci sono API REST non coperte da questo pacchetto. Fornire note dettagliate insieme ai log di traccia quando si segnala un bug.

Licenza

I contenuti di questo repository sono open-source secondo la licenza Apache 2.0.

root@kitploit:~
Copyright 2017 International Business Machines

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Scarica lo strumento