
Linux系统中,systemd 是关键服务的核心管理工具。随着安全意识的提高,仅仅运行服务已经不够,我们还需要对它们进行隔离和限制,防止因某个服务被攻破而影响整个系统。给systemd服务配置沙盒机制,是增强安全性的有效手段之一。

下面我们就来看看如何通过 systemd 提供的功能来实现服务沙盒化。
PrivateNetwork 和 PrivateUsers 隔离网络与用户这两个选项可以为服务创建一个独立的网络命名空间和用户命名空间,从而限制其访问权限。

注意:启用这些功能可能会影响服务的行为,比如某些需要真实网络连接的服务会失效,需要配合 IPAddressAllow= 等选项做细粒度控制。
RestrictAddressFamilies 限制通信协议有些服务本来只需要使用 IPv4 或者本地 Unix 套接字,但默认情况下它们可能会尝试使用其他协议,比如 IPv6、蓝牙等。这不仅多余,也可能带来潜在风险。

使用:
RestrictAddressFamilies=AF_UNIX AF_INET
上面的例子表示只允许服务使用本地套接字和 IPv4 地址通信,其他协议都会被禁止。
这种限制能有效防止服务试图建立非预期的网络连接,尤其是在暴露在公网的服务器上非常实用。
你可以通过设置 ReadOnlyPaths 和 InaccessiblePaths 来限制服务对文件系统的访问。
例如,对于一个只需要读取配置的 Web 服务来说,完全没必要让它访问 /home 目录。
此外,还可以结合 MountFlags=slave 或 MountFlags=private 来控制挂载传播行为,避免服务改变挂载点结构。
虽然 systemd 提供了很多内建的安全限制,但如果你想要更强大的防护能力,可以结合 Linux 安全模块如 AppArmor 或 SELinux。
例如,在 AppArmor 中你可以为某个服务编写如下策略:
/usr/bin/my-service {
/etc/my-service/** r,
/var/log/my-service.log w,
}这样该服务就只能读取配置文件,并写入日志文件,其他操作都会被阻止。
systemd-analyze security 检查服务安全性评分systemd 自带了一个小工具可以帮助你快速评估服务的安全性:
systemd-analyze security sshd.service
它会给出一个安全评分(0~100),并列出哪些项目可以改进。这对于排查遗漏项非常有用。
基本上就这些。合理使用 systemd 提供的安全特性,可以在不引入复杂容器环境的前提下,大幅提升服务的安全性。配置时注意逐步测试,避免因权限限制导致服务无法正常启动。
以上就是如何保护Linux关键服务 systemd服务沙盒配置的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号