Linux capabilities

Linux Capabilities is een functionaliteit waarbij gebruikers bepaalde rechten gegeven kunnen worden waar normaliter de root user voor nodig is. Dit was een functionaliteit waarvan ik me we wat al langer van bewust ben. Naar aanleiding van het blog artikel van Micheal Boelen. Zou ik graag wat voorbeelden geven hoe je dit kan gebruiken.

Maar informatie over capabilities is te vinden in de man pagina.

Of op http://linux.die.net/man/7/capabilities.

Netwerk beheersrechten

Om een gebruiker netwerkbeheersrechten te geven, zodat de gebruiker netwerkverkeer kan sniffen, moet de volgende commando gebruikt worden:

Deze regel geeft de applicatie dumpcap (welke wordt gebruikt voor wireshark) de rechten op het openen van een raw socket (cap_net_raw) en cap_net_admin geeft de rechten op:

  • interface configuration
  • administration of IP firewall, masquerading, and accounting
  • modify routing tables;
  • bind to any address for transparent proxying;
  • set type-of-service (TOS)
  • clear driver statistics;
  • set promiscuous mode;
  • enabling multicasting

De eip opties staat voor capability sets, welke drie opties heeft:

  • Permitted: This is a limiting superset for the effective capabilities that the thread may assume. It is also a limiting superset for the capabilities that may be added to the inheritable set by a thread that does not have the CAP_SETPCAP capability in its effective set.
    If a thread drops a capability from its permitted set, it can never reacquire that capability (unless it execve(2)s either a set-user-ID-root program, or a program whose associated file capabilities grant that capability).
  • Inheritable: This is a set of capabilities preserved across an execve(2). It provides a mechanism for a process to assign capabilities to the permitted set of the new program during an execve(2).
  • Effective: This is the set of capabilities used by the kernel to perform permission checks for the thread.

Handige Capabilities:

  • CAP_NET_BIND_SERVICE
    • Zorgt dat een applicatie een netwerk poort kan openen onder 1024 zoals poort 80 openen voor http.
  • CAP_SYS_ADMIN
    • Zorgt dat een gebruiker/applicatie een mount kan maken.