Skip to content

Commit

Permalink
Set security options for the example signal-cli-socket systemd unit (#…
Browse files Browse the repository at this point in the history
…852)

* Restrict socket access to root and users in the signal-cli group

* Sandbox signal-cli-socket service using systemd features

* Add RemoveIPC too.

* Restore original placeholder for ExecStart path.
  • Loading branch information
orazioedoardo authored Jan 2, 2022
1 parent 69ea12b commit 9af3e2c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
32 changes: 30 additions & 2 deletions data/signal-cli-socket.service
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,43 @@ After=network-online.target
Requires=signal-cli-socket.socket

[Service]
Type=simple
CapabilityBoundingSet=
Environment="SIGNAL_CLI_OPTS=-Xms2m"
# Update 'ReadWritePaths' if you change the config path here
ExecStart=%dir%/bin/signal-cli --config /var/lib/signal-cli daemon
User=signal-cli
LockPersonality=true
NoNewPrivileges=true
PrivateDevices=true
PrivateIPC=true
PrivateTmp=true
PrivateUsers=true
ProcSubset=pid
ProtectClock=true
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ProtectSystem=strict
# Profile pictures and attachments to upload must be located here for the service to access them
ReadWritePaths=/var/lib/signal-cli
RemoveIPC=true
RestrictAddressFamilies=AF_INET AF_INET6
RestrictNamespaces=true
RestrictRealtime=true
RestrictSUIDSGID=true
# JVM always exits with 143 in reaction to SIGTERM signal
SuccessExitStatus=143
StandardInput=socket
StandardOutput=journal
StandardError=journal
SystemCallArchitectures=native
SystemCallFilter=~@debug @mount @obsolete @privileged @resources
UMask=0077
# Create the user and home directory with 'useradd -r -U -s /usr/sbin/nologin -m -b /var/lib signal-cli'
User=signal-cli

[Install]
Also=signal-cli-socket.socket
Expand Down
5 changes: 5 additions & 0 deletions data/signal-cli-socket.socket
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ Description=Send secure messages to Signal clients

[Socket]
ListenStream=%t/signal-cli/socket
SocketUser=root
# Add yourself to the signal-cli group to talk with the service
# Run 'usermod -aG signal-cli yourusername'
SocketGroup=signal-cli
SocketMode=0660

[Install]
WantedBy=sockets.target

0 comments on commit 9af3e2c

Please sign in to comment.