problema Samba + cpu 100%

Horst von Brand vonbrand en inf.utfsm.cl
Mar Ago 2 22:40:32 CLT 2005


Roberto Leiva M. <rlm en floresinternacional.cl> wrote:
> Horst von Brand wrote:
> > Roberto Leiva (Trabajo) <rlm en floresinternacional.cl> wrote:
> >
> >>Tengo un Fedora Core 3 - kernel 2.6.12-1.1372_FC3
> >>con Samba 3 version:
> >>
> >>[root en Fc3SrvSmb ~]# smbd -V
> >>Version 3.0.10-1.fc3

> >>En este servidor esta instalado Cups 1.1.22. Existen clientes win 98, 2k,
> >>xp los cuales montan sus respectivas unidades e impresora (50 estaciones
> >>aprox), ademas clientes con linux que tambien montan unidades e impresora
> >>( 50 + ).

> >>Esta semana la carga de CPU esta continuamente trabajando al 100%, siendo
> >>que no se ha hecho ningun cambio.  EL proceso en cuestion es el smbd que
> >>inicia el root (no es el proceso padre sino uno que se inicia al rato de
> >>haber levantado el servicio). Si bajo el servicio Samba cierra todos los
> >>procesos smbd , menos el que emplea el 100% cpu (no muestra ningun error
> >>la salida del comando service smbd stop, lo tengo que matar con kill).

> > Humm... eso es bastante sospechoso.
> > Que te dice para el proceso <pid> que te juega chueco:
> >     ls -l /proc/<pid>/exe
> 
> lrwxrwxrwx  1 root root 0 ago  2 16:13 /proc/3515/exe -> /usr/sbin/smbd

Esta apuntando al ejecutable correcto.

> > [Se me sospecha que "alguien" te esta corriendo un proceso que se
> >  hace pasar por smbd para ocultarse.]

La otra opcion es que "algo" se haya tomado ese proceso.

> > [....]
> >
> >>Preguntas:
> >>
> >>Que puede estar pasando ? alguna ayuda ?
> > Veamos...

> >>Es posible ver realmente lo que esta realizando el proceso PID 3515 (
> >>lectura disco, escritura, sobre que cliente esta trabajando (mayor
> >>informacion) ?

> > Con gdb(1) puedes atacharte a un proceso en ejecucion y controlarlo.
> > Supongo que solo como root (cuidado!) en este caso. Con gcore (no tiene
> > manual aca) puedes crear un core del proceso:
> >   gcore <pid>
> > y analizar eso con calma.

> > La entrada /proc/<pid>/ contiene toda clase de informacion divertida
> > sobre el proceso del caso. Y un humilde strings(1) o nm(1), etc
> > aplicados al ejecutable sirven de mucho a la hora de investigar
> > programas "raros".

> lo estudiare y revizare!

Diria que el programa es el correcto.

> >>Sera problema de algun cliente que cause esto (virus troyano etc etc).

> > Puede ser. Bastante artesanal (hay maneras /mucho/ mas efectivas de
> > ocultar actividades nefastas), pero es lo que hay.

> >>PD: con los logs no pude aclarecer nada =(
> > Que revisaste de los logs?
> 
> Los log estan de la siguiente forma configurados:
> log file = /var/log/samba/%m.log ( por maquina )
> 
> segun "yo", deberian aparecer logs con el ip de la maquina o su nombre.
> 
> cosas raras:
> 
> file: 0.0.0.0.log

0.0.0.0 es universalmente tomado como "cualquier direccion" en IP. O puede
ser alguna configuracion mareada que trata de contactar eso? Lo que no es
derechamente ilegal (supongo), asi que no se cae a la primera pero si
enloquece luego. Al menos es una hipotesis plausible.

> [2005/08/02 02:00:05, 0] lib/util_sock.c:get_peer_addr(1000)
>    getpeername failed. Error was El otro extremo de la conexión no está conectado
> [2005/08/02 02:00:05, 0] lib/access.c:check_access(328)
> [2005/08/02 02:00:05, 0] lib/util_sock.c:get_peer_addr(1000)
>    getpeername failed. Error was El otro extremo de la conexión no está conectado
>    Denied connection from  (0.0.0.0)

Etc. Eso seria coherente con lo que indico.

Ahora, de donde saco esa imbecilidad es otra pregunta...

[...]

> file: nmbd.log
> 
> [2005/08/02 16:42:24, 2]
> nmbd/nmbd_incomingdgrams.c:process_host_announce(130)
> process_host_announce: incorrect name type for destination from IP
> 192.168.168.24 (was 1e) should be 0x1d. Allowing packe
> t anyway.                       [2005/08/02 16:42:25, 2]

Quien es 192.168.24? Da la impresion que esta mandando tonteras?

[...]

> file: smbd.log
> 
> [...]
> 
> [2005/08/02 08:49:10, 0] tdb/tdbutil.c:tdb_log(725)
>    tdb(/var/cache/samba/printing/S_PS17_LPT2.tdb): rec_read bad magic 0xd9fee666 at offset=150172
> [2005/08/02 08:49:25, 0] tdb/tdbutil.c:tdb_log(725)
>    tdb(/var/cache/samba/printing/S_PS17_LPT2.tdb): rec_read bad magic 0xd9fee666 at offset=150172
> [2005/08/02 08:49:25, 0] tdb/tdbutil.c:tdb_log(725)
>    tdb(/var/cache/samba/printing/S_PS17_LPT2.tdb): rec_read bad magic 0xd9fee666 at offset=150172
> [2005/08/02 08:49:40, 0] tdb/tdbutil.c:tdb_log(725)
> 
> [...]  este error se repite con algunas colas de impresion CUPS

Eso puede ser simplemente un archivo dan~ado, o algo mas siniestro...

- Verifica (via "rpm -Va") que no hayan inconsistencias en los paquetes
  instalados

- Revisa con cuidado los archivos de configuracion respectivos, en
  particular, que no contengan caracteres "raros" (he visto programas
  enloquecidos por archivos con caracteres inesperados)

- Actualiza /todo/
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


Más información sobre la lista de distribución Linux