¿Y tú, ya ejecutas en tu Ubuntu Server sólo los servicios que necesitas?

Imagínate que administras un Ubuntu Server 12.04 que sólo sirve documentos HTML dinámicos con la ayuda de un servidor MySQL. Tu perfil es el de un desarrollador web que no quiere complicarse la vida administrando otros servicios, por lo que delegas en un tercero el correo electrónico, el correo electrónico seguro y el DNS.

Centro de datos, servidores

En este escenario solamente necesitas un servidor web (Apache, puerto 80), un servidor de bases de datos (MySQL, puerto local 3306) y un servidor SSH (puerto 22); ¡todo lo demás va a hacer que tu máquina sea menos segura!

La instalación fresca de Ubuntu Server sin ningún panel de administración tipo Parallels Plesk suele venir sólo con SSH:

Por cierto, esa es la salida de un escáner de puertos realizado con nmap:

Ubuntu Server 12.04 viene sin la pila LAMP, tienes que instalarla con estos comandos:

El servidor y la consola MySQL:

El servidor web Apache:

PHP:

Ten en cuenta que como se trata de una instalación “fresca” hay que instalar a mano las extensiones PHP que vayas a necesitar en tus proyectos.

Por ejemplo, si tu app web trabaja con imágenes y necesita la librería GD, y si se comunica con una base de datos MySQL, tienes que instalar estas extensiones manualmente:

Recuerda que el esquema de arranque y detención de los sistemas GNU/Linux basados en Debian es del tipo System V. Los archivos de inicio se almacenan en /etc/init.d y se enlazan simbólicamente en /etc/rcX.d. Por favor, echa un vistazo a este enlace si necesitas saber más sobre este tema.

Después de instalar la pila LAMP no tienes que preocuparte de poner los symlinks de Apache en los directorios /etc/rcX.d. Cuando reinicias el sistema ya se ponen solos. Nunca está, por eso, de más, comprobar esto manualmente; puedes asegurarte de lo que digo haciendo algo así como:

Si echas un vistazo a esta salida observarás que efectivamente el sistema mata el servicio apache2 en los niveles 0, 1 y 6, y lo ejecuta en los niveles 2, 3, 4 y 5. Fíjate que en los niveles de ejecución 016 hay una K (kill) al comienzo del enlace simbólico y en los niveles de ejecución 2345 hay una S (start).

Bien, pues todo esto es para decir que cuando instalas Apache así como digo ya se va a ejecutar luego él solito cuando reinices el sistema. Esto es importante, quiero decir que está bien tener en cuenta cómo se gestiona el arranque de los nuevos servicios que instalas.

Si hubiéramos partido de un Ubuntu Server 12.04 + Parallels Plesk, habiendo seguido un camino diferente a este, donde solo instalamos lo que necesitamos, entonces hubieras tenido que quitar a mano los servicios que no necesitas con comandos de este estilo:

Lo anterior quita el servicio xinetd. El demonio xinetd es un súper servicio envoltorio de TCP (TCP wrapper) que controla el arranque y acceso a varios servicios de red, por ejemplo, FTP, IMAP y Telnet.

En vez de iniciarse todos esos servicios por separado durante el arranque y de estar dormidos mientras esperan solicitudes, sólo hay un demonio que los envuelve, xinetd, escuchando los puertos TCP/UDP de los servicios de red configurados en el archivo /etc/xinetd.conf.

Bueno, pues ya estamos. Espero que este post sirva para ver que siempre es importante para la seguridad de un sistema informático ejecutar sólo aquello que dicho sistema informático utiliza.

En lo que a conexiones TCP se refiere, hemos planteado un escenario donde solo hay que abrir el puerto 80 y el puerto 22; el primero es para atender las peticiones HTTP de los clientes y servir los documentos HTML correspondientes, y el segundo para poder conectarnos al servidor de forma remota, y segura, mediante SSH.

Así las cosas, dicho todo lo anterior, si ahora hacemos un escáner de puertos desde otra máquina vamos a obtener lo siguiente:

Esta salida no tiene nada que ver con su contraparte Ubuntu Server + Parallels Plesk:

En próximas entregas explicaré cómo añadir otra capa de seguridad a tu máquina por medio del cortafuegos iptables para permitir sólo el tráfico SSH (puerto 22) y el tráfico HTTP (puerto 80). Ten en cuenta que ahora mismo tu Ubuntu Server 12.04 no tiene definidas reglas de filtrado de paquetes:

0 comentarios

¿Me dejas un comentario? ¡Gracias!

Deja un comentario

Los campos obligatorios están marcados con *