Consulta sobre seguridad y systemd

Buenos días, Estamos migrando servidores con aplicaciones toba y me surge la siguiente duda: el framework Toba (versión 2.7.x) es compatible con “PrivateTmp” (https://access.redhat.com/blogs/766093/posts/1976243) que se esta adoptando en la mayoría de las distribuciones (Debian 9, Centos 7, etc). Hemos visto errores del tipo:
Warning: session_start(): open(/tmp/sess_cg4vgak4alaqhl41r16tgjtm06, O_RDWR) failed: No such file or directory (2)
debido a esta funcionalidad(se genera un temporal con id propio de systemd). Para solventarlo deshabilitamos dicha funcionalidad pero no creemos que sea la mejor manera de proceder.
Quedamos a la espera de sus comentarios.
Saludos,Nicodemo.

Hola Nicodemo,

No tenia conocimiento de dicha funcionalidad (gracias por el link), de lo que lei entiendo que la funcionalidad afecta a los procesos y les bindea un “/tmp” virtual para cada proceso de manera de generar aislamiento. Toba no corre ningun proceso per se, su ejecucion se lleva a cabo a traves de PHP o Apache, por lo que la compatibilidad (en gral) dependerá de dichos paquetes y como esten configurados (en particular Apache) via systemd.

Hemos visto errores del tipo: [b]Warning[/b]: session_start(): open(/tmp/sess_cg4vgak4alaqhl41r16tgjtm06, O_RDWR) failed: No such file or directory (2) debido a esta funcionalidad(se genera un temporal con id propio de systemd). Para solventarlo deshabilitamos dicha funcionalidad pero no creemos que sea la mejor manera de proceder.
Te hago una consulta, PHP esta configurado para almacenar los archivos de session en "/tmp"?, Por defecto el storage de sesiones suele estar apuntando a [b]/var/lib/phpX[/b] que es una de las locaciones aceptadas cuando se requiere cierta permanencia y no deberia verse impactado por el cambio en systemd.

Si PHP esta configurado de dicha manera, el error parte de alli, habria que indicar en php.ini otro directorio para el almacenamiento de sesiones.

Desde el lado de Toba (buscando especificamente el string “/tmp”):

  • Solo hay un par de comandos internos que usan /tmp de manera “inadecuada” (forman parte del mismo pedido pero tienen llamadas shell) y de todas maneras estan deprecados en la nueva version ya que no tienen uso posible, ni son de utilidad para alguien fuera del desarrollo propio de toba.

  • De parte de las libs usadas, encontre un par que estarian aparentemente usando incorrectamente /tmp… por lo que queda plantear el issue al provider del paquete para que se resuelva.
    El caso mas notable en este punto es SAML (via CAS), que de todas maneras se puede resolver via configuracion apuntando el temp_dir default a otro directorio.
    EDIT: Viendo mas de cerca el codigo, el directorio se usa para almacenar estadisticas, logs, etc… no deberia influir para el caso de la autenticacion.

  • De parte de los proyectos hechos en Toba, queda a cargo de cada desarrollador el uso del directorio temporal. De todas maneras el framework brinda un directorio temporal interno al proyecto que es lo que se deberia estar utilizando si es que esperan cierta permanencia posterior al pedido de pagina puntual.

Basicamente es lo que encontre, en el caso puntual de la version en que se encuentran ustedes, lo que les recomendaria (si es que estan utilizando SSO) es modificar la configuracion de SAML para apuntar el temp_dir a otro directorio, si no lo usan no deberian encontrarse con mayores problemas.

Saludos