Configurar Raspbian por primera vez en Raspberry Pi 3 con seguridad (Parte I)
Raspberry Pi es un miniordenador con características más limitadas y un consumo mucho menor. Este tipo de dispositivos es ideal para instalar servicios web como Owncloud, un centro multimedia o tu propia web en Apache. Tiene un consumo de energía del orden de los 5W frente a los 75W de media de un sobremesa (Ya te hago yo la cuenta, consume 15 veces menos que un ordenador de escritorio) y sólo cuesta unos 35-40€ el último modelo.
Sin embargo, al ser accesibles desde internet, están expuestos a los mismos ataques que cualquier servidor Linux o Windows. Además, al tener un hardware más básico hay que aprovechar las herramientras disponibles para evitar denegaciones de servicio o accesos ilegales a la Raspberry Pi. Por tanto, es necesario tomar una serie de medidas para dificultar ataques externos o accesos no deseados a nuestra Raspberry Pi.
Las medidas que se verán en los siguientes apartados están enfocadas en el sistema operativo Raspbian. No obstante, antes de comenzar quiero aclarar que muchas de estas medidas son igualmente aplicables a cualquier servidor Linux. De hecho, como muchos sabréis, Raspbian es una versión adaptada de Debian.
A continuación, un índice de todos los puntos que vamos a ver:
1. Instalación de Raspbian o Noobs
Si estás empezando a trastear tu Raspberry y aún no has instalado el sistema operativo (SO) no te preocupes. Si estás familiarizado con los sistemas Linux te recomiendo descargar Raspbian frente a Noobs desde la web oficial en su sección de descargas. También puedes seguir el manual de instalación que aparece en la web oficial para instalar el SO. Es muy sencillo y se hace en apenas unos pocos pasos.
En la web de descargas habrás visto que hay más sistemas operativos. Estos suelen estar destinados para propósitos más específicos. Por ejemplo, OSMC está destinado para desplegar un media center o servidor de contenidos multimedia en red. Otro SO es Windows 10 IoT core, que no es el Windows común de escritorio con Office y un navegador sino que es una versión específica para sistemas embebidos. Por último, si sueles trabajar con Ubuntu, quizás te hayas visto tentado a elegir una de sus dos alternativas, Ubuntu Mate y Snappy Ubuntu Core, . Sin embargo, como experiencia personal debo advertir que pueden ser menos estables y dan más problemas que Raspbian.
2. La primera configuración de tu Raspberry
En la siguiente imagen se puede ver un menú con algunas opciones de configuración. Aquí se explicarán todas las opciones necesarias en una primera configuración y las destinadas a hacer más segura tu Raspberry Pi. Puedes consultar la documentación oficial de Raspberry para el resto de opciones donde explican brevemente para qué sirve cada selección.
Se puede acceder a la configuración del menú en cualquier momento aplicando el siguiente comando:
sudo raspi-config
Y este será el resultado:
Expandir el sistema de ficheros
Una vez instalado Raspbian el SO no utiliza todo el espacio disponible en la tarjeta SD. Con el siguiente comando (fuera del menú) puedes comprobar que hay varias particiones pero la suma no equivale al tamaño de la tarjeta:
sudo df -h
Esto viene bien cuando no queremos utilizar todo el espacio de la tarjeta SD para el SO. Si este no es tu caso, hay dos opciones para solucionarlo.
La primera opción
Consiste en aumentar la partición raíz (/dev/root/ que está montada en /) expandiendo el sistema de ficheros con la opción expand_rootfs/Expand Filesystem (según versión) del menú. Aparecerá un mensaje de confirmación.
El sistema de archivos se expandirá tras reiniciar la Raspberry Pi.
Con sudo df -h se puede comprobar que el tamaño de /dev/root/ ha aumentado aprovechando el resto del espacio disponible en la SD.
Este modo viene muy bien cuando no necesitas trabajar con las particiones o es una instalación desde cero. Sin embargo, para un uso más específico es posible que este modo no sea el más conveniente.
Algunos usuarios han sufrido pérdidas de datos utilizando esta opción.
La segunda opción
Para solucionar los problemas anteriores es posible redimensionar las particiones manualmente con los comandos de Linux (sin las opciones del menú).
IMPORTANTE: No se perderán los datos que hay en la partición. Se cambia la tabla de particiones con un tamaño más grande pero no se borra ningún dato.
Vamos a modificar la tabla de particiones para indicar el nuevo tamaño de la partición donde están todos los archivos del SO. Esta tabla de particiones indica de forma física de qué sector a qué sector de la tarjeta SD (o disco duro) va a ocupar la partición. Con el comando fdisk indicamos el «disco» que queremos modificar, en nuestro caso es /dev/mmcblk0:
sudo fdisk /dev/mmcblk0
NOTA: Para la redimensión de la partición, en este caso, no se hace para /dev/root sino /dev/mmcblk0p1 y se puede comprobar el nombre con el comando sudo df -h. En la última línea aparece la entrada /dev/mmcblk0p1, esto indica que para la ruta montada /boot se está usando la partición primaria número 1 (p1) del disco /dev/mmcblk0.
Dentro de fdisk debemos ejecutar los siguientes comandos.
No importa si te equivocas en los pasos intermedios, sólo se aplican los cambios en el último paso de fdisk. Puedes empezar de nuevo pulsando Control + C.
- Comprobar el número de particiones
Con la p minúscula podemos ver que hay dos particiones primarias, /dev/mmcblk0p1 y /dev/mmcblk0p2.
p
Este paso es importante para asegurarnos de que elegimos la partición correcta. La primera partición (/dev/mmcblk0p1) debe ser la partición de intercambio o swap y la segunda la partición principal. Es fácil distinguirlas porque la primera tiene un tamaño muy reducido (de unos megas) y usa el formato W95 FAT32 mientras que la segunda partición es mucho más grande y en la columna Type indica Linux.
- Borrar partición principal
Con d se indica que queremos eliminar una partición. Después hay que elegir qué partición borrar. Hay que borrar la partición principal, en nuestro caso la 2. Este paso es importante hacerlo bien porque al crear la nueva entrada de particiones, debe coincidir el sector de inicio con el de la partición que vamos a borrar. Para más seguridad puedes apuntar el valor de la columna Start que aparece al ejecutar el comando p en la partición principal, ese es el sector de inicio que debemos indicar más adelante.
El sector de inicio (columna Start) de la partición a borrar debe coincidir con el sector de inicio de la partición a crear en el siguiente paso.
d 1
- Crear una nueva partición
Como se comentaba al principio, realmente no se borran datos. Los siguientes comandos crean una nueva entrada en la tabla de particiones sin modificar ni borrar datos. A continuación, se crea una nueva partición (n), se indica que es una partición de tipo primaria (p) y se indica que será la partición número 2. Elegimos 2 y no otro porque la partición borrada estaba en la segunda posición y debe mantenerse en la misma.
n p 2
Ahora la terminal debe preguntar el sector de inicio. Aquí debemos poner el mismo que hemos apuntado. En ocasiones es posible que ese valor ya aparezca como valor por defecto en la pregunta. Si no es así, lo introducimos manualmente.
En la siguiente pregunta solicita el sector de fin. Aquí hay que elegir el valor más alto del rango que ofrece si queremos ocupar todo el espacio libre. En caso contrario, debemos jugar con el número de sectores para elegir el tamaño que queremos destinar a Raspbian. Teniendo en cuenta que cada sector ocupa 4KB, sólo hay que hacer una división del tamaño que queremos asignar respecto a un bloque de 4KB y obtenemos el número de sectores necesarios.
- Guardar los cambios
Antes de hacer este paso debemos estar seguros de que lo hemos hecho bien. El siguiente comando guarda los cambios y una vez ejecutado no se pueden deshacer.
w
Una vez ejecutado aparecerá un error. Esto es normal, indica que hasta que no se reinicie el equipo los cambios no serán visibles.
Reiniciamos Linux con sudo reboot.
- Paso final: Cambiar el tamaño del sistema de ficheros
Por último, si aplicamos sudo df -h veremos que aún no ha aumentado el tamaño de /dev/root. Esto se soluciona con el siguiente comando:
sudo resize2fs /dev/mmcblk0p2
Ya tenemos tenemos Raspbian preparado con el tamaño indicado en los sectores indicados.
Seleccionar el idioma del teclado
Si vas a trabajar por SSH o remoto este paso es prescindible. En cambio, si quieres trabajar con un teclado conectado a la Raspberry Pi debes saber que Raspbian está configurado por defecto con idioma y teclado inglés. Esto significa que por muy bien que controles el inglés, no podrás saltarte este paso.
La configuración es tan sencilla como seleccionar la opción configure_keyboard del menú y seguir los pasos. En pocas ventanas solicitará que pulses uno de los caracteres que te ofrece hasta conseguir detectar qué tipo de teclado está conectado.
Cambiar la contraseña del usuario Pi
Parece una tontería y lo es. Sin embargo, mucha gente salta este apartado por comodidad. Si eres de esos, probablemente tu Raspberry formará parte de ataques DDoS y se hará famosa en la televisión.
Bromas aparte, utiliza la opción change_pass y cambia la contraseña por una mucho más robusta. Un asistente te guiará en el proceso.
Ya que este apartado se me queda tan corto, pondré algunos ejemplos para hacer contraseñas originales y, sobretodo, seguras:
- Los ataques con fuerza bruta no suelen tener en cuenta las faltas de ortografía. Pero asegúrate de que la palabra está mal escrita. Por ejemplo, si piensas en una vaca y escribes baca pensando que está mal escrita te llevarás un bofetón cultural ortográfico al ver que existe. Estos ataques de fuerza bruta usan las palabras del diccionario. Por tanto, evita usar palabras del diccionario.
- No pienses en palabras sino en movimientos. Puedes aprovechar la disposición del teclado para hacer contraseñas, aunque será un problema si debes escribir en distintos teclados.
- Crea acrónimos de frases que puedas recordar fácilmente. Por ejemplo, cvsd.vcddc: «Cerveza+vino sienta divino. Vino+cerveza dolor de cabeza». Eso sí, evita usar los más típicos y famosos como OMG, WTF o MILF.
- Para crear contraseñas robustas os aconsejamos alternar minúsculas, mayúsculas y símbolos especiales.
- No usar contraseñas de menos de 8 caracteres
- Y por lo que más queráis: No escribáis la contraseña en un papel al lado de la Raspberry.
Cambiar el nombre del usuario Pi
Todo sistema raspbian tiene por defecto el usuario Pi. Eso quiere decir que solo es necesario averiguar la contraseña para entrar. En cambio, si no se conoce ni el usuario ni la clave será aún más complicado poder entrar.
No es posible cambiar el nombre de usuario al usuario que estamos usando actualmente, debemos hacerlo con otro distinto a Pi. Para hacer eso debemos habilitar el usuario root. Este usuario, por defecto, viene deshabilitado por seguridad. Así que se habilitará para cambiar el nombre al usuario y se volverá a deshabilitar. A continuación, se detallan los pasos a seguir:
- Habilitar usuario root. Para ello sólo hay que asignarle una contraseña y se habilitará automáticamente (Recuerda que hasta ahora podías acceder con sudo su sin necesidad de poner clave):
sudo passwd root
Tras ejecutar el comando se solicitará una nueva contraseña para root.
- Habilitar root para SSH. Lo más normal es que accedas a tu Raspi por SSH, si no es así puedes saltarte este paso.
Se modifica el fichero /etc/ssh/sshd_config para permitir el acceso a root:sudo nano /etc/ssh/sshd_config
Ahora se comenta la línea que empieza por PermitRootLogin (ya que más adelante habrá que dejarla como estaba) y se añade esta otra línea:
PermitRootLogin yes
- Acceder como root y cambiar «pi» por el nuevo usuario. Ahora que root está habilitado debemos de cerrar todas las sesiones abiertas con pi y acceder de nuevo como root. Ahora se ejecuta este comando:
usermod -l quevieneipv6 pi -md /home/quevieneipv6
Con ese comando se renombra el usuario a «quevieneipv6» (esto lo hace -l) y se mueve todo el contenido de la carpeta personal de pi a la carpeta de quevieneipv6 (-md).
Cambiar el nombre a la carpeta personal puede afectar a configuraciones que apuntan a /home/pi. Recuerda cambiarlas a la nueva ruta.
- Cambiar el grupo de quevieneipv6. Ahora que todos los ficheros y carpetas tienen el nuevo usuario debemos hacer lo mismo con el grupo:
groupmod -n quevieneipv6 pi
Ya podemos cerrar la sesión y acceder con el nuevo usuario quevieneipv6 y la contraseña que tenía asignada Pi.
- Deshabilitar el usuario root de nuevo. Una vez hemos accedido de nuevo a nuestras Raspberry y vemos que todo está como debería, podemos desactivar el usuario root. Para ello debemos eliminar la clave asignada con el comando:
sudo passwd -l root
Y por último, si has seguido el punto 2, modificar el fichero /etc/ssh/sshd_config para descomentar la línea y dejar el fichero como estaba.
Ahora tu Raspberry Pi es un poco más segura.
Habilitar SSH para acceder desde otro equipo
Esta opción es muy utilizada y generalmente la más cómoda. Puedes tener tu equipo conectado a la red o a internet y manejarlo remotamente desde tu propio PC sin necesidad de estar físicamente con la Raspberry.
La forma más rápida y sencilla de habilitar SSH es con la opción ssh del menú de raspi-config. Esta opción puede estar en dos lugares según la versión del menú de configuración. La habilitación de SSH puede estar en Interfacing Options o Advanced Options. Una vez seleccionada sólo hay que aceptar la activación.
Es importante advertir que habilitar esta opción supone otra nueva vía susceptible de ser atacada desde internet. Más adelante veremos que es posible eliminar o disminuir los riesgos con ip tables.
Deshabilitar otros accesos remotos
Además de SSH, hay otras formas de acceder a la Raspberry Pi. Una de ellas es por VNC para entornos gráficos y la otra alternativa es acceder de forma remota a los pines GPIO. Es importante asegurarse de que estas opciones están deshabilitadas si no se les va a dar uso. Al igual que ocurría con SSH, la desactivación del acceso remoto por VNC y pines GPIO también puede aparecer en Interfacing Options o Advanced Options.
Y hasta aquí llega la primera parte para configurar adecuadamente tu Raspberry Pi. En el siguiente artículo habrá un enfoque más centrado en la seguridad con IP Tables, monitorización de la red y algunos consejos tan obvios como necesarios.
Estudiante de Ingeniería Informática en la Universidad de Murcia. Enfocando mis conocimientos al mundo de las redes e Internet of Things.
Siempre informado del mundo del desarollo web, social media y marketing digital.
Excelente artículo, gracias!!!!
Pingback: Configurar Raspbian por primera vez en Raspberry Pi 3 con seguridad (Parte II) - ¡Que viene IPv6!