23. Other Server Software
在这里,您将找到许多与世界其他地方或本地网络共享您的机器的方法。在安装本章中的任何软件包之前,您需要确保您了解软件包的功能以及如何正确设置它。了解不正确设置的后果可能也会有所帮助,这样您就可以分析风险。
23.1 OpenLDAP-2.6.4
简介OpenLDAP
The OpenLDAP package provides an open source implementation of the Lightweight Directory Access Protocol.
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.6.4.tgz
-
下载 (FTP): ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.6.4.tgz
-
下载 MD5 校验和: fee2b0dca212b41c87976d0414f30f12
-
下载大小: 6.2 MB
-
预计所需磁盘空间: 58 MB (客户端和服务端)
-
预计构建时间: 0.4 SBU (客户端), 1.1 SBU (服务端)
额外下载
OpenLDAP 依赖
推荐
可选
GnuTLS-3.8.0, Pth-2.0.7, unixODBC-2.3.11, MariaDB-10.6.12 或 PostgreSQL-15.2 或 MySQL, OpenSLP, WiredTiger, 和 Berkeley DB-5.3.28 (slapd, 但被弃用了)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/openldap
安装OpenLDAP
注意
如果你只需要安装客户端ldap*二进制文件,相应的手册页,库和头文件(称为“仅客户端”安装),发出这些命令而不是下面的命令(没有可用的测试套件):
patch -Np1 -i ../openldap-2.6.4-consolidated-1.patch &&
autoconf &&
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static \
--enable-dynamic \
--enable-versioning=yes \
--disable-debug \
--disable-slapd &&
make depend &&
make
然后,作为root用户:
make install
应该有一个专用的用户和组来控制启动后的slapd守护进程。以root用户发出以下命令:
groupadd -g 83 ldap &&
useradd -c "OpenLDAP Daemon Owner" \
-d /var/lib/openldap -u 83 \
-g ldap -s /bin/false ldap
运行如下命令安装OpenLDAP:
patch -Np1 -i ../openldap-2.6.4-consolidated-1.patch &&
autoconf &&
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--libexecdir=/usr/lib \
--disable-static \
--enable-versioning=yes \
--disable-debug \
--with-tls=openssl \
--with-cyrus-sasl \
--without-systemd \
--enable-dynamic \
--enable-crypt \
--enable-spasswd \
--enable-slapd \
--enable-modules \
--enable-rlookups \
--enable-backends=mod \
--disable-sql \
--disable-wt \
--enable-overlays=mod &&
make depend &&
make
这些测试似乎很脆弱。错误可能导致测试在完成之前中止,显然是由于时间问题。测试大约需要65分钟,并且与处理器无关。要测试结果,执行: make test。
现在,作为root用户:
make install &&
sed -e "s/\.la/.so/" -i /etc/openldap/slapd.{conf,ldif}{,.default} &&
install -v -dm700 -o ldap -g ldap /var/lib/openldap &&
install -v -dm700 -o ldap -g ldap /etc/openldap/slapd.d &&
chmod -v 640 /etc/openldap/slapd.{conf,ldif} &&
chown -v root:ldap /etc/openldap/slapd.{conf,ldif} &&
install -v -dm755 /usr/share/doc/openldap-2.6.4 &&
cp -vfr doc/{drafts,rfc,guide} \
/usr/share/doc/openldap-2.6.4
命令解释
--disable-static: 此开关防止安装库的静态版本。
--disable-debug: 该开关关闭OpenLDAP中的调试代码。
--enable-dynamic: 此开关强制将OpenLDAP库动态链接到可执行程序。
--enable-versioning: 此开关启用OpenLDAP库中的符号版本控制。如果不这样做,某些应用程序可能会生成关于缺少符号版本的警告。
--enable-crypt: 此开关允许使用crypt(3)密码。
--enable-spasswd: 此开关启用SASL密码验证。
--enable-modules: 此开关启用动态模块支持。
--enable-rlookups: 此开关允许对客户端主机名进行反向查找。
--enable-backends: 此开关启用所有可用的后端。
--enable-overlays: 此开关启用所有可用的覆盖。
--disable-sql: 此开关显式禁用SQL后端。如果安装了SQL服务器并且打算使用SQL后端,则省略此开关。
--disable-wt: 此开关显式禁用WiredTiger后端。如果安装了WiredTiger,并且您将使用WiredTiger后端,则省略此开关。
--libexecdir=/usr/lib: 这个开关控制/usr/lib/openldap目录的安装位置。该目录中的所有内容都是一个库,因此它属于/usr/lib而不是/usr/libexec。
--enable-slp: 此开关启用SLPv2支持。如果您已经安装了OpenSLP,请使用它。
注意
你可以运行./configure –help查看是否有其他开关可以传递给configure命令来启用其他选项或依赖包。
install …, chown …, 和 chmod …: 将slapd配置文件和ldap数据库放在/var/lib/openldap中,任何人都可以读,这是一个安全问题,特别是因为文件以明文形式存储管理密码。这就是为什么使用模式640和root:ldap所有权的原因。所有者是root,因此只有root可以修改文件,组是ldap,因此拥有slapd守护进程的组可以读取但不能修改文件,以防出现安全漏洞。
配置 OpenLDAP
配置文件
-
LDAP客户端:
/etc/openldap/ldap.conf和~/.ldaprc -
对于LDAP服务器,有两种配置机制: 旧的
/etc/openldap/slapd.conf配置文件和推荐的slapd-config系统,使用存储在/etc/openldap/slapd.d中的LDIF数据库。
配置信息
配置slapd服务器可能很复杂。保护LDAP目录,特别是在存储非公共数据(如密码数据库)的情况下,也是一项具有挑战性的任务。为了设置OpenLDAP,您需要修改/etc/openldap/slapd.conf文件(旧方法),或者/etc/openldap/slapd.ldif文件,然后使用ldapadd**在/etc/openldap/slapd.d中创建LDAP配置数据库(OpenLDAP文档推荐)。
警告
上面的说明安装了一个空的LDAP结构和一个默认的/etc/openldap/slapd.conf文件,该文件适用于使用LDAP测试构建和其他包。不要在生产服务器上使用它们。
帮助您选择目录配置、后端和数据库定义、访问控制设置、以非root用户运行以及设置chroot环境等主题的资源包括:
-
slapd(8)手册页。
-
slapd.conf(5)和slapd-config(5)手册页。
-
OpenLDAP 2.6 Administrator’s Guide (也安装在本地
/usr/share/doc/openldap-2.6.4/guide/admin).
Systemd Unit
要在系统启动时自动启动LDAP服务器,请使用以下命令安装blfs-systemd-units-20220720包中包含的slapd.service单元:
make install-slapd
注意
您需要修改/etc/default/slapd以包含您的特定配置所需的参数。参见slapd手册页获取参数信息。
测试和配置
使用systemctl启动LDAP服务器:
systemctl start slapd
使用以下命令验证对LDAP服务器的访问权限:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
预期结果为:
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=my-domain,dc=com
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
内容
安装程序: ldapadd, ldapcompare, ldapdelete, ldapexop, ldapmodify, ldapmodrdn, ldappasswd, ldapsearch, ldapurl, ldapvc, ldapwhoami, slapacl, slapadd, slapauth, slapcat, slapd, slapdn, slapindex, slapmodify, slappasswd, slapschema, 和 slaptest
安装库: liblber.so, libldap.so, 还有几个在 /usr/lib/openldap 下
安装目录: /etc/openldap, /{usr,var}/lib/openldap, 和 /usr/share/doc/openldap-2.6.4
简要描述
ldapadd 打开到LDAP服务器的连接,绑定并添加条目。
ldapcompare 打开到LDAP服务器的连接,使用指定的参数绑定并执行比较。
ldapdelete 打开到LDAP服务器的连接,绑定和删除一个或多个条目。
ldapexop 发出由oid或特殊关键字whoami、cancel或refresh指定的LDAP扩展操作。
ldapmodify 打开到LDAP服务器的连接,绑定并修改条目。
ldapmodrdn 打开到LDAP服务器的连接,绑定并修改条目的RDN。
ldappasswd 是设置LDAP用户密码的工具。
ldapsearch 打开到LDAP服务器的连接,使用指定的参数绑定并执行搜索。
ldapurl 是一个允许组合或分解LDAP uri的命令。
ldapvc 验证LDAP凭据。
ldapwhoami 打开到LDAP服务器的连接,绑定并显示whoami信息。
slapacl 用于根据其配置中定义的访问控制列表指令验证对目录数据的访问,从而检查slapd的行为。
slapadd 用于向LDAP数据库中添加LDIF (LDAP Directory Interchange Format)指定的表项。
slapauth 用于检查slapd在映射身份以进行身份验证和授权时的行为,如slapd.conf中指定的那样。
slapcat 用于根据slapd数据库的内容生成LDAP LDIF输出。
slapd 是独立的LDAP服务器。
slapdn 根据模式语法检查字符串表示的DN列表。
slapindex 用于根据数据库的当前内容重新生成slapd索引。
slapmodify 修改slapd数据库中的条目。
slappasswd 是一个OpenLDAP密码实用程序。
slapschema 用于检查slapd数据库内容的模式遵从性。
slaptest 检查slapd.conf文件的完整性。
liblber.so 是一组轻量级基本编码规则例程。LDAP库例程使用这些例程来使用LDAP定义的(略微简化的)基本编码规则对LDAP协议元素进行编码和解码。LDAP应用程序通常不直接使用它们,除非在处理控件和扩展操作时使用。
libldap.so 支持LDAP程序,并为与LDAP交互的其他程序提供功能。
23.2 Unbound-1.17.1
简介Unbound
Unbound是一个验证、递归和缓存的DNS解析器。它被设计为一组模块化组件,其中包含现代功能,如增强安全性(DNSSEC)验证、互联网协议版本6 (IPv6)和作为体系结构组成部分的客户端解析器库API。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://nlnetlabs.nl/downloads/unbound/unbound-1.17.1.tar.gz
-
下载 MD5 校验和: bb96df2dc579c11ada537dbc52781abc
-
下载大小: 6.0 MB
-
预计所需磁盘空间: 141 MB (文档;添加10 MB用于测试)
-
预计构建时间: 0.5 SBU (使用并行数=4;文档;添加0.4 SBU用于测试)
Unbound 依赖
可选
libevent-2.1.12, Nettle-3.8.1, Python-2.7.18, sphinx-6.1.3 (查看Python绑定文档), SWIG-4.1.1 (用于Python绑定), Doxygen-1.9.6 (HTML文档), 和 dnstap
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/unbound
安装Unbound
应该有一个专用的用户和组来控制启动后的unbound守护进程。以root用户发出以下命令:
groupadd -g 88 unbound &&
useradd -c "Unbound DNS Resolver" -d /var/lib/unbound -u 88 \
-g unbound -s /bin/false unbound
运行如下命令安装Unbound:
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static \
--with-pidfile=/run/unbound.pid &&
make
如果你已经安装了Doxygen-1.9.6包,并且想要构建html文档,运行以下命令:
make doc
要测试结果,请执行: make check.
现在,作为root用户:
make install &&
mv -v /usr/sbin/unbound-host /usr/bin/
如果你构建了文档,以root用户运行以下命令来安装它:
install -v -m755 -d /usr/share/doc/unbound-1.17.1 &&
install -v -m644 doc/html/* /usr/share/doc/unbound-1.17.1
命令解释
--disable-static: 此开关防止安装库的静态版本。
--with-libevent: 此选项启用libevent支持,允许使用较大的输出端口范围。
--with-pyunbound: 此选项允许构建Python绑定。
配置 Unbound
配置文件
/etc/unbound/unbound.conf
配置信息
在默认配置中,unbound将绑定到localhost (127.0.0.1 IP地址),并且只允许来自localhost客户端的递归查询。如果要使用unbound进行本地DNS解析,请以root用户执行如下命令:
echo "nameserver 127.0.0.1" > /etc/resolv.conf
如果你使用DHCP客户端连接到网络,/etc/resolv.conf会被DHCP服务器提供的值覆盖。你可以覆盖这个,例如在DHCP-4.4.3-P1中,以root用户运行以下命令:
sed -i '/request /i\supersede domain-name-servers 127.0.0.1;' \
/etc/dhcp/dhclient.conf
有关高级配置,请参阅/etc/unbound/unbound.conf文件和文档。
当Unbound安装时,如果没有找到文件/etc/unbound/root.key,一些包构建失败。以root用户运行以下命令创建该文件:
unbound-anchor
Systemd Unit
如果您希望Unbound服务器在系统启动时自动启动,安装blfs-systemd-units-20220720包中包含的unbound.service单元:
make install-unbound
内容
安装程序: unbound, unbound-anchor, unbound-checkconf, unbound-control, unbound-control-setup, 和 unbound-host
安装库: libunbound.so 和 (可选) /usr/lib/python2.7/site-packages/_unbound.so
安装目录: /etc/unbound 和 /usr/share/doc/unbound-1.17.1 (可选)
简要描述
unbound 是一个DNS解析程序守护进程。
unbound-anchor 为DNSSEC验证执行根信任锚的设置或更新。
unbound-checkconf 检查unbound配置文件的语法和其他错误。
unbound-control 对unbound DNS解析器执行远程管理。
unbound-control-setup 为服务器和客户端生成自签名证书和私钥。
unbound-host 是一个DNS查找工具,类似于BIND Utilities-9.18.12中的host。
libunbound.so 为程序提供Unbound API函数。