Olinuxino A10 Lime: Primeros pasos como servidor

English version.

En un artículo anterior, os hablaba de los módulos Olinuxino, la gama de computer-boards de Olimex.

Vamos a ver paso a paso cómo configurar un A10/A20 Lime para que actúe de servidor, con Debian. El objetivo es dejarlo funcionando 24×7 de forma desatendida. El modelo que yo estoy utilizando es un A10 Lime, con 512MB de RAM y sin memoria Flash.

1. Flasheando la microSD

Win32DiskImagerBueno, pongámonos en harina. Partimos de la imagen oficial de Olimex, la podemos descargar desde aquí. La imagen oficial viene con, tal vez, demasiados “extras”, además, tiene el subprocesador gráfico full featured, con lo que podemos perder rendimiento en el resto de funciones que no sean multimedia. En próximos artículos explicaremos cómo crear una imagen mínima, con un kérnel compilado quitando cuestiones innecesarias. Si trabajamos desde Windows, podemos flashear con Win32Imager. El proceso es muy sencillo, basta con descomprimir la imagen (que está en .7z) y flashear una microSD de, al menos, 4GB. Si tenemos Linux, utilizaremos dd:

Siendo /dev/sdX la unidad correspondiente a nuestro lector de SD. Es recomendable utilizar una microSD de clase 10, para evitar funcionamiento demasiado lento.

2. Primer arranque

terminalUna vez flasheada la microSD, ponemos la SD en el Olinuxino y lo arrancamos. En este punto, lo ideal es conectar un monitor o TV por HDMI y un teclado y ratón por USB para configurar la red. La imagen oficial tiene la ethernet desactivada, para evitar retrasos en el arranque. Abrimos un terminal y escribimos:

Se activará la red y adquirirá una IP de nuestro DHCP. Para saber la IP asignada, podemos preguntar a nuestro DHCP (normalmente el router) o podemos utilizar el comando:

3. Conexión Remota

puttyEn la información de eth0, obtendremos la IP del parámetro “inet addr”, en nuestro caso 192.168.0.5. Una vez sepamos la IP, podemos ubicar nuestro servidor en el lugar que queramos y administrarlo remotamente por SSH. Desde windows, el estándar de facto para SSH es el software PuTTY.

Putty no tiene mucho misterio, basta con teclear la IP de nuestro Lime y hacer click en Open. Nos pedirá un usuario y una contraseña, que en este caso serán root / olimex.

 

El primer paso es cambiar la contraseña de root, para ello, tecleamos el comando

Nos pedirá introducir la nueva password y confirmarla. Una vez esté esto listo, vamos a…

4. Configuración de Red

El siguiente paso es configurar la red de nuestro servidor, dado que si lo dejamos configurado por DHCP, es probable que con el tiempo nuestro router acabe cambiando la IP del equipo. Esto lo podemos hacer de dos formas: configurando el DHCP del router o configurando una IP manualmente en el Lime.

Para la primera opción, buscad en el manual de vuestro router, suele denominarse “Address reservations”, bastará con que proporcionéis la dirección MAC de la interfaz de red del Olinuxino. Nos la ha chivado antes ifconfig:

En el caso que queramos configurar la IP manualmente en el Lime, editamos el archivo /etc/network/interfaces

Os dejo cómo lo tengo configurado yo para que veáis un ejemplo:

Una vez tengamos configurado el archivo conforme a nuestra red, reiniciamos el servicio. Si hemos cambiado la IP, Putty nos desconectará:

Una vez tengamos lista la configuración de red, nos vamos al siguiente paso:

5. Securizando SSH

El sexto paso será dar salida a Internet a nuestro servidor, pero conviene securizar SSH primero para evitar que atacantes se puedan hacer con el control. Es decisión de cada uno dejar el acceso a SSH directamente abierto a Internet, no creo que sea una opción insegura siempre que se lleve cuidado y sigamos unos sencillos pasos:

  1. Deshabilitar el acceso root: cualquier sysadmin que lea el principio del post le hervirá la sangre al ver que se accede a SSH con el usuario root. Es una opción muy insegura y conviene evitarla en la medida de lo posible. Para arreglar esto, primero debemos crear un usuario:

    Esto nos creará el usuario “fulanito” y pedirá una password para el mismo. Ahora tenemos que permitir que fulanito pueda realizar funciones administrativas. Para ello utilizaremos sudo, con lo que lo incluimos en el grupo de sudoers:

    Este comando añadirá sudo como grupo adicional a fulanito. A continuación, vamos a impedir que SSHd permita que root se logue en el sistema, editamos el archivo /etc/ssh/sshd_config

    Buscamos la línea “PermitRootLogin” y la cambiamos a “no”. Reiniciamos el servicio, y Putty se desconectará:

    Volvemos a abrir putty, y en este momento ya nos logamos con el usuario que hayamos creado (p. ej. fulanito)
  2. Cambiar puertos por defecto: Una de las configuraciones que nos parará el 60% de los ataques es cambiar los puertos por defecto de determinados servicios, sobre todo, el ssh. La mayor parte de los ataques son automatizados y no tienen como objetivo concreto tu máquina, sino que buscan “a voleo” máquinas que controlar. Todos estos ataques en masa escanean en busca de los puertos por defecto, con lo que si cambiamos el número de puerto, tenemos una primera línea de defensa frente a estos ataques y, al fin y al cabo, ssh nada más que será accedido por nosotros. Por tanto, nos vamos a la config de sshd:

    Y buscamos, en las primeras líneas, la opción Port. Cambiamos el 22 por un número al azar, a ser posible alto, para que no interfiera en otros servicios, por ejemplo el 32109. En la configuración NAT de nuestro router, deberemos abrir para el Lime este puerto.
  3. Complicar el login en caso de error en el password: Puede ocurrir que recibamos un ataque dirigido, y que en un escaneo de puertos hayan descubierto que el ssh lo tenemos en el puerto 32109. Supongamos también que conocen el usuario fulanito y que están intentando un ataque de diccionario frente a nuestra máquina. Una buena defensa frente a este tipo de ataques es introducir un máximo de intentos de Login. Esto lo podemos configurar fácilmente: buscamos o creamos si no existiera la línea MaxAuthTries y le asignamos un valor de 3 (el valor por defecto es 7). Volvemos a cargar la configuración de sshd:

    Nótese que, dado que nos hemos logado con nuestro usuario fulanito, tenemos que hacer sudo para poder ejecutar instrucciones de administrador (como es reiniciar un servicio). Sudo nos pedirá que introduzcamos la contraseña de fulanito para confirmar.

6. Instalando el primer servicio

Bueno, ya tenemos más o menos securizado nuestro mini servidor (más adelante lo complicaremos con iptables y fail2ban). Ahora vamos a poner en marcha el primer servicio de nuestro Lime: un servidor web. Las distribuciones de Linux actuales vienen cada una con su propio gestor de paquetes. Debian utiliza apt. Hasta el momento no habíamos utilizado el gestor de paquetes, así que vamos al lío:

Esto ejecutará primero apt-get update (actualizar los repositorios) y luego apt-get upgrade (actualizar las aplicaciones que tengamos instaladas). Tras unas cuantas conexiones, nos pedirá confirmación para instalar las actualizaciones de paquetes. Siéntate y relájate mientras se instalan, pues probablemente sean muchas. Cuando haya terminado, vamos a por nuestro servidor web, que va a ser nginx:

“Pero, oiga, yo siempre he utilizado Apache”: da gracias que no instalamos μhttpd. Hay que tener en cuenta que los recursos en el Lime son limitados, y necesitamos un servidor que sea ligero. Se podrían escribir ríos de tinta sobre si es mejor Apache o Nginx, de hecho, casi depende de la función que vaya a tener, pero no es el motivo de este tutorial… Bueno, mientras leías esto ya se habrá instalado nginx. Vamos a arrancarlo:

Ahora abrimos un navegador web y accedemos a http://ip-del-lime/, debe aparecer algo como la imagen:

nginx

Bueno, pues ya tenemos nuestro servidor web en marcha. Lo siguiente es abrir el puerto 80 en nuestro router para que nuestra web esté visible al mundo. En próximos post explicaré cómo configurar el servidor web para alojar un sitio php como WordPress. Además añadiremos el servicio de correo a nuestro Lime, para que actúe de servidor de correo electrónico.