• Offensive Security Repository Signing Key Email address: repoadmin@offsec.com
  • Kali Linux Revealed




    Download 11,68 Mb.
    Pdf ko'rish
    bet157/174
    Sana15.01.2024
    Hajmi11,68 Mb.
    #137314
    1   ...   153   154   155   156   157   158   159   160   ...   174
    Bog'liq
    Kali-Linux-Revealed-2021-edition

    What is a
    Makefile
    file?
    You may have noticed the message concerning the missing
    Makefile
    at the end of
    the
    dh_make
    output and the mention of its similarity to the
    rules
    file. A
    Makefile
    is
    a script file used by the
    make
    program; it describes rules for how to build a set of files
    from each other in a tree of dependencies. For instance, a program can be built from
    a set of source files. The
    Makefile
    file describes these rules in the following format:
    target: source1 source2 ...
    command1
    command2
    272
    Kali Linux Revealed


    The interpretation of such a rule is as follows: if one of the
    source*
    files is more
    recent than the
    target
    file, then the target needs to be generated, using
    command1
    and
    command2
    .
    Note that the command lines must start with a tab character; also note that when
    a command line starts with a dash character (
    -
    ), failure of the command does not
    interrupt the whole process.
    Although this file is the heart of the process, it contains only the bare minimum for running a
    standard set of commands provided by the
    debhelper
    tool. Such is the case for files generated by
    dh_make
    . To install most of your files, we recommend configuring the behavior of the
    dh_install
    command by creating the following
    debian/offsec-defaults.install
    file:
    apt/offsec.list etc/apt/sources.list.d/
    apt/offsec.gpg etc/apt/trusted.gpg.d/
    salt/offsec.conf etc/salt/minion.d/
    images/background.png usr/share/images/offsec/
    You could also use this to install the gsettings override file but debhelper provides a dedicated
    tool for this (
    dh_installgsettings
    ) so you can rely on it. First, put your settings in
    debian/
    offsec-defaults.gsettings-override
    :
    [org.gnome.desktop.background]
    picture-options=’zoom’
    picture-uri=’file:///usr/share/images/offsec/background.png’
    Next, override the
    dh_installgsettings
    call in
    debian/rules
    to increase the priority to the
    level expected for an organization override (which is 90 according to the manual page):
    #!/usr/bin/make -f
    %:
    dh $@
    override_dh_installgsettings:
    dh_installgsettings --priority=90
    At this point, the source package is ready. All that is left to do is to generate the binary package
    with the same method used previously for rebuilding packages: run the
    dpkg-buildpackage -us
    -uc
    command from within the
    offsec-defaults-1.0
    directory:
    dpkg-buildpackage -us -uc
    dpkg-buildpackage: info: source package offsec-defaults
    dpkg-buildpackage: info: source version 1.0
    dpkg-buildpackage: info: source distribution unstable
    dpkg-buildpackage: info: source changed by Raphaël Hertzog 
    dpkg-buildpackage: info: host architecture amd64
    273
    Chapter 10 — Kali Linux in the Enterprise


    dpkg-source --before-build offsec-defaults-1.0
    fakeroot debian/rules clean
    dh clean
    dh_testdir
    dh_auto_clean
    dh_clean
    dpkg-source -b offsec-defaults-1.0
    dpkg-source: info: using source format ’3.0 (native)’
    dpkg-source: info: building offsec-defaults in offsec-defaults_1.0.tar.xz
    dpkg-source: info: building offsec-defaults in offsec-defaults_1.0.dsc
    debian/rules build
    dh build
    dh_testdir
    dh_update_autotools_config
    dh_auto_configure
    dh_auto_build
    dh_auto_test
    fakeroot debian/rules binary
    dh binary
    dh_testroot
    dh_prep
    dh_auto_install
    dh_install
    dh_installdocs
    dh_installchangelogs
    debian/rules override_dh_installgsettings
    make[1]: Entering directory ’/home/kali/offsec-defaults-1.0’
    dh_installgsettings --priority=90
    make[1]: Leaving directory ’/home/kali/offsec-defaults-1.0’
    dh_perl
    dh_link
    dh_strip_nondeterminism
    dh_compress
    dh_fixperms
    dh_installdeb
    dh_gencontrol
    dh_md5sums
    dh_builddeb
    dpkg-deb: building package ’offsec-defaults’ in ’../offsec-defaults_1.0_all.deb’.
    dpkg-genchanges
    >../offsec-defaults_1.0_amd64.changes
    dpkg-genchanges: info: including full source code in upload
    dpkg-source --after-build offsec-defaults-1.0
    dpkg-buildpackage: info: full upload; Debian-native package (full source is included)
    274
    Kali Linux Revealed


    10.3.3. Creating a Package Repository for APT
    Now that you have a custom package, you can distribute it through an APT package repository.
    Use
    reprepro
    to create the desired repository and to fill it. This tool is rather powerful and its
    manual page is certainly worth reading.
    A package repository is typically hosted on a server. To properly separate it from other services
    running on the server, it is best to create a user dedicated to this service. In the dedicated user
    account, you will be able to host the repository files and also the GnuPG key that will be used to
    sign the package repository:
    apt install reprepro gnupg
    [...]
    adduser --system --group pkgrepo
    Adding system user ‘pkgrepo’ (UID 136) ...
    Adding new group ‘pkgrepo’ (GID 142) ...
    Adding new user ‘pkgrepo’ (UID 136) with group ‘pkgrepo’ ...
    Creating home directory ‘/home/pkgrepo’ ...
    chown pkgrepo $(tty)
    su - -s /bin/bash pkgrepo
    pkgrepo@kali:~$ gpg --gen-key
    gpg (GnuPG) 2.1.11; Copyright (C) 2020 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    gpg: directory ’/home/pkgrepo/.gnupg’ created
    gpg: new configuration file ’/home/pkgrepo/.gnupg/dirmngr.conf’ created
    gpg: new configuration file ’/home/pkgrepo/.gnupg/gpg.conf’ created
    gpg: keybox ’/home/pkgrepo/.gnupg/pubring.kbx’ created
    Note: Use ”gpg --full-gen-key” for a full featured key generation dialog.
    GnuPG needs to construct a user ID to identify your key.
    Real name: Offensive Security Repository Signing Key
    Email address: repoadmin@offsec.com
    You selected this USER-ID:
    ”Offensive Security Repository Signing Key 
    Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    [...]
    gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb created
    gpg: key B4EF2D0D marked as ultimately trusted
    gpg: directory ’/home/pkgrepo/.gnupg/openpgp-revocs.d’ created
    275
    Chapter 10 — Kali Linux in the Enterprise


    gpg: revocation certificate stored as ’/home/pkgrepo/.gnupg/openpgp-revocs.d/
    å
    F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’
    public and secret key created and signed.
    gpg: checking the trustdb
    gpg: marginals needed: 3
    completes needed: 1
    trust model: PGP
    gpg: depth: 0
    valid:
    1
    signed:
    0
    trust: 0-, 0q, 0n, 0m, 0f, 1u
    pub
    rsa2048/B4EF2D0D 2020-06-17 [S]
    Key fingerprint = F8FE 22F7 4F1B 714E 38DA
    6181 B27F 74F7 B4EF 2D0D
    uid
    [ultimate] Offensive Security Repository Signing Key 
    sub
    rsa2048/38035F38 2020-06-17 []
    Note that when you are prompted for a passphrase, you should enter an empty value (and confirm
    that you don’t want to protect your private key) as you want to be able to sign the repository non-
    interactively. Note also that
    gpg
    requires write access to the terminal to be able to securely prompt
    for a passphrase: that is why you changed the ownership of the virtual terminal (which is owned
    by root since you initially connected as that user) before starting a shell as pkgrepo.
    Now you can start setting up the repository. A dedicated directory is necessary for
    reprepro
    and
    inside that directory you have to create a
    conf/distributions
    file documenting which distribu-
    tions are available in the package repository:
    pkgrepo@kali:~$ mkdir -p reprepro/conf
    pkgrepo@kali:~$ cd reprepro
    pkgrepo@kali:~/reprepro$ cat >conf/distributions <

    Download 11,68 Mb.
    1   ...   153   154   155   156   157   158   159   160   ...   174




    Download 11,68 Mb.
    Pdf ko'rish