systemadmin.es > Seguridad > Ocultar PID del resto de procesos de usuarios del sistema

Ocultar PID del resto de procesos de usuarios del sistema

A partir de la versión 3.2 del kernel de Linux (en RHEL y CentOS esta disponible a partir de la 6.5) podemos ocultar los procesos del resto de usuarios no privilegiados.

La opción se llama hidepid:

  • hidepid=0: Comportamiento por defecto, todos los usuarios ven los procesos de todos los usuarios
  • hidepid=1: Los usuarios no privilegiados no pueden ver los procesos de otros usuarios, pero aun podemos ver los PIDs en el /proc aunque no los podemos leer:
    # mount -o remount,hidepid=1 /proc
    # mount | grep ^proc
    proc on /proc type proc (rw,relatime,hidepid=1)
    # su - mysql
    $ ps auxf
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    mysql    26279  0.5  0.0 115336  2012 pts/0    S    17:42   0:00 -bash
    mysql    26300  0.0  0.0 123340  1248 pts/0    R+   17:42   0:00  \_ ps auxf
    mysql    17102  0.0  0.0 115204  1676 ?        Ss    2014   0:00 /bin/sh /usr/bin/mysqld_safe
    mysql    17489  0.0  4.5 1292716 181208 ?      Sl    2014   5:28  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64
    $ ls /proc/
    1      16402  17272  1811   19739  22424  26278  31801  32067  522   8    934        bus          filesystems  loadavg       self           vmstat
    10     16403  17273  18489  19747  23     26279  31802  32130  523   807  935        cgroups      fs           locks         slabinfo       zoneinfo
    11     16421  17305  1860   2      23666  26301  3186   32131  525   808  936        cmdline      ide          mdstat        softirqs
    11601  16422  17306  1885   21     23712  3      3190   3219   5412  875  939        config.gz    interrupts   meminfo       stat
    11603  1666   17347  1886   21554  23713  3110   3192   32226  5533  899  942        consoles     iomem        misc          swaps
    11604  17     17348  1887   21831  23714  3114   3193   32227  5534  9    948        cpuinfo      ioports      mounts        sys
    11893  1706   1736   1888   21832  23899  3115   31937  32265  5535  906  952        crypto       ipmi         mpt           sysrq-trigger
    13     17073  17376  19     21833  23921  3148   31939  32266  642   922  953        devices      irq          mtd           sysvipc
    13584  1709   17377  19141  21834  24     31606  3196   32697  652   923  959        diskstats    kallsyms     mtrr          timer_list
    14     17102  17489  1954   21835  24078  31630  3197   32719  662   924  964        dma          key-users    net           tty
    15     17105  1777   1957   21836  24080  31631  32039  5      665   925  996        drbd         kmsg         pagetypeinfo  uptime
    1634   1712   1793   1958   21862  2462   31774  32040  520    7     926  acpi       driver       kpagecount   partitions    version
    1635   1715   18     1968   22     26254  31775  32046  5219   767   927  buddyinfo  execdomains  kpageflags   scsi          vmallocinfo
    
  • hidepid=2: Los usuarios no privilegiados no pueden ver los procesos de otros usuarios, incluso escondiendo los PIDs del /proc:
    # mount -o remount,hidepid=2 /proc
    # mount | grep ^proc
    proc on /proc type proc (rw,relatime,hidepid=2)
    # su - mysql
    Last login: Thu Jan  8 17:42:42 CET 2015 on pts/0
    $ ps auxf
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    mysql    26306  0.2  0.0 115336  2012 pts/0    S    17:43   0:00 -bash
    mysql    26327  0.0  0.0 123340  1244 pts/0    R+   17:43   0:00  \_ ps auxf
    mysql    17102  0.0  0.0 115204  1676 ?        Ss    2014   0:00 /bin/sh /usr/bin/mysqld_safe
    mysql    17489  0.0  4.5 1292716 181208 ?      Sl    2014   5:28  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64
    $ ls /proc/
    17102  buddyinfo  consoles   dma          fs          ipmi       kpagecount  meminfo  mtrr          self      sys            uptime
    17489  bus        cpuinfo    drbd         ide         irq        kpageflags  misc     net           slabinfo  sysrq-trigger  version
    26306  cgroups    crypto     driver       interrupts  kallsyms   loadavg     mounts   pagetypeinfo  softirqs  sysvipc        vmallocinfo
    26328  cmdline    devices    execdomains  iomem       key-users  locks       mpt      partitions    stat      timer_list     vmstat
    acpi   config.gz  diskstats  filesystems  ioports     kmsg       mdstat      mtd      scsi          swaps     tty            zoneinfo
    

De cualquier manera, no podemos evitar que se puedan detectar el resto de procesos del sistema, pero sí lo hacemos más complicado.

En el caso que tengamos un conjunto de usuarios no privilegiados que necesiten poder ver todos los procesos del sistema, por ejemplo un NRPE, podemos definir un grupo que permitiremos. Para ello deberemos indicar en el /proc el nombre del grupo con la opción gid:

# mount -o remount,hidepid=2,gid=nrpe /proc
# mount | grep ^proc
proc on /proc type proc (rw,relatime,gid=27,hidepid=2)

Para realizar los cambios permanentemente simplemente deberemos añadir las opciones en el fstab, por ejemplo:

proc       /proc   proc    defaults,hidepid=2,gid=nrpe     0 0

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>