(english version)
A cualquiera que base su negocio en Internet, ya sea con tiendas virtuales o con cualquier otro SaaS, el mantenimiento de servidores ayuda en gran medida a que el servicio esté la mayor parte del tiempo activo.
Si no dedicamos tiempo a revisar de forma periódica nuestro servidor podemos vernos inmersos en un serie de problemas desagradables como:
- Atacantes que obtienen permisos de root en el servidor o que escalan privilegios.
- Robo o borrado de información almacenada en el servidor (bases de datos por ejemplo).
- Fallos en discos duros con la consecuente pérdida de información si no se tiene una buena política de backup.
- Envío de spam con scripts subidos mediante aplicaciones vulnerables.
- Negación de servicio.
- Que el servidor pase a formar parte de una botnet.
- etc..
El mantenimiento de servidores surge para evitar todos estos problemas y puede englobar los siguientes pasos:
Monitorización del servidor 24x7x365.
En el mantenimiento de servidores es imprescindible tener monitorizado el servidor y los servicios críticos que dependan de él, como por ejemplo el ping, el servicio web (puerto 80), servicio mysql, etc. De manera que nos demos cuenta inmediatamente de si alguno de ellos fallan y podamos acceder al servidor para ver qué ocurre.
Para monitorizar el servidor se puede hacer uso de software específico para ello como Nagios, o bien recurrir a algún proveedor especializado en este tema.
Estadísticas de rendimiento del servidor.
Aunque no sea necesario para determinar si el servidor está on line o no, es una gran ayuda para ver la evolución de los recursos del servidor (memoria, carga, espacio en disco, tráfico, etc). Por ejemplo, podemos ver si un momento dado el servidor ha tenido un pico de carga o una bajada de la memoria libre que quizá dependan de factores externos, como un gran número de conexiones entrantes, o quizá dependan de la programación de la aplicación que hay que optimizar.
Refuerzo de seguridad.
Uno de los puntos en el que más incapié se hace en el mantenimiento de servidores es en la seguridad.
Para proteger nuestro servidor de accesos no autorizados que permitieran al atacante realizar cualquier cosa en nuestro servidor, es habitual reforzar la seguridad de los servicios que estén activos.
Por ejemplo el servicio SSH, que es normal tenerlo activo para poder acceder de forma remota al servidor. La configuración de este servicio se puede modificar para que no permita acceso al usuario root, o se puede modificar para cambiar el puerto por defecto, etc.
Deshabilitar servicios innecesarios .
En cualquier instalación de Linux siempre se instalan servicios que a priori no son necesarios para el funcionamiento de nuestras aplicaciones. Es aconsejable estudiar qué servicios se pueden quitar, de forma que no hará falta configurarlos para reforzar la seguridad y ahorraremos tiempo.
Procesos y sockets.
Otra cosa a tener en cuenta en el mantenimiento de servidores a la hora de añadir seguridad al servidor es revisar periódicamente los procesos que se están ejecutando en el mismo, para comprobar si hay algún proceso que no debiera estar ejecutándose o que esté consumiendo demasiados recursos.
En Linux con un simple “ps aux” podemos ver los procesos, su usuario correspondiente y la cpu y la memoria que está consumiendo.
Lo mismo podemos decir de los puertos abiertos. Hay que revisar qué puertos están abiertos y asegurarse de que solo esos y ninguno más está abierto. De esta manera podemos detectar si hay alguna aplicación en marcha mediante la cual se está accediendo al servidor.
Escaneo remoto de puertos.
Esto complementa al apartado anterior. Podemos usar software de escaneo de puertos, como nmap, para comprobar que puertos están abiertos en el servidor y cerrar los que nos interese, bien parando el servicio o bien mediante firewall.
Obviamente el escaneo se hace desde otro servidor y no en local.
Firewall.
Siguiendo con la seguridad, en el mantenimiento de servidores es vital tener en marcha un buen firewall que controle quién y como puede acceder a los servicios activos en nuestro servidor. En Linux, la alternativa más famosa es iptables aunque hay otros frontends basados en él.
Actualizaciones de seguridad.
Para terminar con el tema de la seguridad, es importantísimo revisar si hay actualizaciones de los servicios críticos de nuestro servidor y aplicarlas, como actualizaciones de kernel, servidor web, php, etc.
Normalmente los servicios se instalan con el gestor de paquete de la distribución que estemos usando, por lo que la actualización es una tarea muy sencilla que puede eliminar vulnerabilidades o fallos de seguridad en la programación del software citado anteriormente.
Por ejemplo, algunas vulnerabilidades de kernel descubiertas recientemente permiten a un atacante desde escalar privilegios hasta ganar privilegios de root
Si además, disponemos de un panel de control como Plesk o Cpanel para gestionar el servidor, es muy importante también comprobar si hay actualizaciones del mismo, para prevenir acceso no deseados al servidor.
Como ejemplo, la vulnerabilidad descubierta en febrero de 2012 en la API del Panel Plesk, que permitía a un atacante acceder al servidor mediante inyección de código mysql
Optimización de MySQL.
Si tenemos un servidor con MySQL es necesario modificar la configuración por defecto para que se ajuste a la cantidad de ram, número de cpus, etc, del servidor. De esta manera evitaremos que el servidor de bases de datos se convierta en un cuello de botella en el funcionamiento de las aplicaciones que hagan uso de él.
Comprobación del estado de discos duros .
Por último, pero no menos importante es revisar la salud de los discos duros de nuestro servidor.
En Linux hay herramientas de para comprobar discos como fsck. El problema es que no se puede usar esta herramienta en discos duros montados, ya que producirá una corrupción de datos.
Por tanto para comprobar el disco mientras esté montado podemos mirar los logs (/var/log/dmesg) o si se trata de un RAID podemos mirar en /proc/mdstat
En conekia sabemos que siguiendo estos pasos nos evitaremos muchos dolores de cabeza, ya que limpiar un servidor comprometido sin reinstalar el sistema operativo es bastante complejo y el servicio puede quedar mermado durante un largo periodo de tiempo. Incluso hay veces que no hay mas remedio que reinstalar el sistema operativo y reinstalar todos los datos desde backup si se dispone de uno.
Aunque hay proveedores de hosting que dan el mantenimiento de servidores como servicio, normalmente es el propio cliente quien debería realizar todos los pasos descritos anteriormente.
Para todo aquel que no pueda o no sepa realizar todo estas tareas de mantenimiento en conekia hemos lanzado nuestro producto de mantenimiento de servidores.