小编Mac*_*fli的帖子

systemd 的网络绑定功能

我正在部署Goldfish,它是Vault 的一个接口,在专用于机密管理的服务器上进行生产。因此,安全是这里的首要问题。

我正在尝试在 Unbuntu 16.04 系统上使用 systemd 部署服务,为其提供尽可能少的权限。我希望它以非 root 用户身份运行goldfish并侦听端口 443。我尝试了多种选择。


解决方法1:使用systemd插座,在多个帖子建议我发现如这一个(金鱼后端写在去,因为在后)。这似乎是最精确和最安全的,因为它完全由 systemd 管理并为单个服务打开一个端口。我的单元文件如下所示:

  • /etc/systemd/system/goldfish.socket

    [Unit]
    Description=a Vault interface
    
    [Socket]
    ListenStream=443
    NoDelay=true  # Tried with false as well
    
    Run Code Online (Sandbox Code Playgroud)
  • /etc/systemd/system/goldfish.service

    [Unit]
    Description=a Vault interface
    After=vault.service
    Requires=goldfish.socket
    ConditionFileNotEmpty=/etc/goldfish.hcl
    
    [Service]
    User=goldfish
    Group=goldfish
    ExecStart=/usr/local/bin/goldfish -config=/etc/goldfish.hcl
    NonBlocking=true  # Tried with false as well
    
    [Install]
    WantedBy=multi-user.target
    
    Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到一个“listen tcp 0.0.0.0:443: bind: permission denied”。所以看起来它仍然没有得到想要的权限,这似乎违背了为服务创建套接字的目的。我在这里缺少什么?


解决方案 2:为服务提供 CAP_NET_BIND_SERVICE 能力。这次我没有使用 systemd 套接字,而是使用AmbientCapabilities服务中的设置(也尝试使用CpabilityBoudingSetCapabilities,后者令人惊讶地未在 …

networking security systemd vault

6
推荐指数
1
解决办法
8808
查看次数

标签 统计

networking ×1

security ×1

systemd ×1

vault ×1