Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ver: Modo: Orden:
Enviando eventos de syslog por jabber | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Algunas mejoras (none / 0) (#3)
por atordo a las Tue Oct 5th, 2004 at 01:48:20 AM CET
(Información Usuario)

Usuario no privilegiado

No es aconsejable ejecutar el script como Ruth, lo mejor es crear uno al efecto o usar alguno de los que tienen /bin/false como shell en /etc/passwd. Para ello hemos de darle al usuario los siguientes permisos:
  • Lectura en /etc/syslog-jabber y /etc/syslog-jabber/log.
  • Lectura y escritura en /etc/syslog-jabber/supervise, /etc/syslog-jabber/log/main y /etc/syslog-jabber/log/supervise.


Después hay que cambiar los ficheros run para que utilicen setuidgid.
  • /etc/syslog-jabber/run:
    #!/bin/sh
    echo Iniciando syslog-jabber
    # direct std err to std out, for log
    exec 2>&1
    exec setuidgid usuario /usr/bin/perl /etc/syslog-jabber/parseauth.pl
    
  • /etc/syslog-jabber/log/run:
    #!/bin/sh
    # with tai64n time format and 3 logfiles of size 50000 kB
    exec setuidgid usuario multilog t s50000 n3 ./main
    


Parser

He hecho una nueva versión que detecta dos eventos más: el fallo al introducir una contraseña por ssh y el inicio del sistema. Para este último es necesario que syslog también envíe al fichero fifo los avisos del kelmer (sustitúyase la modificación de /etc/syslog.conf por auth,authpriv,kern.* |/etc/syslog-jabber/fifo).

#!/usr/bin/perl
#

use strict;
my $tema;
my $msj;

open (FIFO, "</etc/syslog-jabber/fifo") || die ("No se pudo abrir el fifo\n");
 
 while (<FIFO>) {

   if (m/^\w\w\w\s+\d+ \d\d:\d\d:\d\d \w+ PAM_unix\[\d+\]: authentication failure; (\w+)\(uid=\d+\) -> \w+ for su service$/) {
      $tema="Fallo en su: $1";
      $msj=$_;
   }
   if (m/^\w\w\w\s+\d+ \d\d:\d\d:\d\d \w+ sshd\[\d+\]: Accepted password for (\w+) from (\S+) port \d+ ssh2$/) {
      if ($2 ne "miip") {
         $tema="Intruder Alert";
         $msj="$1 ha entrado desde $2";
      }
   }
   if (m/^\w\w\w\s+\d+ \d\d:\d\d:\d\d \w+ sshd\[\d+\]: Failed password for (\w+) from (\S+) port \d+ ssh2$/) {
      $tema="Fallo clave ssh";
      $msj="$1 desde $2";
   }
   if (m/^\w\w\w\s+\d+ \d\d:\d\d:\d\d \w+ kernel: klogd .*, log source = \/proc\/kmsg started\.$/) {
     $tema="Inicio del sistema";
     $msj=$_;
   }

   system("echo '$msj' | /etc/syslog-jabber/sJab -u remitente -p contraseña -t destinatario -q '$tema'")
      if ($tema && $msj);
   $tema="";
   $msj="";


}



Por cierto que al estar el parser escrito en un lenguaje interpretado, siempre hay un perl ejecutándose. Esto no es problema con las máquinas actuales, pero no estaría mal sustituirlo por uno compilado. Claro que con lo agradecido que es perl para estos menesteres, da muchísima pereza ponerse a escribir un parser en C. Si alguien conoce alguno ya hecho que se pueda adaptar, se agradecen sugerencias.



Enviando eventos de syslog por jabber | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda