Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:capabilities

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:capabilities [2019/06/18 14:41] – [Doku] ingo_wichmannadmin_grundlagen:capabilities [2026/10/08 12:29] (aktuell) – ingo_wichmann
Zeile 1: Zeile 1:
 +Statt einem Programm über das SETUID-Bit **alle** Systemrechte zu geben, ist es sinnvoller, nur die Fähigkeiten (capabilities) zu geben, die das Programm zur Erfüllung seines Zwecks benötigt. Das setzt allerdings die Unterstützung des Kernels voraus, welches bestimmte Capabilities bereitstellt, die dann den Programmen gegeben werden können. 
 +
 +Mittels ''man capabilities'' kann man die vom verwendeten Kernel angebotenen Capabilities auflisten.
 +
 +====== Backup ohne root: rsync soll alle Dateien lesen dürfen ======
 +===== remote =====
 +  cp /usr/bin/rsync /usr/local/bin/rsync-ro
 +  setcap cap_dac_read_search+ep /usr/local/bin/rsync-ro
 +
 +===== local =====
 +  rsync --rsync-path=/usr/local/bin/rsync-ro nutzer42@remote:/etc/shadow .
 +
 +
 +
 ====== ping mit capability statt suid-Bit ====== ====== ping mit capability statt suid-Bit ======
-  chmod u-s /bin/ping + 
-  setcap cap_net_raw+p /bin/ping + 
-  getcap /bin/ping+  cat /usr/bin/ping > PING 
 +  ./PING 9.9.9.9 
 +als root 
 +  setcap cap_net_raw=p ./PING 
 +  getcap ./PING 
 +als user 
 +  ./PING 9.9.9.9 
 + 
 +Unter Debian nicht update-fest: 
 +  * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=662845|Debian Bug 662845]] 
 +  * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502580|Debian Bug 502580]] 
 + 
 + 
 +Moderne Kernel :?: (oder eine andere black magick) erlauben ''ping'' auch ohne Capabilities. 
 +  sysctl -a | grep ping 
 + 
 +  setcap cap_net_raw,cap_net_admin=pe /usr/sbin/tcpdump 
 + 
 +Danach kann jeder User tcpdump benutzen 
  
 ====== einer (root) shell eine Capability entziehen ====== ====== einer (root) shell eine Capability entziehen ======
-  capsh --drop=cap_chown --+''capsh'' startet eine neue Shell mit veränderten Capabilities. 
 + 
 +  capsh --drop=cap_chown,cap_net_raw --
   chown kurt /etc/passwd   chown kurt /etc/passwd
 +  ping 9.9.9.9
  
 ====== Welcher Prozess hat welche Capabilities? ====== ====== Welcher Prozess hat welche Capabilities? ======
-Pakete: libcap-ng-utils (Debian, Ubuntu)+Pakete: libcap-ng-utils 
   pscap   pscap
 +  getpcap <pid>
 +  
 +== low level ==
 +  grep ^Cap /proc/<pid>/status
 +  
 +  CapInh: 0000000000000000
 +  CapPrm: 000001ffffffdffe
 +  CapEff: 000001ffffffdffe
 +  CapBnd: 000001ffffffdffe
 +  CapAmb: 0000000000000000
 +  
 +  capsh --decode=000001ffffffdffe
  
 +===== rsync read only =====
 +zu sichernder Server:
 +
 +  apt install rsync acl libcap2-bin
 +  useradd -r -d /srv/rosync -s /usr/bin/sh rosync
 +  install -d -o rosync -g rosync -m 700 /srv/rosync/.ssh
 +  install -o rosync -g rosync -m 600 /dev/null /srv rosync/.ssh/authorized_keys
 +
 +  cp /usr/bin/rsync /usr/local/sbin/rsync-for-backup
 +  chown root:root /usr/local/sbin/rsync-for-backup
 +  chmod 700 /usr/local/sbin/rsync-for-backup
 +  setfacl -m user:rosync:rx /usr/local/sbin/rsync-for-backup
 +  setcap cap_dac_read_search+ep /usr/local/sbin/rsync-for-backup
 +
 +
 +TODO: include rrsync?
 +
 +pull initierender Server:
 +  apt install rsync
 +  ssh-keygen -N '' -f .ssh/id_ed25519_rosync -C 'rosync backup'
 +  ssh root@otherserver 'cat > /srv/rosync/.ssh/authorized_keys' < .ssh/id_ed25519_rosync.pub
 +  rsync -ax -e 'ssh -i  .ssh/id_ed25519_rosync' --rsync-path=/usr/local/sbin/rsync-for-backup rosync@192.168.122.74:/ backup
 +
 +Was nicht gehen sollte:
 +  rsync -ax -e 'ssh -i  .ssh/id_ed25519_rosync' --rsync-path=/usr/local/sbin/rsync-for-backup /etc/passwd rosync@192.168.122.74:/srv
 +
 +==== systemd + caps ====
 +  systemctl show <unit> | grep -i cap
 ====== Doku ====== ====== Doku ======
   * http://www.admin-magazin.de/Das-Heft/2009/03/Rechte-ueber-File-Capabilities-einschraenken   * http://www.admin-magazin.de/Das-Heft/2009/03/Rechte-ueber-File-Capabilities-einschraenken
   * [[http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/capability.h|Liste der Capabilities im Kernel]]   * [[http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/capability.h|Liste der Capabilities im Kernel]]
- 
-Problem: 
- 
-Unter Debian nicht update-fest: 
-  * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=662845|Debian Bug 662845]] 
-  * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502580|Debian Bug 502580]] 
  
  
-Unter OpenSuSE nicht update-fest: 
-  * [[https://features.opensuse.org/307254|Opensuse Bug 307254]] 
admin_grundlagen/capabilities.1560868901.txt.gz · Zuletzt geändert: 2019/06/18 14:41 von ingo_wichmann