IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Rutinas del sysadmin amateur

Una vez que tengamos nuestro servidor en funcionamiento nos daremos cuenta de que esta historia no ha hecho más que empezar. Si hemos disfrutado llegando hasta donde hemos llegado y obteniendo los resultados que hemos obtenido, más disfrutaremos con lo que viene a continuación. Posiblemente.


Mantener seguro nuestro servidor

Tener un servidor totalmente seguro requiere un elevado nivel de conocimientos y bastante trabajo, por lo que nos vamos a centrar en cómo tener un servidor medianamente seguro.

Al igual que ocurre con nuestra casa, debemos seguir una pautas para mantener un servidor medianamente seguro. Aunque técnicamente es difícil mantener una casa totalmente protegida frente a robos, tampoco vivimos agobiados constantemente por este hecho y seguimos siempre una serie de recomendaciones básicas para prevenir la entrada de intrusos (como no dejar la puerta abierta o las llaves de la puerta puestas).

Con el servidor sucede prácticamente lo mismo:

thumb|Un paso del Asistente Gnome-lokkit para configuración sencilla de nuestro cortafuegos

  • Mantener el sistema continuamente actualizado. Si todo lo que instalamos es a través de paquetes de los repositorios estándares, tendremos un sistema bastante seguro frente a vulnerabilidades. Hay que tener mucho cuidado con las aplicaciones que se instalan a mano, no a través de los repositorios, porque es fácil que queden desactualizadas y que expongamos nuestro servidor a ataques. Una forma sencilla de estar al tanto de los paquetes que se necesitan actualizar en nuestro sistema es tener instalado el paquete apticron que nos avisará por correo sobre las actualizaciones pendientes en nuestro servidor.
  • Cuantos menos programas tengamos instalados y cuantos menos servicios disponibles desde Internet, menos posibilidad de ser atacados. Si no vamos a usar el escritorio gráfico, mejor desinstalarlo (sudo apt-get remove gnome-* xserver-* xorg-*, se dice rápido pero mejor ir con cuidado con esta operación). Los servidores habitualmente no instalan escritorio por motivos de seguridad.
  • Mantener un cortafuegos o firewall instalado y configurado en el servidor, sólo permitirá el tráfico autorizado de los servicios que tenemos. La aplicación gnome-lookit' configura nuestro cortafuegos de una forma sencilla mendiante un asistente. Para una configuración más elaborada, existen otras aplicaciones gráficas como fwbuilder o firestarter.
  • Hacer copias de seguridad regularmente de la información que creamos valiosa. Si podemos dejar los backups en otra localización diferente, siempre será mejor.
  • Usar contraseñas seguras para todos los usuarios de la máquina. Una contraseña sencilla puede equivaler a dejar las llaves puestas en la puerta de nuestra casa.
  • Si queremos estar al tanto de posibles problemas, es recomendable suscribirse a listas de anuncios de seguridad o listas que informen sobre la seguridad del software de los servicios que usamos.

Además tenemos que tener en cuenta que si detrás de nuestro servidor tenemos otras máquinas locales, podemos también comprometerlas a ellas si el servidor no es seguro.

Muchos de los ataques que se reciben desde Internet suelen basarse en un rastreo de los servicios que un servidor tiene habilitados, y una posterior búsqueda de debilidades de los servicios disponibles. Ningún software es totalmente seguro frente a ataques y continuamente se actualizan frente a debilidades que se van encontrando. La conclusión a esto es que una puesta al día del sistema siempre es una buena medida contra ataques.

El documento Debian Security Howto [1] es una buena referencia para profundizar conocimientos y mejorar y endurecer la seguridad de nuestro servidor.


Paquetes que cuidan del servidor

A continuación enunciamos paquetes disponibles en nuestra distribución que pueden ayudarnos en las tareas de securización de nuestro servidor:

  • logcheck - Notifica por correo las anomalías en los logs de cualquier aplicación. Esta aplicación necesita una configuración muy precisa según nuestro sistema, pero una vez ajustada es muy útil para detectar ataques, intrusiones, etc. En Ubuntu y distribuciones derivadas dicha configuración se hace llevadera.
  • fcheck - Comprueba si se han modificado ficheros en nuestro servidor y detectar así ataques. Se guarda inicialmente el MD5 (una especie de comprobante de integridad) de los ficheros del sistema de nuestro servidor y periódicamente se comprueba si ha habido alguna modificación, notificándonos por correo cualquier anomalía.
  • Snort - Un IDS (Intrusion Detection System) para análisis en tiempo real de paquetes en redes IP. Es muy configurable y existe bastante documentación y libros sobre su uso. A modo de ejemplo, puede detectar ataques a webs, DNS, y otros servicios habituales, escaneos de puertos, tráfico de bases de datos malicioso, ataques de denegación de servicio (DOS), etc.
  • acidlab - Una consola PHP para analizar bases de datos de intrusiones (Analisys Console for Intrusion Databases), para buscar y procesar los eventos de seguridad generados por varios IDS como snort.
  • oinkmaster - Script para mantener las reglas de snort al día fácilmente.
  • Módulos para Apache - Apache dispone de varios módulos para mejorar la seguridad de nuestro servicio web como mod-ssl, mod-chroot, mod-security, mod-suphp y varios de autenticación. Todos ellos están empaquetados en nuestra distribución.


Estadísticas de acceso con Webalizer

Webalizer es un software de análisis de logs de servidores web. Nos muestra estadísticas de visitas a nuestras web, páginas más visitadas, etc. Realiza unas vistosas gráficas y las deja accesibles vía web.

Para usarlo instalamos el paquete 'webalizer':

$ sudo apt-get install webalizer

Editamos el fichero de configuración:

$ sudo nano /etc/webalizer.conf

para que analice los logs de apache2 en vez de apache (como está configurado por defecto):

LogFile         /var/log/apache2/access.log.1

thumb|Webalizer mostrando nuestras primeras estadísticas

Ejecutamos el script (normalmente se encargará el servidor de hacerlo diariamente pero queremos ver incialmente el resultado):

$ sudo /etc/cron.daily/webalizer

y analizará los logs que tengamos en nuestro servidor web y dejará accesible el resultado en la carpeta webalizer de nuestro servidor: http://guias-ubuntu.dyndns.org/webalizer/

Administración web de bases de datos

thumb|administración de nuestra base de datos del CMS drupal a través de phpmyadmin

Para una gestión web de nuestra base de datos, instalamos el paquete phpmyadmin:

$ sudo apt-get install phpmyadmin

Nos dejará accesible su interfaz web, para administrar cómoda y remotamente nuestras base de datos MySQL: http://guias-ubuntu.dyndns.org/phpmyadmin/

Es recomendable añadir soporte de SSL a nuestro servidor Apache y a esta instalación si vamos a acceder desde Internet a la gestión de las Base de Datos, ya que si no las contraseñas circularían transparentemente por Internet.


Monitorizar el tráfico

Las aplicaciones iptraf y tcptrack nos ayudan a analizar en tiempo real el tráfico IP de nuestro servidor.

Su instalación es sencilla:

$ sudo apt-get install tcptrack iptraf


Para arrancar tcptrack indicamos como parámetro el interfaz a analizar:

$ sudo tcptrack -i eth0

] Iptraf es más interactivo, permitiendo más opciones por medio de menús en modo texto:

$ sudo iptraf

Con ayuda de estos programas podemos identificar cómo se usa el tráfico de nuestra red, identificar abusos, etc.

Monitorizar el estado del servidor

Es importante llevar un control de los recursos que consume nuestro servidor: el uso que tiene de memoria, de CPU, de red, de swap. Esta tarea la podemos hacer con herramientas de línea de comando (como top o htop), pero es interesante llevar un historial del uso de estos recursos de una forma gráfica, de forma que podamos ver cual es la progresión, detectar problemas en el pasado, tener suficientes datos para actuar frente a problemas, etc.

Una herramienta muy completa que nos puede ayudar en esta labor es cacti, que permite monitorizar sistemas y servicios de una forma gráfica.

Para instalarla:

$ sudo apt-get install cacti php-pear librrds-perl

Durante la instalación nos pregunta una serie de información, que luego deberemos recordar a la hora de crear manualmente la base de datos en el siguiente paso:

$ mysql -u root -p -e "create database cacti"
$ mysql -u root -p -e "grant all privileges on cacti.* to cacti@localhost identified by 'contrasenyaanterior'; flush privileges"
$ zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u cacti -p cacti


Una vez hecho esto, podemos acceder a http://guias-ubuntu.dyndns.org/cacti/

Allí completaremos la instalación. Nos solicitará un usuario (admin/admin inicialmente) y luego nos pedirá que cambiemos la contraseña de este usuario. Completado este paso accederemos al interfaz web de cacti donde podremos ya administrar la monitorización de nuestro sistema.

Por defecto, la propia máquina donde se instala se configura para ser monitorizada, por lo que si esperamos unos minutos, veremos los primeros gráficos de nuestro servidor.

Administración vía web

Webmin es un sistema de administración a través de una interfaz web. Para usarlo, instalamos todos los módulos que creamos interesantes en base a lo visto en apartados anteriores.

Pero antes vamos a configurar la contraseña del superusuario 'root' en nuestro servidor si no lo hemos hecho ya:

$ sudo passwd

ya que webmin usará esta contraseña inicialmente y porque siempre es conveniente que en nuestro servidor conozcamos la contraseña de 'root'. Seguidamente instalamos los paquetes que nos interesan:

$ sudo apt-get install webmin webmin-apache webmin-jabber webmin-mysql webmin-samba webmin-sshd webmin-firewall webmin-core libmailtools-perl libhtml-format-perl libcompress-zlib-perl libio-socket-ssl-perl libmail-audit-perl mail-audit-tools

También instalamos algunos paquetes adicionales que nos sugiere apt-get para que webmin funcione de una forma más completa.

Esto levantará un servidor web específico para webmin en el puerto 10000 (si usamos un cortafuegos, debemos habilitar este tráfico) en concreto podemos apuntar nuestro navegador a https://guias-ubuntu.dyndns.org:10000/

Si no estamos accediendo localmente, nos dará un mensaje de error, indicando que nuestra dirección IP no tiene permisos para acceder a webmin. Es necesario acceder en local o habilitar nuestra dirección editando el fichero:

$ sudo nano /etc/webmin/miniserv.conf

añadiendo nuestra dirección IP, por ejemplo:

allow=127.0.0.1 10.0.0.6

y rearrancado nuestro servidor de webmin:

$ sudo /etc/init.d/webmin restart              

thumb|Webmin listo par ser usadoEsto ya hará accesible webmin desde nuestra dirección. Podemos entrar usando el usuario 'root' e introduciendo su contraseña.

Webmin tiene una gestión de usuarios de forma que podemos crear nuevos usuarios que puedan acceder a webmin. Organizados en pestañas, veremos todos los módulos de webmin que hemos instalado y podremos gestionar sus servicios asociados.

Como usamos apache2, el módulo de apache de nuestro webmin tiene que ser ajustado para acceder a la configuración de apache2, en vez de a la configuración de apache versión 1. Básicamente hay que cambiar las menciones a 'apache' por 'apache2' en la configuración del módulo.

Gestionando backups

Una tarea importante que debemos realizar es la de hacer copias de seguridad de la información importante de nuestro servidor. Vamos a encargarle esta tarea al software slbackup, que con el módulo correspondiente de webmin nos permitirá hacer y restaurar copias de seguridad, de una máquina local de una forma sencilla.

Para ello instalaremos los paquetes slbackup y webmin-slbackup:

$ sudo apt-get install slbackup webmin-slbackup
Fitxer:Slbackup1.png
Una de las pantallas de administración de slbackup desde webmin

Ya desde el interfaz web de webmin podremos gestionar de una forma sencilla que directorios se salvan, de que máquinas, con que periodicidad, como acceder de una forma segura a las máquinas remotas, así como la restauración de copias de seguridad.


Recursos