10.3.3. Een pakketopslagplaats voor APT maken
Nu u een aangepast pakket heeft, kunt u het distribueren via een APT-pakketrepository. Gebruik berisping om de gewenste repository aan te maken en te vullen. Deze tool is behoorlijk krachtig en de handleiding is zeker de moeite waard om te lezen.
Een pakketrepository wordt doorgaans gehost op een server. Om het goed te scheiden van andere services die op de server draaien, kunt u het beste een gebruiker aanmaken die speciaal voor deze service is bedoeld. In het speciale gebruikersaccount kunt u de repositorybestanden hosten en ook de GnuPG-sleutel die zal worden gebruikt om de pakketrepository te ondertekenen:
# apt installeer reprepro gnupg
[...]
# adduser --system --group pkgrepo
Systeemgebruiker 'pkgrepo' toevoegen (UID 136) ... Nieuwe groep 'pkgrepo' toevoegen (GID 142) ...
Nieuwe gebruiker 'pkgrepo' (UID 136) toevoegen met groep 'pkgrepo' ... Thuismap '/home/pkgrepo' aanmaken ...
# chown pkgrepo $(tty)
# su - -s /bin/bash pkgrepo
$ gpg --gen-sleutel
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc. Dit is gratis software: u bent vrij om deze te wijzigen en opnieuw te distribueren.
Er is GEEN GARANTIE, voor zover wettelijk toegestaan.
gpg: map '/home/pkgrepo/.gnupg' aangemaakt
gpg: nieuw configuratiebestand '/home/pkgrepo/.gnupg/dirmngr.conf' gemaakt gpg: nieuw configuratiebestand '/home/pkgrepo/.gnupg/gpg.conf' gemaakt gpg: sleutelkastje '/home/pkgrepo/.gnupg/ pubring.kbx' gemaakt
Opmerking: Gebruik ”gpg --full-gen-key” voor een volledig uitgerust dialoogvenster voor het genereren van sleutels. GnuPG heeft een gebruikers-ID nodig om uw sleutel te identificeren.
Echte naam: Aanstootgevende beveiligingsrepository-ondertekeningssleutel
E-mailadres [e-mail beveiligd]
U heeft deze USER-ID geselecteerd:
"Aanstootgevende handtekeningsleutel voor beveiligingsrepository[e-mail beveiligd]
# apt installeer reprepro gnupg
[...]
# adduser --system --group pkgrepo
Systeemgebruiker 'pkgrepo' toevoegen (UID 136) ... Nieuwe groep 'pkgrepo' toevoegen (GID 142) ...
Nieuwe gebruiker 'pkgrepo' (UID 136) toevoegen met groep 'pkgrepo' ... Thuismap '/home/pkgrepo' aanmaken ...
# chown pkgrepo $(tty)
# su - -s /bin/bash pkgrepo
$ gpg --gen-sleutel
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc. Dit is gratis software: u bent vrij om deze te wijzigen en opnieuw te distribueren.
Er is GEEN GARANTIE, voor zover wettelijk toegestaan.
gpg: map '/home/pkgrepo/.gnupg' aangemaakt
gpg: nieuw configuratiebestand '/home/pkgrepo/.gnupg/dirmngr.conf' gemaakt gpg: nieuw configuratiebestand '/home/pkgrepo/.gnupg/gpg.conf' gemaakt gpg: sleutelkastje '/home/pkgrepo/.gnupg/ pubring.kbx' gemaakt
Opmerking: Gebruik ”gpg --full-gen-key” voor een volledig uitgerust dialoogvenster voor het genereren van sleutels. GnuPG heeft een gebruikers-ID nodig om uw sleutel te identificeren.
Echte naam: Aanstootgevende beveiligingsrepository-ondertekeningssleutel
E-mailadres [e-mail beveiligd]
U heeft deze USER-ID geselecteerd:
"Aanstootgevende handtekeningsleutel voor beveiligingsrepository[e-mail beveiligd]
(N)naam, (E)mail of (O)kay/(Q)uit wijzigen? o
We moeten veel willekeurige bytes genereren. Het is een goed idee om tijdens de eerste generatie een andere actie uit te voeren (typen op het toetsenbord, de muis bewegen, de schijven gebruiken); dit geeft de generator van willekeurige getallen een betere kans om voldoende entropie te verkrijgen.
[...]
gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb aangemaakt gpg: sleutel B4EF2D0D gemarkeerd als uiteindelijk vertrouwd
gpg: map '/home/pkgrepo/.gnupg/openpgp-revocs.d' aangemaakt
gpg: intrekkingscertificaat opgeslagen als '/home/pkgrepo/.gnupg/openpgp-revocs.d/
➥ F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’
openbare en geheime sleutel gemaakt en ondertekend.
gpg: de trustdb controleren
gpg: marginalen nodig: 3 completes nodig: 1 vertrouwensmodel: PGP
gpg: diepte: 0 geldig: 1 ondertekend: 0 vertrouwen: 0-, 0q, 0n, 0m, 0f, 1u pub rsa2048/B4EF2D0D 2016-06-17 [S]
Sleutelvingerafdruk = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D
uid [ultieme] Aanstootgevende handtekeningsleutel voor beveiligingsrepository[e-mail beveiligd]> sub rsa2048/38035F38 2016-06-17 []
(N)naam, (E)mail of (O)kay/(Q)uit wijzigen? o
We moeten veel willekeurige bytes genereren. Het is een goed idee om tijdens de eerste generatie een andere actie uit te voeren (typen op het toetsenbord, de muis bewegen, de schijven gebruiken); dit geeft de generator van willekeurige getallen een betere kans om voldoende entropie te verkrijgen.
[...]
gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb aangemaakt gpg: sleutel B4EF2D0D gemarkeerd als uiteindelijk vertrouwd
gpg: map '/home/pkgrepo/.gnupg/openpgp-revocs.d' aangemaakt
gpg: intrekkingscertificaat opgeslagen als '/home/pkgrepo/.gnupg/openpgp-revocs.d/
➥ F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’
openbare en geheime sleutel gemaakt en ondertekend.
gpg: de trustdb controleren
gpg: marginalen nodig: 3 completes nodig: 1 vertrouwensmodel: PGP
gpg: diepte: 0 geldig: 1 ondertekend: 0 vertrouwen: 0-, 0q, 0n, 0m, 0f, 1u pub rsa2048/B4EF2D0D 2016-06-17 [S]
Sleutelvingerafdruk = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D
uid [ultieme] Aanstootgevende handtekeningsleutel voor beveiligingsrepository[e-mail beveiligd]> sub rsa2048/38035F38 2016-06-17 []
Houd er rekening mee dat wanneer u om een wachtwoordzin wordt gevraagd, u een lege waarde moet invoeren (en moet bevestigen dat u uw privésleutel niet wilt beschermen), omdat u de repository niet-interactief wilt kunnen ondertekenen. Merk dat ook op GPG vereist schrijftoegang tot de terminal om veilig om een wachtwoordzin te kunnen vragen: daarom hebt u de eigendom van de virtuele terminal (die eigendom is van root omdat u aanvankelijk verbinding maakte als die gebruiker) gewijzigd voordat u een shell startte als pkgrepo.
Nu kunt u beginnen met het instellen van de repository. Hiervoor is een speciale directory nodig berisping en binnen die map moet je een conf/distributies bestand waarin wordt gedocumenteerd welke distributies beschikbaar zijn in de pakketrepository:
$ mkdir -p reprepro/conf
$ cd-reprepro
$ cat >conf/distributies <
Oorsprong: Offensieve beveiliging
Beschrijving: Interne pakketten van Offsec Architecturen: source amd64 i386 Componenten: main
SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END
$ mkdir -p reprepro/conf
$ cd-reprepro
$ cat >conf/distributies <
Oorsprong: Offensieve beveiliging
Beschrijving: Interne pakketten van Offsec Architecturen: source amd64 i386 Componenten: main
SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END
De verplichte velden zijn Codenaam, die de naam van de distributie geeft, Architecturen, wat aangeeft welke architecturen beschikbaar zullen zijn in de distributie (en geaccepteerd aan de invoerzijde), en COMPONENTEN, die de verschillende componenten aangeeft die beschikbaar zijn in de distributie (com-
ponenten vormen een soort subsectie van de distributie, die afzonderlijk kan worden ingeschakeld in de bronnenlijst van APT). De Oorsprong en Omschrijving velden zijn puur informatief en worden gekopieerd zoals ze zijn in het Sinds het dossier. De TekenMet veld vraagt berisping om de repository te ondertekenen met de GnuPG-sleutel waarvan de identificatie wordt vermeld (plaats hier de volledige vingerafdruk om er zeker van te zijn dat u de juiste sleutel gebruikt, en niet een andere die botst met de korte identificatie). De OokAccepteerVoor instelling is niet vereist, maar maakt verwerking mogelijk .veranderingen bestanden waarvan het veld Distributie een waarde heeft die hier wordt vermeld (zonder dit zou het alleen de codenaam van de distributie in dat veld accepteren).
Met deze basisopstelling kunt u verhuren berisping genereer een lege repository:
$ reprepro-export
Indexen exporteren...
$ vind .
.
./db
./db/versie
./db/referenties.db
./db/inhoud.cache.db
./db/checksums.db
./db/pakketten.db
./db/release.caches.db
./conf
./conf/distributies
./diss
./dists/offsec-intern
./dists/offsec-internal/Release.gpg
./dists/offsec-internal/Release
./dists/offsec-intern/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/Packages
./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/Packages
./dists/offsec-internal/main/binary-i386/Release
./dists/offsec-internal/main/binary-i386/Packages.gz
./dists/offsec-internal/InRelease
$ reprepro-export
Indexen exporteren...
$ vind .
.
./db
./db/versie
./db/referenties.db
./db/inhoud.cache.db
./db/checksums.db
./db/pakketten.db
./db/release.caches.db
./conf
./conf/distributies
./diss
./dists/offsec-intern
./dists/offsec-internal/Release.gpg
./dists/offsec-internal/Release
./dists/offsec-intern/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/Packages
./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/Packages
./dists/offsec-internal/main/binary-i386/Release
./dists/offsec-internal/main/binary-i386/Packages.gz
./dists/offsec-internal/InRelease
Zoals je kan zien, berisping heeft de meta-informatie van de repository gemaakt in a afstanden submap. Het initialiseerde ook een interne database in a db submap.
Het is nu tijd om uw eerste pakket toe te voegen. Kopieer eerst de bestanden die zijn gegenereerd door de build van het offsec- standaardwaarden pakket (offsec-defaults_1.0.dsc, offsec-defaults_1.0.tar.xz,
offsec-defaults_1.0_all.deb en offsec-defaults_1.0_amd64.changes) in /tmp
op de server die de pakketrepository host en vraag berisping om het pakket op te nemen:
$ reprepro omvat offsec-internal /tmp/offsec-defaults_1.0_amd64.changes
Indexen exporteren...
$ zwembad vinden zwembad zwembad/groot zwembad/groot/o
pool/main/o/offsec-defaults
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 omvat offsec-internal /tmp/offsec-defaults_1.0_amd64.changes
Indexen exporteren...
$ zwembad vinden zwembad zwembad/groot zwembad/groot/o
pool/main/o/offsec-defaults
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
Zoals je kunt zien, heeft het de bestanden toegevoegd aan zijn eigen pakketpool in a zwembad submap.
De afstanden en zwembad mappen zijn de twee mappen die u (openbaar) beschikbaar moet maken via HTTP om de installatie van uw APT-repository te voltooien. Ze bevatten alle bestanden die APT wil downloaden.
Ervan uitgaande dat u dit wilt hosten op een virtuele host met de naam pkgrepo.offsec.com, kunt u het volgende Apache-configuratiebestand maken en het opslaan /etc/apache2/sites-available/pkgrepo. offsec.com.confen schakel het in met a2ensite pkgrepo.offsec.com):
Servernaam pkgrepo.offsec.com ServerAdmin [e-mail beveiligd]
ErrorLog /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
Opties Indexen FollowSymLinks MultiViews Vereist alles toegekend
AllowOverride Alle
Servernaam pkgrepo.offsec.com ServerAdmin [e-mail beveiligd]
ErrorLog /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
Opties Indexen FollowSymLinks MultiViews Vereist alles toegekend
AllowOverride Alle
En de daarbij behorende sources.list invoer om toe te voegen op machines die pakketten uit deze repository nodig hebben, zou er als volgt uitzien:
deb http://pkgrepo.offsec.com offsec-interne main
# Schakel de volgende regel in als u ook toegang tot bronpakketten wilt
# deb-src http://pkgrepo.offsec.com offsec-interne main
deb http://pkgrepo.offsec.com offsec-interne main
# Schakel de volgende regel in als u ook toegang tot bronpakketten wilt
# deb-src http://pkgrepo.offsec.com offsec-interne main
Uw pakket is nu gepubliceerd en zou beschikbaar moeten zijn voor uw netwerkhosts.
Hoewel dit een langdurig proces is geweest, is het “zware werk” nu voltooid. U kunt uw netwerkmachines opstarten via PXE, een aangepaste versie van Kali Linux installeren zonder interactie dankzij een door het netwerk geleverde preseed, SaltStack configureren om uw configuraties te beheren (en minions te controleren!), Gevorkte aangepaste pakketten maken en deze pakketten via uw netwerk distribueren. eigen pakketrepository. Dit biedt gecentraliseerd beheer en controle op ondernemingsniveau over meerdere Kali Linux-installaties. Kortom, u kunt nu snel zeer veilige Kali-systemen implementeren die vooraf zijn geconfigureerd voor uw specifieke behoeften en deze gesynchroniseerd houden dankzij Kali's (semi-automatische) installatie van alle pakketupdates.