]> nmode's Git Repositories - signal-cli/commitdiff
Set security options for the example signal-cli-socket systemd unit (#852)
authorOrazio <22700499+orazioedoardo@users.noreply.github.com>
Sun, 2 Jan 2022 19:37:41 +0000 (20:37 +0100)
committerGitHub <noreply@github.com>
Sun, 2 Jan 2022 19:37:41 +0000 (20:37 +0100)
* 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.

data/signal-cli-socket.service
data/signal-cli-socket.socket

index a6a2cfbcbe0e16eb7fb4e66cbb1ce4a51f3121a5..670f9c99917c88a33413fc38fb363f1cb06d41ef 100644 (file)
@@ -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
index e8583562ccff0d7827a66d6de025ec32b3f9e519..0207b059df66d6e4a05d6383ca0ed29f42633bce 100644 (file)
@@ -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