<Sebelumnya | Konten | Selanjutnya>
10.3.3. Membuat Repositori Paket untuk APT
Sekarang setelah Anda memiliki paket khusus, Anda dapat mendistribusikannya melalui repositori paket APT. Menggunakan teguran untuk membuat repositori yang diinginkan dan untuk mengisinya. Alat ini cukup kuat dan halaman manualnya tentu layak dibaca.
Repositori paket biasanya di-host di server. Untuk memisahkannya dengan benar dari layanan lain yang berjalan di server, yang terbaik adalah membuat pengguna yang didedikasikan untuk layanan ini. Di akun pengguna khusus, Anda akan dapat meng-host file repositori dan juga kunci GnuPG yang akan digunakan untuk menandatangani repositori paket:
# tepat instal reprepro gnupg
[...]
# adduser --system --group pkgrepo
Menambahkan pengguna sistem 'pkgrepo' (UID 136) ... Menambahkan grup baru 'pkgrepo' (GID 142) ...
Menambahkan pengguna baru 'pkgrepo' (UID 136) dengan grup 'pkgrepo' ... Membuat direktori home '/home/pkgrepo' ...
# chown pkgrepo $(tty)
# su - -s /bin/bash pkgrepo
$ gpg --gen-kunci
gpg (GnuPG) 2.1.11; Hak Cipta (C) 2016 Free Software Foundation, Inc. Ini adalah perangkat lunak gratis: Anda bebas mengubah dan mendistribusikannya kembali.
TIDAK ADA JAMINAN, sejauh diizinkan oleh hukum.
gpg: direktori '/home/pkgrepo/.gnupg' dibuat
gpg: file konfigurasi baru '/home/pkgrepo/.gnupg/dirmngr.conf' dibuat gpg: file konfigurasi baru '/home/pkgrepo/.gnupg/gpg.conf' dibuat gpg: keybox '/home/pkgrepo/.gnupg/ pubring.kbx' dibuat
Catatan: Gunakan "gpg --full-gen-key" untuk dialog pembuatan kunci berfitur lengkap. GnuPG perlu membuat ID pengguna untuk mengidentifikasi kunci Anda.
Nama asli: Kunci Penandatanganan Repositori Keamanan yang Menyerang
Alamat email: [email dilindungi]
Anda memilih USER-ID ini:
”Kunci Penandatanganan Repositori Keamanan Ofensif[email dilindungi]> "
# tepat instal reprepro gnupg
[...]
# adduser --system --group pkgrepo
Menambahkan pengguna sistem 'pkgrepo' (UID 136) ... Menambahkan grup baru 'pkgrepo' (GID 142) ...
Menambahkan pengguna baru 'pkgrepo' (UID 136) dengan grup 'pkgrepo' ... Membuat direktori home '/home/pkgrepo' ...
# chown pkgrepo $(tty)
# su - -s /bin/bash pkgrepo
$ gpg --gen-kunci
gpg (GnuPG) 2.1.11; Hak Cipta (C) 2016 Free Software Foundation, Inc. Ini adalah perangkat lunak gratis: Anda bebas mengubah dan mendistribusikannya kembali.
TIDAK ADA JAMINAN, sejauh diizinkan oleh hukum.
gpg: direktori '/home/pkgrepo/.gnupg' dibuat
gpg: file konfigurasi baru '/home/pkgrepo/.gnupg/dirmngr.conf' dibuat gpg: file konfigurasi baru '/home/pkgrepo/.gnupg/gpg.conf' dibuat gpg: keybox '/home/pkgrepo/.gnupg/ pubring.kbx' dibuat
Catatan: Gunakan "gpg --full-gen-key" untuk dialog pembuatan kunci berfitur lengkap. GnuPG perlu membuat ID pengguna untuk mengidentifikasi kunci Anda.
Nama asli: Kunci Penandatanganan Repositori Keamanan yang Menyerang
Alamat email: [email dilindungi]
Anda memilih USER-ID ini:
”Kunci Penandatanganan Repositori Keamanan Ofensif[email dilindungi]> "
Ubah (N)ame, (E)mail, atau (O)kay/(Q)uit? o
Kita perlu menghasilkan banyak byte acak. Ini adalah ide yang baik untuk melakukan beberapa tindakan lain (ketik pada keyboard, gerakkan mouse, gunakan disk) selama generasi utama; ini memberi generator nomor acak peluang yang lebih baik untuk mendapatkan entropi yang cukup.
[...]
gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb dibuat gpg: kunci B4EF2D0D ditandai sebagai akhirnya tepercaya
gpg: direktori '/home/pkgrepo/.gnupg/openpgp-revocs.d' dibuat
gpg: sertifikat pencabutan disimpan sebagai '/home/pkgrepo/.gnupg/openpgp-revocs.d/
➥ F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’
kunci publik dan rahasia dibuat dan ditandatangani.
gpg: memeriksa trustdb
gpg: marginal yang dibutuhkan: 3 penyelesaian yang dibutuhkan: 1 model kepercayaan: PGP
gpg: kedalaman: 0 valid: 1 ditandatangani: 0 kepercayaan: 0-, 0q, 0n, 0m, 0f, 1u pub rsa2048/B4EF2D0D 2016-06-17 [S]
Sidik jari kunci = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D
uid [ultimate] Kunci Penandatanganan Repositori Keamanan Ofensif[email dilindungi]> sub rsa2048/38035F38 2016-06-17 []
Ubah (N)ame, (E)mail, atau (O)kay/(Q)uit? o
Kita perlu menghasilkan banyak byte acak. Ini adalah ide yang baik untuk melakukan beberapa tindakan lain (ketik pada keyboard, gerakkan mouse, gunakan disk) selama generasi utama; ini memberi generator nomor acak peluang yang lebih baik untuk mendapatkan entropi yang cukup.
[...]
gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb dibuat gpg: kunci B4EF2D0D ditandai sebagai akhirnya tepercaya
gpg: direktori '/home/pkgrepo/.gnupg/openpgp-revocs.d' dibuat
gpg: sertifikat pencabutan disimpan sebagai '/home/pkgrepo/.gnupg/openpgp-revocs.d/
➥ F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’
kunci publik dan rahasia dibuat dan ditandatangani.
gpg: memeriksa trustdb
gpg: marginal yang dibutuhkan: 3 penyelesaian yang dibutuhkan: 1 model kepercayaan: PGP
gpg: kedalaman: 0 valid: 1 ditandatangani: 0 kepercayaan: 0-, 0q, 0n, 0m, 0f, 1u pub rsa2048/B4EF2D0D 2016-06-17 [S]
Sidik jari kunci = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D
uid [ultimate] Kunci Penandatanganan Repositori Keamanan Ofensif[email dilindungi]> sub rsa2048/38035F38 2016-06-17 []
Perhatikan bahwa ketika Anda diminta untuk frasa sandi, Anda harus memasukkan nilai kosong (dan mengonfirmasi bahwa Anda tidak ingin melindungi kunci pribadi Anda) karena Anda ingin dapat menandatangani repositori secara non-interaktif. Perhatikan juga bahwa gpg memerlukan akses tulis ke terminal untuk dapat dengan aman Meminta frasa sandi: itulah sebabnya Anda mengubah kepemilikan terminal virtual (yang dimiliki oleh root sejak Anda awalnya terhubung sebagai pengguna itu) sebelum memulai Shell sebagai pkgrepo.
Sekarang Anda dapat mulai mengatur repositori. Direktori khusus diperlukan untuk teguran dan di dalam direktori itu Anda harus membuat conf/distribusi file yang mendokumentasikan distribusi mana yang tersedia dalam repositori paket:
$ mkdir -p reprepro/conf
$ cd reppro
$ cat >conf/distribusi <
Asal: Keamanan Serangan
Deskripsi: Paket internal Offsec Arsitektur: sumber amd64 i386 Komponen: main
SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END
$ mkdir -p reprepro/conf
$ cd reppro
$ cat >conf/distribusi <
Asal: Keamanan Serangan
Deskripsi: Paket internal Offsec Arsitektur: sumber amd64 i386 Komponen: main
SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END
Bidang yang diperlukan adalah Codename, yang memberikan nama distribusi, Arsitektur, yang menunjukkan arsitektur mana yang akan tersedia dalam distribusi (dan diterima di sisi input), dan Komponen, yang menunjukkan berbagai komponen yang tersedia dalam distribusi (com-
ponents adalah semacam sub-bagian dari distribusi, yang dapat diaktifkan secara terpisah di sources.list APT). NS Asal dan Deskripsi Produk bidang murni informatif dan disalin apa adanya di Lepaskan mengajukan. Itu TandaDengan lapangan bertanya teguran untuk menandatangani repositori dengan kunci GnuPG yang pengidentifikasinya terdaftar (letakkan sidik jari lengkap di sini untuk memastikan Anda menggunakan kunci yang benar, dan tidak ada lagi yang bertabrakan dengan pengidentifikasi pendek). NS JugaTerimaUntuk pengaturan tidak diperlukan tetapi memungkinkan untuk diproses .perubahan file yang bidang Distribusinya memiliki nilai yang tercantum di sini (tanpa ini, itu hanya akan menerima nama kode distribusi di bidang itu).
Dengan pengaturan dasar ini, Anda dapat membiarkan teguran menghasilkan repositori kosong:
$ ekspor reprepro
Mengekspor indeks...
$ Temukan .
.
./db
./db/versi
./db/referensi.db
./db/contents.cache.db
./db/checksums.db
./db/packages.db
./db/rilis.caches.db
./conf
./conf/distribusi
./disst
./dists/offsec-internal
./dists/offsec-internal/Release.gpg
./dists/offsec-internal/Rilis
./dists/offsec-internal/main
./dists/offsec-internal/main/source
./dists/offsec-internal/main/source/Rilis
./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
$ ekspor reprepro
Mengekspor indeks...
$ Temukan .
.
./db
./db/versi
./db/referensi.db
./db/contents.cache.db
./db/checksums.db
./db/packages.db
./db/rilis.caches.db
./conf
./conf/distribusi
./disst
./dists/offsec-internal
./dists/offsec-internal/Release.gpg
./dists/offsec-internal/Rilis
./dists/offsec-internal/main
./dists/offsec-internal/main/source
./dists/offsec-internal/main/source/Rilis
./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
Seperti yang Anda lihat, teguran membuat informasi meta repositori di a dist sub-direktori. Itu juga menginisialisasi database internal di a db sub-direktori.
Sekarang saatnya untuk menambahkan paket pertama Anda. Pertama, salin file yang dihasilkan oleh build dari offsec- default kemasan (offsec-defaults_1.0.dsc, offsec-defaults_1.0.tar.xz,
offsec-defaults_1.0_all.deb, dan offsec-defaults_1.0_amd64.changes) menjadi /tmp
di server yang menghosting repositori paket dan tanyakan teguran untuk menyertakan paket:
$ reprepro termasuk offsec-internal /tmp/offsec-defaults_1.0_amd64.changes
Mengekspor indeks...
$ temukan kolam kolam renang/kolam utama/utama/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 termasuk offsec-internal /tmp/offsec-defaults_1.0_amd64.changes
Mengekspor indeks...
$ temukan kolam kolam renang/kolam utama/utama/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
Seperti yang Anda lihat, itu menambahkan file ke kumpulan paketnya sendiri di a kolam sub-direktori.
Grafik dist dan kolam direktori adalah dua direktori yang Anda perlukan (untuk umum) tersedia melalui HTTP untuk menyelesaikan penyiapan repositori APT Anda. Mereka berisi semua file yang ingin diunduh oleh APT.
Dengan asumsi Anda ingin meng-host ini di host virtual bernama pkgrepo.offsec.com, Anda dapat membuat file konfigurasi Apache berikut, simpan ke /etc/Apache2/sites-available/pkgrepo. offsec.com.conf, dan aktifkan dengan a2ensite pkgrepo.offsec.com):
Nama Server pkgrepo.offsec.com ServerAdmin [email dilindungi]
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
Pilihan Indeks FollowSymLinks MultiViews Memerlukan semua diberikan
AllowOverride Semua
Nama Server pkgrepo.offsec.com ServerAdmin [email dilindungi]
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
Pilihan Indeks FollowSymLinks MultiViews Memerlukan semua diberikan
AllowOverride Semua
Dan yang sesuai sources.list entri untuk menambahkan mesin yang membutuhkan paket dari repositori ini akan terlihat seperti ini:
deb http://pkgrepo.offsec.com utama offsec-internal
# Aktifkan baris berikutnya jika Anda juga ingin mengakses paket sumber
# deb-src http://pkgrepo.offsec.com utama offsec-internal
deb http://pkgrepo.offsec.com utama offsec-internal
# Aktifkan baris berikutnya jika Anda juga ingin mengakses paket sumber
# deb-src http://pkgrepo.offsec.com utama offsec-internal
Paket Anda sekarang diterbitkan dan akan tersedia untuk host jaringan Anda.
Meskipun ini merupakan penyiapan yang panjang, "angkat berat" sekarang telah selesai. Anda dapat mem-boot mesin jaringan Anda melalui PXE, menginstal versi Kali Linux yang disesuaikan tanpa interaksi berkat preseed yang dikirim ke jaringan, mengkonfigurasi SaltStack untuk mengelola konfigurasi Anda (dan mengontrol antek!), membuat paket kustom bercabang, dan mendistribusikan paket tersebut melalui Anda repositori paket sendiri. Ini memberikan manajemen terpusat dan kontrol tingkat perusahaan atas beberapa instalasi Kali Linux. Singkatnya, sekarang Anda dapat dengan cepat menerapkan sistem Kali yang sangat aman yang telah dikonfigurasi sebelumnya untuk kebutuhan spesifik Anda dan menjaganya tetap sinkron berkat instalasi Kali (semi-otomatis) dari semua pembaruan paket.