[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Aunar logs de jails (chroot) [solucionado]



2014-06-09 20:05 GMT+02:00 Camaleón <noelamac@gmail.com>:
> El Mon, 09 Jun 2014 18:37:22 +0200, F. J. Blanco escribió:
>
>>> ¿No te aparece ningún error en el registro de rsyslog? Conviene que
>>> vayas descartando cosas, por ejemplo, que estés usando una sintaxis
>>> incorrecta.
>>
>> Ningún registro de error por ninguna parte, por lo que me quedo sin
>> hilo del que tirar.
>
> (...)
>
> Pues revisa la versión de rsyslog que tienes instalada porque en teoría
> es posible hacer lo que buscas. Por aquí también lo comentan:
>
> No jail hostname in logs
> http://www.gossamer-threads.com/lists/rsyslog/users/11588
>
> Es un foro de FreeBSD pero en linux no debe de haber mucha diferencia tan
> sólo asegúrate de que la versión de rsyslog que tienes y la sintaxis que
> usas son compatibles y permiten el uso del módulo y las variables que has
> definido en el archivo de configuración.

   Parece que, finalmente, di con la solución.

   Y mira por dónde, al final el problema no estaba en la
configuración del rsyslog, si no en el montaje del jail.

   Paso a explicarlo para que al próximo que le suceda, se ahorre los
mismos dolores de cabeza por los que he pasado yo:

   - Vincular el '/dev' del jail con el '/dev' del main host (bind),
no es compatible con el rsyslog.

   Si vinculas el '/dev' (ojo, no hablo del '/dev/pts', que sí
funciona y es necesario, sólo del '/dev'), todos los sucesos ocurridos
tanto en el main como en el jail son recogidos automáticamente por el
rsyslog sin tener que tocar nada en la configuración (como añadir
sockets). El problema es que no identifica de dónde proviene cada uno,
interpreta que todos son del main (echa mano del contenido de la
variable %HOSTNAME%).

   Si queremos que los identifique, es necesario desvincular ambos
'/dev' y crear un socket con nombre propio en el jail para que rsyslog
acuda a '/dev/log' y recoja allí los eventos propios del jail,
distintos de los del sistema.

   El proceso a seguir si quieres que el rsyslog recoja todos los
registros, pero identificando su origen (de manera simple, sin entrar
en mil detalles), sería el siguiente:

   - Activas estos puntos de montaje en el /etc/fstab para tu jail

/proc   /jail/prx/proc  proc    bind    0       0
/sys    /jail/prx/sys   sysfs   bind    0       0
#/dev   /jail/prx/dev   udev    bind    0       0   # Éste era el
causante del problema, lo comentamos
/devpts /jail/prx/dev/pts       devpts  defaults        0       0

   - En /etc/rsyslog.conf compruebas que el módulo imuxsock esté
activo (no esté comentado)

$ModLoad imuxsock

   - Creas un anexo a la configuración del rsyslog (ej.
/etc/rsyslog.d/prx.conf) donde añades el socket y le adjudicas el
nombre con el que quieres que aparezcan los registros del jail
(IMPORTANTE: primero nombre y luego socket)

$InputUnixListenSocketHostName prx
$AddUnixListenSocket /jail/prx/dev/log

   - Hecho esto, haces un restart del rsyslog y... ¡funcionando!

   Gracias Camaleón por las ideas y animarme a no arrojar la toalla.

   Saludos.


Reply to: