vigil icon indicating copy to clipboard operation
vigil copied to clipboard

Harden vigil.service

Open williamdes opened this issue 1 year ago β€’ 3 comments

See: systemd-analyze security vigil

I wonder if I shoud add EnvironmentFile=/etc/vigil/.env as a comment

williamdes avatar Jul 19 '24 11:07 williamdes

  NAME                                                        DESCRIPTION                                                               EXPOSURE
βœ“ SystemCallFilter=~@swap                                     System call deny list defined for service, and @swap is included                  
βœ“ SystemCallFilter=~@resources                                System call deny list defined for service, and @resources is included             
βœ“ SystemCallFilter=~@reboot                                   System call deny list defined for service, and @reboot is included                
βœ“ SystemCallFilter=~@raw-io                                   System call deny list defined for service, and @raw-io is included                
βœ“ SystemCallFilter=~@privileged                               System call deny list defined for service, and @privileged is included            
βœ“ SystemCallFilter=~@obsolete                                 System call deny list defined for service, and @obsolete is included              
βœ“ SystemCallFilter=~@mount                                    System call deny list defined for service, and @mount is included                 
βœ“ SystemCallFilter=~@module                                   System call deny list defined for service, and @module is included                
βœ“ SystemCallFilter=~@debug                                    System call deny list defined for service, and @debug is included                 
βœ“ SystemCallFilter=~@cpu-emulation                            System call deny list defined for service, and @cpu-emulation is included         
βœ“ SystemCallFilter=~@clock                                    System call deny list defined for service, and @clock is included                 
βœ“ RemoveIPC=                                                  Service user cannot leave SysV IPC objects around                                 
βœ— RootDirectory=/RootImage=                                   Service runs within the host's root directory                                  0.1
βœ“ User=/DynamicUser=                                          Service runs under a static non-root user identity                                
βœ“ RestrictRealtime=                                           Service realtime scheduling access is restricted                                  
βœ“ CapabilityBoundingSet=~CAP_SYS_TIME                         Service processes cannot change the system clock                                  
βœ“ NoNewPrivileges=                                            Service processes cannot acquire new privileges                                   
βœ— AmbientCapabilities=                                        Service process receives ambient capabilities                                  0.1
βœ“ CapabilityBoundingSet=~CAP_BPF                              Service may load BPF programs                                                     
βœ“ SystemCallArchitectures=                                    Service may execute system calls only with native ABI                             
βœ— RestrictAddressFamilies=~AF_(INET|INET6)                    Service may allocate Internet sockets                                          0.3
βœ“ ProtectSystem=                                              Service has strict read-only access to the OS file hierarchy                      
βœ“ ProtectProc=                                                Service has restricted access to process tree (/proc hidepid=)                    
βœ“ SupplementaryGroups=                                        Service has no supplementary groups                                               
βœ“ CapabilityBoundingSet=~CAP_SYS_RAWIO                        Service has no raw I/O access                                                     
βœ“ CapabilityBoundingSet=~CAP_SYS_PTRACE                       Service has no ptrace() debugging abilities                                       
βœ“ CapabilityBoundingSet=~CAP_SYS_(NICE|RESOURCE)              Service has no privileges to change resource use parameters                       
βœ“ CapabilityBoundingSet=~CAP_NET_ADMIN                        Service has no network configuration privileges                                   
βœ“ CapabilityBoundingSet=~CAP_AUDIT_*                          Service has no audit subsystem access                                             
βœ“ CapabilityBoundingSet=~CAP_SYS_ADMIN                        Service has no administrator privileges                                           
βœ“ PrivateTmp=                                                 Service has no access to other software's temporary files                         
βœ“ ProcSubset=                                                 Service has no access to non-process /proc files (/proc subset=)                  
βœ“ CapabilityBoundingSet=~CAP_SYSLOG                           Service has no access to kernel logging                                           
βœ“ ProtectHome=                                                Service has no access to home directories                                         
βœ“ PrivateDevices=                                             Service has no access to hardware devices                                         
βœ— CapabilityBoundingSet=~CAP_NET_(BIND_SERVICE|BROADCAST|RAW) Service has elevated networking privileges                                     0.1
βœ— PrivateNetwork=                                             Service has access to the host's network                                       0.5
βœ— PrivateUsers=                                               Service has access to other users                                              0.2
βœ— DeviceAllow=                                                Service has a device ACL with some special devices: char-rtc:r                 0.1
βœ“ KeyringMode=                                                Service doesn't share key material with other services                            
βœ“ Delegate=                                                   Service does not maintain its own delegated control group subtree                 
βœ— IPAddressDeny=                                              Service does not define an IP address allow list                               0.2
βœ“ NotifyAccess=                                               Service child processes cannot alter service state                                
βœ“ ProtectClock=                                               Service cannot write to the hardware clock or system clock                        
βœ“ CapabilityBoundingSet=~CAP_SYS_PACCT                        Service cannot use acct()                                                         
βœ“ CapabilityBoundingSet=~CAP_KILL                             Service cannot send UNIX signals to arbitrary processes                           
βœ“ ProtectKernelLogs=                                          Service cannot read from or write to the kernel log ring buffer                   
βœ“ CapabilityBoundingSet=~CAP_WAKE_ALARM                       Service cannot program timers that wake up the system                             
βœ“ CapabilityBoundingSet=~CAP_(DAC_*|FOWNER|IPC_OWNER)         Service cannot override UNIX file/IPC permission checks                           
βœ“ ProtectControlGroups=                                       Service cannot modify the control group file system                               
βœ“ CapabilityBoundingSet=~CAP_LINUX_IMMUTABLE                  Service cannot mark files immutable                                               
βœ“ CapabilityBoundingSet=~CAP_IPC_LOCK                         Service cannot lock memory into RAM                                               
βœ“ ProtectKernelModules=                                       Service cannot load or read kernel modules                                        
βœ“ CapabilityBoundingSet=~CAP_SYS_MODULE                       Service cannot load kernel modules                                                
βœ“ CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG                   Service cannot issue vhangup()                                                    
βœ“ CapabilityBoundingSet=~CAP_SYS_BOOT                         Service cannot issue reboot()                                                     
βœ“ CapabilityBoundingSet=~CAP_SYS_CHROOT                       Service cannot issue chroot()                                                     
βœ“ PrivateMounts=                                              Service cannot install system mounts                                              
βœ“ CapabilityBoundingSet=~CAP_BLOCK_SUSPEND                    Service cannot establish wake locks                                               
βœ“ MemoryDenyWriteExecute=                                     Service cannot create writable executable memory mappings                         
βœ“ RestrictNamespaces=~user                                    Service cannot create user namespaces                                             
βœ“ RestrictNamespaces=~pid                                     Service cannot create process namespaces                                          
βœ“ RestrictNamespaces=~net                                     Service cannot create network namespaces                                          
βœ“ RestrictNamespaces=~uts                                     Service cannot create hostname namespaces                                         
βœ“ RestrictNamespaces=~mnt                                     Service cannot create file system namespaces                                      
βœ“ CapabilityBoundingSet=~CAP_LEASE                            Service cannot create file leases                                                 
βœ“ CapabilityBoundingSet=~CAP_MKNOD                            Service cannot create device nodes                                                
βœ“ RestrictNamespaces=~cgroup                                  Service cannot create cgroup namespaces                                           
βœ“ RestrictNamespaces=~ipc                                     Service cannot create IPC namespaces                                              
βœ“ ProtectHostname=                                            Service cannot change system host/domainname                                      
βœ“ CapabilityBoundingSet=~CAP_(CHOWN|FSETID|SETFCAP)           Service cannot change file ownership/access mode/capabilities                     
βœ“ CapabilityBoundingSet=~CAP_SET(UID|GID|PCAP)                Service cannot change UID/GID identities/capabilities                             
βœ“ LockPersonality=                                            Service cannot change ABI personality                                             
βœ“ ProtectKernelTunables=                                      Service cannot alter kernel tunables (/proc/sys, …)                               
βœ“ RestrictAddressFamilies=~AF_PACKET                          Service cannot allocate packet sockets                                            
βœ“ RestrictAddressFamilies=~AF_NETLINK                         Service cannot allocate netlink sockets                                           
βœ“ RestrictAddressFamilies=~AF_UNIX                            Service cannot allocate local sockets                                             
βœ“ RestrictAddressFamilies=~…                                  Service cannot allocate exotic sockets                                            
βœ“ CapabilityBoundingSet=~CAP_MAC_*                            Service cannot adjust SMACK MAC                                                   
βœ“ RestrictSUIDSGID=                                           SUID/SGID file creation by service is restricted                                  
βœ— UMask=                                                      Files created by service are world-readable by default                         0.1

β†’ Overall exposure level for vigil.service: 1.4 OK πŸ™‚

williamdes avatar Jul 19 '24 11:07 williamdes

What do you think about this one @valeriansaliou?

williamdes avatar Aug 09 '24 16:08 williamdes

I unfortunately won’t have much time to process this over the coming days but it looks good, thanks! Really busy on other projects atm. πŸ₯²

valeriansaliou avatar Aug 10 '24 05:08 valeriansaliou

Hello @valeriansaliou Can you process this PR ? It has been working fine since months on my server, maybe try it out on yours ?

williamdes avatar Nov 12 '24 12:11 williamdes

Hello @valeriansaliou is there something I can do to help you test this?

williamdes avatar Jan 06 '25 19:01 williamdes

I believe this would complexify the example systemd service. Users can harden the existing example at their will, but starting point examples should be simple IMHO, otherwise no one will use them.

valeriansaliou avatar Jan 06 '25 20:01 valeriansaliou

Okay, is there a place where I can put this a documentation example ? It was a lot of work, I would like that users benefit from it

williamdes avatar Jan 06 '25 21:01 williamdes

This PR serves as the example :)

valeriansaliou avatar Jan 06 '25 21:01 valeriansaliou

Perfect, I can close it then ;) The hardening works perfectly since then.

williamdes avatar Jan 06 '25 21:01 williamdes