hpf

Jugador casual
Miembro del Equipo
MOD
Se incorporó
7 Mayo 2011
Mensajes
361
Incursionando en algunas cosas, me encontré con la siguiente problemática:

Servicios activos, directorios y contextos (tipo):
httpd -> /var/www/html/new -> httpd_sys_content_t
vsftpd -> /var/ftp/pub/new/ -> ftpd_t


SELinux está en modo Enforcing.

Al montar directorios con "mount --bind /var/www/html/new /var/ftp/pub/new", mantienen los contextos y entra (supongo) el problema.

Dependiendo del type que les asigne, se ven en un servicio o en el otro, no en ambos. En determinado momento, cambiando algunos contextos y probando permisos + atributos, el sistema no me permitía manipular nada. Por ejemplo, al tratar de cambiar owner, me denegaba el acceso.

audit.log
type=AVC msg=audit(1445323011.911:1162): avc: denied { setattr } for pid=4681 comm="chown" name="arch4.info" dev="dm-1" ino=588981 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:eekbject_r:ftpd_t:s0 tclass=file

type=AVC msg=audit(1445323100.029:1163): avc: denied { relabelfrom } for pid=4685 comm="restorecon" name="arch4.info" dev="dm-1" ino=588981 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:eekbject_r:ftpd_t:s0 tclass=file

type=AVC msg=audit(1445323154.596:1165): avc: denied { read } for pid=4706 comm="vsftpd" name="new" dev="dm-1" ino=588967 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:eekbject_r:httpd_sys_content_t:s0 tclass=dir

Por lo que puedo interpretar, es debido al tipo de contexto, sin embargo, no puedo cambiarlo ya que el directorio también está atado a otro tipo. Quizás hacen overlapping. Nada dentro del directorio está en uso.

Verifiqué toda conexión establecida. Firewall tampoco, está bien configurado para estos servicios. Al colocar SELinux en modo Permissive, puedo tener acceso desde ambos servicios sin problema.


Existe manera de tener esos archivos con contextos de SELinux diferentes? (Sé que mantienen el mismo inodo así que lo veo complicado, pero no sería la primera vez que me sorprenda)

Qué puede ser (o es)?

No me manejo mucho en SELinux. He buscado en mail-list y foros, pero no he encontrado nada.


De antemano gracias :zippybye
 

hpf

Jugador casual
Miembro del Equipo
MOD
Se incorporó
7 Mayo 2011
Mensajes
361
UPDATE:

Hace un rato me acordé de este thread, y como tenía guardadas las máquinas virtuales, decidí aventurarme un poco más.

No es posible asignar otros contextos a un mismo archivo (inodo), por lo tanto siempre va a depender de un contexto. La solución que implementé era la más obvia y sencilla :plaf, booleans. Eché un vistazo a los disponibles, y listé los relacionados con ftp y httpd. Los de apache no me dieron resultado, sin embargo, el de ftpd_full_access permitió el listado, lectura y ejecución, para efectos didácticos, un video de Halo Legends :zippy ; básicamente hace que se salte a SElinux (MAC) y utiliza DAC para conceder o denegar acceso.

Mismo archivo (hard-link)
[root@centos7 new]# ls -ial halo2.mp4
588964 -rwxr-xr-x. 2 root apache 75761750 Oct 20 02:27 halo2.mp4

[root@centos7 new]# ls -ial /var/www/html/new/halo2.mp4
588964 -rwxr-xr-x. 2 root apache 75761750 Oct 20 02:27 /var/www/html/new/halo2.mp4


audit.log (Comentado lo más importante)
########################## ANTES de setsebool ftpd_full_acess #################
type=MAC_CONFIG_CHANGE msg=audit(1455680208.529:672): bool=ftpd_full_access val=0 old_val=1 auid=0 ses=10
## Aquí desactivé el boolean de ftpd_full_access


type=SYSCALL msg=audit(1455680208.529:672): arch=c000003e syscall=1 success=yes exit=2 a0=3 a1=7ffe77312f60 a2=2 a3=7ffe77312ce0 items=0 ppid=3510 pid=3954 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=10 comm="setsebool" exe="/usr/sbin/setsebool" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)

type=AVC msg=audit(1455680210.259:673): avc: denied { getattr } for pid=3953 comm="vsftpd" path="/pub/halo2.mp4" dev="dm-1" ino=588964 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:eekbject_r:httpd_sys_content_t:s0 tclass=file
## Impide listar desde el file manager :(

type=SYSCALL msg=audit(1455680210.259:673): arch=c000003e syscall=6 success=no exit=-13 a0=7f767f419f90 a1=7f767f4221e0 a2=7f767f4221e0 a3=2 items=0 ppid=3951 pid=3953 auid=4294967295 uid=14 gid=50 euid=14 suid=14 fsuid=14 egid=50 sgid=50 fsgid=50 tty=(none) ses=4294967295 comm="vsftpd" exe="/usr/sbin/vsftpd" subj=system_u:system_r:ftpd_t:s0-s0:c0.c1023 key=(null)

########################## DESPUÉS de setsebool ftpd_full_acess #################
type=MAC_CONFIG_CHANGE msg=audit(1455680222.129:674): bool=ftpd_full_access val=1 old_val=0 auid=0 ses=10
## Aquí es activado el boolean


type=SYSCALL msg=audit(1455680222.129:674): arch=c000003e syscall=1 success=yes exit=2 a0=3 a1=7ffe23fd8b30 a2=2 a3=7ffe23fd88b0 items=0 ppid=3510 pid=3955 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=10 comm="setsebool" exe="/usr/sbin/setsebool" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
## Aquí nota que el boolean está activado y nos da hermoso acceso al video (como también a todos los directorios y archivos) :D

Saludos.
 
Upvote 0
Subir