OnWorks Linux 和 Windows 在线工作站

商标

工作站免费在线托管

<上一页 | 内容 | 下一页>

10.3.3. 为 APT 创建包存储库


现在您有了一个自定义包,您可以通过 APT 包存储库分发它。 用 惩戒 创建所需的存储库并填充它。 这个工具相当强大,它的手册页当然值得一读。

包存储库通常托管在服务器上。 要将其与服务器上运行的其他服务正确分开,最好创建一个专用于此服务的用户。 在专用用户帐户中,您将能够托管存储库文件以及将用于对包存储库进行签名的 GnuPG 密钥:


# apt安装reprepro gnupg

[...]

# 添加用户 --system --group pkgrepo

添加系统用户 'pkgrepo' (UID 136) ... 添加新组 'pkgrepo' (GID 142) ...

使用组“pkgrepo”添加新用户“pkgrepo”(UID 136)……创建主目录“/home/pkgrepo”……

# chown pkgrepo $(tty)

# su - -s /bin/bash pkgrepo

$ gpg --gen-key

gpg (GnuPG) 2.1.11; 版权所有 (C) 2016 Free Software Foundation, Inc。这是免费软件:您可以自由更改和重新分发它。

在法律允许的范围内,不提供任何保证。


gpg: 目录 '/home/pkgrepo/.gnupg' 创建

gpg:新配置文件“/home/pkgrepo/.gnupg/dirmngr.conf”创建 gpg:新配置文件“/home/pkgrepo/.gnupg/gpg.conf”创建 gpg:密钥箱“/home/pkgrepo/.gnupg/” pubring.kbx' 已创建

注意:使用“gpg --full-gen-key”获取全功能密钥生成对话框。 GnuPG 需要构造一个用户 ID 来标识您的密钥。

真正的名字: 攻击性安全存储库签名密钥

电子邮件地址: [电子邮件保护]

您选择了此用户 ID:

”进攻性安全存储库签名密钥[电子邮件保护]>”

# apt安装reprepro gnupg

[...]

# 添加用户 --system --group pkgrepo

添加系统用户 'pkgrepo' (UID 136) ... 添加新组 'pkgrepo' (GID 142) ...

使用组“pkgrepo”添加新用户“pkgrepo”(UID 136)……创建主目录“/home/pkgrepo”……

# chown pkgrepo $(tty)

# su - -s /bin/bash pkgrepo

$ gpg --gen-key

gpg (GnuPG) 2.1.11; 版权所有 (C) 2016 Free Software Foundation, Inc。这是免费软件:您可以自由更改和重新分发它。

在法律允许的范围内,不提供任何保证。


gpg: 目录 '/home/pkgrepo/.gnupg' 创建

gpg:新配置文件“/home/pkgrepo/.gnupg/dirmngr.conf”创建 gpg:新配置文件“/home/pkgrepo/.gnupg/gpg.conf”创建 gpg:密钥箱“/home/pkgrepo/.gnupg/” pubring.kbx' 已创建

注意:使用“gpg --full-gen-key”获取全功能密钥生成对话框。 GnuPG 需要构造一个用户 ID 来标识您的密钥。

真正的名字: 攻击性安全存储库签名密钥

电子邮件地址: [电子邮件保护]

您选择了此用户 ID:

”进攻性安全存储库签名密钥[电子邮件保护]>”


更改 (N)ame、(E)mail 或 (O)kay/(Q)uit? o

我们需要生成很多随机字节。 在素数生成期间执行一些其他操作(在键盘上键入、移动鼠标​​、使用磁盘)是个好主意; 这使随机数生成器有更好的机会获得足够的熵。

[...]

gpg:/home/pkgrepo/.gnupg/trustdb.gpg:trustdb 创建 gpg:标记为最终受信任的密钥 B4EF2D0D

gpg: 目录 '/home/pkgrepo/.gnupg/openpgp-revocs.d' 创建

gpg:吊销证书存储为 '/home/pkgrepo/.gnupg/openpgp-revocs.d/

F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’

创建并签名的公钥和私钥。


gpg:检查信任数据库

gpg:需要的边际:需要 3 个完成:1 个信任模型:PGP

gpg:深度:0 有效:1 签名:0 信任:0-、0q、0n、0m、0f、1u pub rsa2048/B4EF2D0D 2016-06-17 [S]

密钥指纹 = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D

uid [终极] 进攻性安全存储库签名密钥[电子邮件保护]> 子 rsa2048/38035F38 2016-06-17 []

更改 (N)ame、(E)mail 或 (O)kay/(Q)uit? o

我们需要生成很多随机字节。 在素数生成期间执行一些其他操作(在键盘上键入、移动鼠标​​、使用磁盘)是个好主意; 这使随机数生成器有更好的机会获得足够的熵。

[...]

gpg:/home/pkgrepo/.gnupg/trustdb.gpg:trustdb 创建 gpg:标记为最终受信任的密钥 B4EF2D0D

gpg: 目录 '/home/pkgrepo/.gnupg/openpgp-revocs.d' 创建

gpg:吊销证书存储为 '/home/pkgrepo/.gnupg/openpgp-revocs.d/

F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’

创建并签名的公钥和私钥。


gpg:检查信任数据库

gpg:需要的边际:需要 3 个完成:1 个信任模型:PGP

gpg:深度:0 有效:1 签名:0 信任:0-、0q、0n、0m、0f、1u pub rsa2048/B4EF2D0D 2016-06-17 [S]

密钥指纹 = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D

uid [终极] 进攻性安全存储库签名密钥[电子邮件保护]> 子 rsa2048/38035F38 2016-06-17 []


请注意,当系统提示您输入密码时,您应该输入一个空值(并确认您不想保护您的私钥),因为您希望能够以非交互方式对存储库进行签名。 还要注意的是 GPG 需要对终端的写访问权限才能安全地提示输入密码:这就是为什么您在启动 shell 之前更改了虚拟终端的所有权(自从您最初以该用户身份连接以来,它由 root 拥有) PKGrepo.

现在您可以开始设置存储库。 需要专门的目录 惩戒 在该目录中,您必须创建一个 配置/分布 文件记录了包存储库中可用的发行版:


$ mkdir -p reprepro/conf

$ 光盘重播

$ 猫 > conf/分布 <

起源:进攻性安全

说明:Offsec 的内部包架构:源 amd64 i386 组件:主要

SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END

$ mkdir -p reprepro/conf

$ 光盘重播

$ 猫 > conf/分布 <

起源:进攻性安全

说明:Offsec 的内部包架构:源 amd64 i386 组件:主要

SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END


必填字段是 代码名称,给出分布的名称, 架构,这表明哪些架构将在发行版中可用(并在输入端接受),以及 组件,表示发行版中可用的各种组件(com-

组件是分发的一种子部分,可以在 APT 的 sources.list 中单独启用)。 这 起源 描述 字段仅提供信息,它们按原样复制到 发布 文件。 的 签到 场问 惩戒 使用列出了标识符的 GnuPG 密钥签署存储库(将完整指纹放在这里以确保您使用正确的密钥,而不是另一个与短标识符冲突的密钥)。 这 也接受 设置不是必需的,但可以处理 。变化 其分布字段具有此处列出的值的文件(没有此值,它将只接受该字段中的分布代号)。

有了这个基本设置,你可以让 惩戒 生成一个空的存储库:


$ 代表出口

导出索引...

$ 找 。

.

。/D b

./db/版本

./db/references.db

./db/contents.cache.db

./db/校验和.db

./db/packages.db

./db/release.caches.db

./conf

./conf/分布

./分布

./dists/offsec-内部

./dists/offsec-internal/Release.gpg

./dists/offsec-internal/发布

./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/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

$ 代表出口

导出索引...

$ 找 。

.

。/D b

./db/版本

./db/references.db

./db/contents.cache.db

./db/校验和.db

./db/packages.db

./db/release.caches.db

./conf

./conf/分布

./分布

./dists/offsec-内部

./dists/offsec-internal/Release.gpg

./dists/offsec-internal/发布

./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/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


正如你可以看到, 惩戒 在一个中创建存储库元信息 分区 子目录。 它还初始化了一个内部数据库 db 子目录。

现在是添加您的第一个包的时候了。 首先,复制构建生成的文件 offsec- 默认值 包装offsec-defaults_1.0.dsc, offsec-defaults_1.0.tar.xz,

offsec-defaults_1.0_all.deb 和 offsec-defaults_1.0_amd64.changes) 到 /tmp

在托管包存储库的服务器上并询问 惩戒 包括包:


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

导出索引...

$ 查找池 池池/主池/主/o

池/主/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 包括 offsec-internal /tmp/offsec-defaults_1.0_amd64.changes

导出索引...

$ 查找池 池池/主池/主/o

池/主/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


如您所见,它将文件添加到自己的包池中 子目录。

这个 分区 目录是您需要通过 HTTP(公开)可用以完成 APT 存储库设置的两个目录。 它们包含 APT 想要下载的所有文件。

假设您想在名为的虚拟主机上托管它 pkgrepo.offsec.com,你可以创建如下的Apache配置文件,保存到 /etc/apache2/sites-available/pkgrepo.conf offsec.com.conf,并启用它 a2ensite pkgrepo.offsec.com):


服务器名称 pkgrepo.offsec.com ServerAdmin [电子邮件保护]


错误日志 /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

选项索引 FollowSymLinks MultiViews 要求所有授予

全部设置AllowOverride

服务器名称 pkgrepo.offsec.com ServerAdmin [电子邮件保护]


错误日志 /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

选项索引 FollowSymLinks MultiViews 要求所有授予

全部设置AllowOverride


以及相应的 sources.list文件 在需要来自该存储库的包的机器上添加的条目如下所示:


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


# 如果您也想访问源包,请启用下一行

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

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


# 如果您也想访问源包,请启用下一行

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


您的软件包现已发布,应该可供您的联网主机使用。

虽然这是一个漫长的设置,但现在已经完成了“繁重的工作”。 您可以通过 PXE 启动联网机器,借助网络提供的预种子安装定制版本的 Kali Linux,无需交互,配置 SaltStack 以管理您的配置(并控制 Minion!),创建分叉的自定义包,并通过您的系统分发这些包。自己的软件包存储库。 这提供了对多个 Kali Linux 安装的集中管理和企业级控制。 简而言之,由于 Kali 对所有软件包更新的(半自动)安装,您现在可以快速部署为您的特定需求预先配置的高度安全的 Kali 系统并保持它们同步。


OnWorks 的顶级操作系统云计算: