Guia v5/Rutinas del sysadmin amateur
De Guadapedia, la enciclopedia libre.
Tabla de contenidos |
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:
- 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] (http://www.debian.org/doc/manuals/securing-debian-howto/index.en.html) 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
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
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 que hay que 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 cuál 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 informaciones 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 con base en 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 restartEsto 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 forma sencilla.
Para ello instalaremos los paquetes slbackup y webmin-slbackup:
$ sudo apt-get install slbackup webmin-slbackup
Ya desde el interfaz web de webmin podremos gestionar de una forma sencilla que directorios se salvan, de qué máquinas, con qué periodicidad, cómo acceder de una forma segura a las máquinas remotas, así como la restauración de copias de seguridad.
Sigue: Quiero más