Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

10.3.3. Creazione di un repository di pacchetti per APT‌


Ora che hai un pacchetto personalizzato, puoi distribuirlo tramite un repository di pacchetti APT. Utilizzo rimproverare per creare il repository desiderato e riempirlo. Questo strumento è piuttosto potente e vale sicuramente la pena leggere la sua pagina di manuale.

Un repository di pacchetti è in genere ospitato su un server. Per separarlo correttamente dagli altri servizi in esecuzione sul server, è meglio creare un utente dedicato a questo servizio. Nell'account utente dedicato, potrai ospitare i file del repository e anche la chiave GnuPG che verrà utilizzata per firmare il repository del pacchetto:


# apt installa reprepro gnupg

[...]

# adduser --system --group pkgrepo

Aggiunta dell'utente di sistema 'pkgrepo' (UID 136) ... Aggiunta del nuovo gruppo 'pkgrepo' (GID 142) ...

Aggiunta del nuovo utente 'pkgrepo' (UID 136) con il gruppo 'pkgrepo'... Creazione della directory home '/home/pkgrepo'...

# chown pkgrepo $(tty)

# su - -s /bin/bash pkgrepo

$ gpg --gen-key

gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc. Questo è software gratuito: sei libero di modificarlo e ridistribuirlo.

NESSUNA GARANZIA, nella misura consentita dalla legge.


gpg: directory '/home/pkgrepo/.gnupg' creata

gpg: creato il nuovo file di configurazione '/home/pkgrepo/.gnupg/dirmngr.conf' gpg: creato il nuovo file di configurazione '/home/pkgrepo/.gnupg/gpg.conf' gpg: keybox '/home/pkgrepo/.gnupg/ pubring.kbx' creato

Nota: usa "gpg --full-gen-key" per una finestra di dialogo completa per la generazione delle chiavi. GnuPG ha bisogno di costruire un ID utente per identificare la tua chiave.

Vero nome: Chiave di firma del repository di sicurezza offensiva

Indirizzo email: [email protected]

Hai selezionato questo USER-ID:

"Chiave di firma del repository di sicurezza offensiva[email protected]> "

# apt installa reprepro gnupg

[...]

# adduser --system --group pkgrepo

Aggiunta dell'utente di sistema 'pkgrepo' (UID 136) ... Aggiunta del nuovo gruppo 'pkgrepo' (GID 142) ...

Aggiunta del nuovo utente 'pkgrepo' (UID 136) con il gruppo 'pkgrepo'... Creazione della directory home '/home/pkgrepo'...

# chown pkgrepo $(tty)

# su - -s /bin/bash pkgrepo

$ gpg --gen-key

gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc. Questo è software gratuito: sei libero di modificarlo e ridistribuirlo.

NESSUNA GARANZIA, nella misura consentita dalla legge.


gpg: directory '/home/pkgrepo/.gnupg' creata

gpg: creato il nuovo file di configurazione '/home/pkgrepo/.gnupg/dirmngr.conf' gpg: creato il nuovo file di configurazione '/home/pkgrepo/.gnupg/gpg.conf' gpg: keybox '/home/pkgrepo/.gnupg/ pubring.kbx' creato

Nota: usa "gpg --full-gen-key" per una finestra di dialogo completa per la generazione delle chiavi. GnuPG ha bisogno di costruire un ID utente per identificare la tua chiave.

Vero nome: Chiave di firma del repository di sicurezza offensiva

Indirizzo email: [email protected]

Hai selezionato questo USER-ID:

"Chiave di firma del repository di sicurezza offensiva[email protected]> "


Cambia (N)nome, (E)mail o (O)kay/(Q)uit? o

Dobbiamo generare molti byte casuali. È una buona idea eseguire qualche altra azione (digitare sulla tastiera, muovere il mouse, utilizzare i dischi) durante la prima generazione; questo dà al generatore di numeri casuali una migliore possibilità di guadagnare abbastanza entropia.

[...]

gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb creato gpg: chiave B4EF2D0D contrassegnata come attendibile

gpg: creata la directory '/home/pkgrepo/.gnupg/openpgp-revocs.d'

gpg: certificato di revoca archiviato come '/home/pkgrepo/.gnupg/openpgp-revocs.d/

F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’

chiave pubblica e segreta creata e firmata.


gpg: controllo del trustdb

gpg: marginali necessari: 3 completi necessari: 1 modello di fiducia: PGP

gpg: profondità: 0 valido: 1 firmato: 0 fiducia: 0-, 0q, 0n, 0m, 0f, 1u pub rsa2048/B4EF2D0D 2016-06-17 [S]

Impronta chiave = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D

uid [ultimate] Chiave di firma del repository di sicurezza offensiva[email protected]> sub rsa2048/38035F38 2016-06-17 []

Cambia (N)nome, (E)mail o (O)kay/(Q)uit? o

Dobbiamo generare molti byte casuali. È una buona idea eseguire qualche altra azione (digitare sulla tastiera, muovere il mouse, utilizzare i dischi) durante la prima generazione; questo dà al generatore di numeri casuali una migliore possibilità di guadagnare abbastanza entropia.

[...]

gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb creato gpg: chiave B4EF2D0D contrassegnata come attendibile

gpg: creata la directory '/home/pkgrepo/.gnupg/openpgp-revocs.d'

gpg: certificato di revoca archiviato come '/home/pkgrepo/.gnupg/openpgp-revocs.d/

F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’

chiave pubblica e segreta creata e firmata.


gpg: controllo del trustdb

gpg: marginali necessari: 3 completi necessari: 1 modello di fiducia: PGP

gpg: profondità: 0 valido: 1 firmato: 0 fiducia: 0-, 0q, 0n, 0m, 0f, 1u pub rsa2048/B4EF2D0D 2016-06-17 [S]

Impronta chiave = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D

uid [ultimate] Chiave di firma del repository di sicurezza offensiva[email protected]> sub rsa2048/38035F38 2016-06-17 []


Nota che quando ti viene richiesta una passphrase, dovresti inserire un valore vuoto (e confermare che non vuoi proteggere la tua chiave privata) poiché vuoi essere in grado di firmare il repository in modo non interattivo. Nota anche che gpg richiede l'accesso in scrittura al terminale per poter richiedere in modo sicuro una passphrase: ecco perché hai cambiato la proprietà del terminale virtuale (che è di proprietà di root poiché ti sei inizialmente connesso come quell'utente) prima di avviare una shell come pkgrepo.

Ora puoi iniziare a configurare il repository. È necessaria una directory dedicata per rimproverare e all'interno di quella directory devi creare un conf/distribuzioni file che documenta quali distribuzioni sono disponibili nel repository dei pacchetti:


$ mkdir -p reprepro/conf

$ riproduzione di cd

$ cat >conf/distribuzioni <

Origine: sicurezza offensiva

Descrizione: Pacchetti interni di Offsec Architetture: source amd64 i386 Componenti: main

SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END

$ mkdir -p reprepro/conf

$ riproduzione di cd

$ cat >conf/distribuzioni <

Origine: sicurezza offensiva

Descrizione: Pacchetti interni di Offsec Architetture: source amd64 i386 Componenti: main

SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END


I campi obbligatori sono Nome in codice, che dà il nome della distribuzione, Architetture, che indica quali architetture saranno disponibili nella distribuzione (e accettate sul lato input), e Componenti, che indica i vari componenti disponibili nella distribuzione (com-

ponents sono una sorta di sottosezione della distribuzione, che può essere abilitata separatamente nel sources.list di APT). Il Origin ed Descrizione i campi sono puramente informativi e vengono copiati così come sono nel Rilasciare file. Il Firma con campo chiede rimproverare per firmare il repository con la chiave GnuPG il cui identificatore è elencato (metti qui l'impronta digitale completa per assicurarti di utilizzare la chiave corretta e non un'altra che si scontra con l'identificatore breve). Il AncheAccettaPer l'impostazione non è necessaria ma consente di elaborare .i cambiamenti file il cui campo Distribuzione ha un valore elencato qui (senza questo, accetterebbe solo il nome in codice della distribuzione in quel campo).

Con questa configurazione di base in atto, puoi lasciare che rimproverare generare un repository vuoto:


$ esportazione reprepro

Esportazione indici...

$ trova .

.

./db

./db/versione

./db/riferimenti.db

./db/contents.cache.db

./db/checksum.db

./db/pacchetti.db

./db/release.caches.db

./conf

./conf/distribuzioni

./dist

./dists/offsec-internal

./dists/offsec-internal/Release.gpg

./dists/offsec-internal/Release

./dists/offsec-internal/main

./dists/offsec-internal/main/source

./dists/offsec-internal/main/source/Release

./dists/offsec-internal/main/source/Sources.gz

./dists/offsec-internal/main/binary-amd64

./dists/offsec-internal/main/binary-amd64/Pacchetti

./dists/offsec-internal/main/binary-amd64/Release

./dists/offsec-internal/main/binary-amd64/Packages.gz

./dists/offsec-internal/main/binary-i386

./dists/offsec-internal/main/binary-i386/Pacchetti

./dists/offsec-internal/main/binary-i386/Release

./dists/offsec-internal/main/binary-i386/Packages.gz

./dists/offsec-internal/InRelease

$ esportazione reprepro

Esportazione indici...

$ trova .

.

./db

./db/versione

./db/riferimenti.db

./db/contents.cache.db

./db/checksum.db

./db/pacchetti.db

./db/release.caches.db

./conf

./conf/distribuzioni

./dist

./dists/offsec-internal

./dists/offsec-internal/Release.gpg

./dists/offsec-internal/Release

./dists/offsec-internal/main

./dists/offsec-internal/main/source

./dists/offsec-internal/main/source/Release

./dists/offsec-internal/main/source/Sources.gz

./dists/offsec-internal/main/binary-amd64

./dists/offsec-internal/main/binary-amd64/Pacchetti

./dists/offsec-internal/main/binary-amd64/Release

./dists/offsec-internal/main/binary-amd64/Packages.gz

./dists/offsec-internal/main/binary-i386

./dists/offsec-internal/main/binary-i386/Pacchetti

./dists/offsec-internal/main/binary-i386/Release

./dists/offsec-internal/main/binary-i386/Packages.gz

./dists/offsec-internal/InRelease


Come si può vedere, rimproverare ha creato le meta-informazioni del repository in a disti sottocartella. Ha anche inizializzato un database interno in a db sottocartella.

Ora è il momento di aggiungere il tuo primo pacchetto. Per prima cosa, copia i file generati dalla build del offsec- default pacchetto (offsec-default_1.0.dsc, offsec-default_1.0.tar.xz,

offsec-defaults_1.0_all.deb e offsec-defaults_1.0_amd64.changes) in /tmp

sul server che ospita il repository del pacchetto e chiedi rimproverare per includere il pacchetto:


$ reprepro include offsec-internal /tmp/offsec-defaults_1.0_amd64.changes

Esportazione indici...

$ trova la piscina piscina piscina/piscina principale/principale/o

pool/main/o/offsec-default

pool/main/o/offsec-defaults/offsec-defaults_1.0.dsc pool/main/o/offsec-defaults/offsec-defaults_1.0.tar.xz pool/main/o/offsec-defaults/offsec-defaults_1.0. XNUMX_all.deb

$ reprepro include offsec-internal /tmp/offsec-defaults_1.0_amd64.changes

Esportazione indici...

$ trova la piscina piscina piscina/piscina principale/principale/o

pool/main/o/offsec-default

pool/main/o/offsec-defaults/offsec-defaults_1.0.dsc pool/main/o/offsec-defaults/offsec-defaults_1.0.tar.xz pool/main/o/offsec-defaults/offsec-defaults_1.0. XNUMX_all.deb


Come puoi vedere, ha aggiunto i file nel proprio pool di pacchetti in a pool sottocartella.

I disti ed pool le directory sono le due directory che devi rendere (pubblicamente) disponibili su HTTP per completare la configurazione del tuo repository APT. Contengono tutti i file che APT vorrà scaricare.

Supponendo che tu voglia ospitare questo su un host virtuale chiamato pkgrepo.offsec.com, potresti creare il seguente file di configurazione di Apache, salvarlo in /etc/apache2/sites-disponibili/pkgrepo. offsec.com.conf, e abilitarlo con a2ensitepkgrepo.offsec.com):


NomeServer pkgrepo.offsec.com ServerAdmin [email protected]


Log degli errori /var/log/apache2/pkgrepo.offsec.com-error.log

CustomLog /var/log/apache2/pkgrepo.offsec.com-access.log ”%h %l %u %t \”%r\” %>s %O” DocumentRoot /home/pkgrepo/reprepro

Opzioni Indici FollowSymLinks MultiViews Richiedi tutto concesso

AllowOverride All

NomeServer pkgrepo.offsec.com ServerAdmin [email protected]


Log degli errori /var/log/apache2/pkgrepo.offsec.com-error.log

CustomLog /var/log/apache2/pkgrepo.offsec.com-access.log ”%h %l %u %t \”%r\” %>s %O” DocumentRoot /home/pkgrepo/reprepro

Opzioni Indici FollowSymLinks MultiViews Richiedi tutto concesso

AllowOverride All


E il corrispondente fonti.lista la voce da aggiungere su macchine che necessitano di pacchetti da questo repository sarebbe simile a questa:


deb http://pkgrepo.offsec.com offsec-internal main


# Abilita la riga successiva se vuoi accedere anche ai pacchetti sorgente

# deb-src http://pkgrepo.offsec.com offsec-internal main

deb http://pkgrepo.offsec.com offsec-internal main


# Abilita la riga successiva se vuoi accedere anche ai pacchetti sorgente

# deb-src http://pkgrepo.offsec.com offsec-internal main


Il tuo pacchetto è ora pubblicato e dovrebbe essere disponibile per i tuoi host di rete.

Sebbene questa sia stata una configurazione lunga, il "sollevamento pesante" è ora completato. Puoi avviare le tue macchine in rete tramite PXE, installare una versione personalizzata di Kali Linux senza interazione grazie a un preconfigurato fornito in rete, configurare SaltStack per gestire le tue configurazioni (e controllare i servi!), creare pacchetti personalizzati biforcati e distribuire quei pacchetti attraverso il tuo proprio repository di pacchetti. Ciò fornisce una gestione centralizzata e un controllo a livello aziendale su più installazioni Kali Linux. In breve, ora puoi implementare rapidamente sistemi Kali altamente sicuri preconfigurati per le tue esigenze specifiche e mantenerli sincronizzati grazie all'installazione (semiautomatica) di tutti gli aggiornamenti dei pacchetti da parte di Kali.


Il miglior sistema operativo cloud computing su OnWorks: