Estado del Sistema

De CURE - Informática
Saltar a: navegación, buscar

Objetivos

  1. Obtener información del estado del sistema.
  2. Configurar un analizador del logs para recibir reportes diarios de estado del sistema.



Software

  • "Logwatch": analizador de estado del sistema.


Comandos y Archivos útiles

  • Examinar estado del sistema:

Comandos: dmesg, uptime, last

Logs: en /var/log;

principales: messages, kern, syslog, auth.log, user.log, daemon.log, debug;

todos pueden ser importantes según lo que se esté buscando.

Para ver en tiempo real qué está pasando: tail -f /var/log/<nombre archivo de log>, redirige al terminal los mensajes de log, se van viendo a medida que aparecen, Ctrl-C para terminar el tail -f.

  • Uso de memoria. Comandos: top, free, vmstat.

Directorios: /proc, /sys; man proc, no hay man para sys.

Log diario automático: paquete logwatch, requiere ajustar en cron la ejecución diaria y la lista de destinatarios (direcciones de correo electrónico de usuarios administradores; requiere un sistema de correo instalado y funcionando, exim).

  • El sistema de log:

Sistema anterior: syslogd, configuración en /etc/syslog.conf

Sistema actual: rsyslogd

- rsyslogd - reliable and extended syslogd

- rsyslog.conf - rsyslogd(8) configuration file

Rotación de logs:

Comando: logrotate

Archivos:

- /var/lib/logrotate.status Default state file.

- /etc/logrotate.conf Configuration options.


Procedimiento

Estado del sistema

En el arranque de un sistema GNU/Linux se produce un volcado de información interesante acerca de las caractrística de la máquina, dispositivos, arranque de servicios, etc y se menciona además los problemas que aparecen.

Herramientas para acceder a esta información:

  1. Comando dmesg: da los mensajes del último arranque del kernel.
  2. Comando uptime: indica cuanto tiempo hace que el sistema está activo.
  3. Fichero /var/log/messages: log general del sistema, contiene mensajes del kernel y otros daemons, existen varios archivos de log en /var/log.
  4. Sistema /proc: pseudo sistema de ficheros (procfs) que utiliza el kernel para almacenar información de procesos y de sistema.
  5. Sistema /sys: pseudo sistema de ficheros (sysfs), contiene información de los dispositivos y controladores.


Logs del sistema

La mayor parte de los logs, se generan en el directorio /var/log. Algunas aplicaciones pueden cambiar este comportamiento.

Existe un daemon particular del sistema llamado Syslogd. Este daemon se encarga de recibir los mensajes del kernel y de otros daemons de servicios y envía la información al fichero /var/log/messages. Éste es el fichero por defecto, pero es configurable (en el fichero /etc/syslog.conf) para lograr generar otros ficheros con información particular, ya sea diferenciando la fuente o el tipo de log (error, advertencias, etc)

Una herramienta útil es utilizar la opción -f del comando tail para que se vaya desplegando en la teminal las modificaciones que se producen en un fichero. Por ejemplo, si queremos saber que está pasando con el correo podemos utilizar los comandos:

$ tail -f /var/log/mail.info
$ tail -f /var/log/mail.err
$ tail -f /var/log/mail.warn

Otros comandos relacionados:

Comando last: analiza log de entradas/salidas del sistema de los usuarios. Comando lastlog: última vez que los usuarios han sido vistos en el sistema (/var/log/lastlog). Comando logwatch.


Memoria

Para examinar la información sobre memoria veremos varios métodos y comandos útiles:

Fichero /etc/fstab: aparece la partición swap (si es que existe). Con fdisk averiguamos su tamaño o consultando /proc/swaps. Comando ps -axu: permite conocer que procesos tenemos con los porcentajes de memoria usada, CPU, etc. Comando top: versión dinámica de ps. Comando free: estado global de la memoria fisica y virtual. Comando vmstat: estado de la memoria virtual y el uso que se le dá. Algunos paquetes como dstat permite recoger datos de diferentes parámetros (memoria, swap y otros) a intervalos de tiempo (similar a top).


Instalación de Logwatch

$ apt-get install logwatch

Logwatch guarda la información por defecto en el directorio /usr/share/logwatch/default.conf/ , pero este directorio no es necesario modificarlo ya que logwatch también se fija en /etc/logwatch/ y sobrescribe la configuración por defecto. Por lo tanto, directamente creamos el siguiente archivo: /etc/logwatch/conf/logwatch.conf en este vamos a hacer nuestras modificaciones personales, si queremos nuevamente la configuración por defecto, basta con borrar este archivo. Ejemplo de /etc/logwatch/conf/logwatch.conf :


# archivo /etc/logwatch/conf/logwatch.conf #
################################

# Para que logwatch nos mande un reporte por mail
Output = mail 

# Con esto elegimos el formato del reporte (text, html...)
Format = html

# Dirección de destino del reporte
MailTo = tu_correo@tu_servidor.com

# Remitente del reporte
MailFrom = logwatch

# Dia que quiero el reporte (Yesterday, Today, all)
Range = Yesterday

# De que servicios quiero recibir reportes
Service = all

Bueno, con esto hacemos que cada vez que ejecutemos el comando "logwatch" recibamos un mail con el reporte. Para recibir diariamente sin tener que ingresar a la máquina vamos a editar el archivo /etc/cron.daily/00logwatch y agregamos la siguiente línea:

/usr/sbin/logwatch --mailto tu_correo@tu_servidor.com

Guardamos los cambios y listo, recibiremos todos los días un reporte de logwatch.

NOTA IMPORTANTE: hay que tener un agente de correo configurado y funcionando.


Ejemplo de un informe del logwatch

   * LOGWATCH Summary
   * Denyhosts
   * pam_unix
   * Postfix
   * Connections (secure-log)
   * SSHD
   * Sudo (secure-log)
   * Disk Space 

LOGWATCH Summary

     Logwatch Version: 7.3.6 (05/19/07)
     Processing Initiated: Tue Nov  8 06:25:03 2011
     Date Range Processed: yesterday
                           ( 2011-Nov-07 )
                           Period is day.
     Detail Level of Output: 0
     Type of Output/Format: mail / html
     Logfiles for Host: polonio


Denyhosts new denied hosts:

  211.238.153.158


pam_unix login:

 Authentication Failures:
    carlitox (): 1 Time(s)
    unknown (): 1 Time(s)
 Invalid Users:
    Unknown Account: 1 Time(s)

sshd:

 Authentication Failures:
    root (211.238.153.158): 5 Time(s)
    unknown (211.238.153.158): 1 Time(s)
 Invalid Users:
    Unknown Account: 1 Time(s)


Postfix

 7.895K  Bytes accepted                               8,084
 7.354K  Bytes sent via SMTP                          7,530
   554   Bytes delivered                                554

........ ...................................................

     2   Accepted                                   100.00%

--------------------------------------------------

     2   Total                                      100.00%

........ ...................................................

     2   Connections            
     1   Connections lost (inbound)
     2   Disconnections          
     2   Removed from queue      
     1   Delivered              
     1   Sent via SMTP          


Connections (secure-log)

    • Unmatched Entries**
 login: FAILED LOGIN (1) on '/dev/tty1' FOR 'carlitox', Authentication failure: 1 Time(s)
 login: FAILED LOGIN (2) on '/dev/tty1' FOR 'UNKNOWN', Authentication failure: 1 Time(s)


SSHD SSHD Started: 4 Time(s) Failed logins from:

 211.238.153.158: 5 times

Illegal users from:

 211.238.153.158: 1 time

Refused incoming connections:

    211.238.153.158 (211.238.153.158): 5836 Time(s)


Sudo (secure-log) ................................................................................ carlitox => root


/sbin/reboot - 2 Times.


Disk Space

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 12G 349M 11G 4% /

none 1.9G 256K 1.9G 1% /dev

/dev/sda5 4.6G 271M 4.1G 7% /var

/dev/sda6 4.6G 564M 3.8G 13% /usr

/dev/sda7 938M 19M 873M 3% /tmp

/dev/sda8 4.6G 138M 4.3G 4% /home


Logwatch Ended at Tue Nov 8 06:25:04 2011


Notas adicionales

  • Configuración de Postfix para que envíe correo

En el archivo de configuración /etc/postfix/main.cf hay que completar con la siguiente información:

myorigin = tu_dominio.com
mydomain = $myorigin
myhostname = nombre_de_maquina.$mydomain
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
relayhost = # Cuando no tiene nada este campo, es la propia máquina quien envía
inet_interfaces = all
home_mailbox = Mail/ # Hay que crear este directorio 

Comandos útiles:

$ /etc/init.d/postfix start
$ /etc/init.d/postfix stop
$ /etc/init.d/postfix restart

Logs útiles:

/var/log/mail.info
/var/log/mail.err
/var/log/mail.warn

Referencias

Créditos: Victor Alem y Marcos Rodríguez

http://ocw.uoc.edu/informatica-tecnologia-y-multimedia/administracion-avanzada-del-sistema-operativo-gnu-linux/materiales/


http://www.juanfelipe.net/node/35