Cloud con Raspberry Pi y Time Capsule II por @DanielSanRiv

Autor: | Última modificación: 13 de marzo de 2024 | Tiempo de Lectura: 6 minutos
Temas en este post:

Cloud con Raspberry Pi: Primer arranque y configuración básica

Raspi-config

Creando nuestro cloud con Raspberry Pi. La primera vez que arranquemos el Raspberry Pi nos aparecerá una pantalla de configuración, sobre fondo azul, llamada “Raspi-config” con una serie de opciones que vamos a explicar a continuación: cloud con Raspberry Pi
  • info: Información sobre la herramienta de configuración
  • expand_rootfs: Esta opción es muy interesante si la tarjeta SD que hemos usado es de más de 2Gb, pues expandirá la partición hasta ocupar toda la capacidad de la tarjeta.
  • overscan: En el caso de que veamos bordes negros en nuestra pantalla activaremos o desactivaremos este valor para intentar hacerlos desaparecer.
  • configure_keyboard: Aquí configuraremos fácilmente nuestro teclado, en mi caso he seleccionado “Generic 105-key (Intl) pc”, Keyboard layout “Spanish” y he dejado el resto de opciones por defecto.
  • change_pass: Es muy recomendable cambiar la contraseña del usuario “pi” que por defecto es “raspberry” por otra contraseña que sólo nosotros conozcamos, para ello sólo tendréis que usar esta opción.
  • change_locate: Para poder escribir correctamente con teclados en español deberemos elegir el mapa de caracteres correspondiente, yo en este paso suelo elegir “es_ES.UTF-8 UTF-8”. En la siguiente pantalla seleccionaremos el paquete que acabamos de seleccionar como “default
  • change_timezone: En el caso de España solo tendremos que seleccionar “Europa” del primer listado y “Madrid” del segundo.
  • memory_split: Con esta opción podremos elegir cuanta memoria destinamos a la CPU y cuanta a la GPU. Para el uso que yo le voy a dar dejaré el máximo posible de memoria para la CPU “240MiB for ARM, 16MiB for VideoCore”
  • overclock: Una de las novedades de esta distribución es que nos permite aumentar la velocidad del microprocesador con un overclocking, aumentando, eso sí, el consumo eléctrico y posiblemente reduciendo la vida útil de nuestro Raspberry, tal y como nos avisan nada más acceder a esta opción. En mi caso dejaré la primera opción, pues para mi es suficiente potencia.
  • ssh: Será muy interesante activar esta opción pues podremos acceder al terminal de nuestro Raspberry desde cualquier sistema Unix gracias al comando ssh y así controlarlo remotamente, en caso de sistemas Windows existen multitud de programas gratuitos que nos permitirían acceder remotamente a nuestro raspberry como PuTTY o la extensión para Google Chrome “Secure Shell”. Si activamos esta opción también podremos acceder a nuestros archivos con el cliente FTP Fillezilla conectándonos a través del puerto 22 en vez del 21 que por defecto está asociado a FTP. Más información
  • boot_behavior: Si deseas que el entorno gráfico arranque automáticamente al encender tu Raspberry deberás activar esta opción, si no la activas tendrías que acceder con el comando de consola “startx”. Yo no lo activaré pues tengo pensado acceder por terminal para así dejar libres los máximos recursos posibles.
  • update: Comprobamos si existe alguna actualización para este programa de configuración.
Ya sólo nos quedaría reiniciar nuestro Raspberry para que los cambios surtan efecto. Si deseamos acceder a este programa de configuración en el futuro podremos hacerlo con el comando “sudo raspi-config”. Para salir del programa nos desplazaremos hasta la opción “Finish” haciendo uso de la tecla “Tab” y para reiniciar teclearemos el comando “sudo reboot”, tened en cuenta que dependiendo de las opciones de configuración que hayamos seleccionado, el próximo arranque puede tardar un poco mientras aplica todos los cambios.

Configurando la Red

La red de Raspbian por defecto funciona mediante DHCP, cosa que para hacer funcionar a nuestro Raspberry de servidor no nos sirve. Así que el siguiente paso es configurar una IP estática dentro del rango de IPs de nuestro Time Capsule. Para cambiar la configuración de red en Raspbian tendremos que modificar el archivo “/etc/network/interfaces” para que quede de la siguiente manera:

auto lo iface lo inet loopback

auto eth0

iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1

Lógicamente tendréis que cambiar los valores address (dirección IP), gatewat (puerta de enlace) y el resto de valores para que encaje en la configuración de vuestra red local. Para modificar estos archivos podréis usar el editor que más os guste, para mi el más sencillo de usar es “nano” y para modificar este archivo sólo tendríamos que escribir el siguiente comando:

sudo nano /etc/network/interfaces

Os recomiendo anular todas las líneas del archivo, poniendo al principio de cada línea una almohadilla “#” y escribir las líneas que acabamos de ver al principio del archivo, adaptando los valores a vuestra red Lan. Para guardar los cambios presionaremos Control+X, indicamos “s” cuando se nos pregunte si estamos seguros de guardar los cambios y pulsamos la tecla intro. El siguiente paso es especificar los servidores DNS en el archivo “/etc/resolv.conf

sudo nano /etc/resolv.conf y añadimos tantas direcciones de DNS como queramos con la siguiente sintaxis nameserver DirecciónIP

Finalizamos la configuración de red aplicando todos los cambios ejecutando los siguientes comandos:

sudo ifdown eth0 && sudo ifup eth0

ANTES DE CONTINUAR: Actualicemos el sistema

Lo primero que deberíamos hacer una vez hayamos finalizado la configuración básica es comprobar que todo el software está actualizado ejecutando los siguientes comandos:

sudo apt-get update

sudo apt-get upgrade (responderemos “sí” cada vez que nos pregunte si deseamos realizar la operación y esperamos a que termine de instalar todos los paquetes)

Unos consejos básicos sobre seguridad

Antes de hacer que nuestro servidor esté accesible desde internet, sería recomendable realizar un par de cambios básicos para hacer más seguro el acceso a nuestro pequeño dispositivo.

Crear un nuevo usuario de acceso

Cómo todos los Raspbian vienen por defecto con el mismo usuario y contraseña, es muy recomendable cambiar tanto el usuario como la contraseña con el que accederemos. Para ello vamos a crear un nuevo usuario y a desactivar el que viene por defecto. En este ejemplo voy a crear un usuario llamado “miusuario”, para ello sólo necesitamos ejecutar un par de comandos:

sudo useradd -m miusuario Añadimos el usuario y gracias al parámetro -m también creamos su directorio home

sudo passwd miusuario Y con esto establecemos la contraseña del nuevo usuario

Antes de poder anular el usuario “pi” que viene por defecto, vamos a necesitar agregar el usuario que acabamos de crear al archivo “sudoers” y así poder usarlo para realizar tareas que requieran privilegios, para ello editaremos el archivo “/etc/sudoers”

sudo nano /etc/sudoers

Y añadimos la siguiente línea al final del archivo:

miusuario ALL=(ALL) NOPASSWD: ALL

Para comprobar que todo ha ido bien cerraremos sesión con el comando “exit”, iniciamos sesión con el nuevo usuarios que acabamos de crear y comprobamos que nos permita ejecutar el comando “sudo -s” Finalmente vamos a anular el usuario “pi”, para ello editaremos el archivo “/etc/shadow

sudo nano /etc/shadow Y para anular el usuario sólo tendremos que buscar la línea correspondiente a dicho usuario y anularla poniendo al principio de la línea una almohadilla “#”

Conexión via SSH

Llegado a este punto es cuando desconecto el teclado y el monitor del Raspberry Pi, lo dejo únicamente conectado al cable de red y de corriente y accedo a él via SSH que a mi me resulta mucho más cómodo, además podremos copiar y pegar texto del Mac OSX al Raspberry Pi vía SSH y evitar así tener que teclear a mano todos los comandos. Para conectarnos via SSH desde Mac OSX tendremos que abrir el terminal (Aplicaciones > Utilidades > Terminal.app) y escribir:

ssh miusuario@ipDelRaspberryPi 

Para conectarnos desde un PC con Windows podemos usar la extensión para Google Chrome Secure Shell o el cliente gratuito PuTTY.

Ataques por fuerza bruta

Este tipo de ataques son muy habituales y aparecen cuando menos te lo esperas. Son realizados por programas que intentan millones de combinaciones de usuarios y contraseñas hasta lograr acceder a tu sistema y lo peor de todo es que es un método fácil de realizar y con el que sólo es cuestión de tiempo para que consigan comprometer la seguridad de tu sistema. Para protegernos de estos ataques vamos a “castigar” a todo el que intente acceder más 6 veces seguidas con un usuario o contraseña incorrecta durante 6 minutos. De esta manera en vez de miles de intentos por minuto, sólo podrán realizar una media de un intento por minuto. El método más efectivo que conozco es mediante el uso de iptables, escribiremos las siguientes líneas
sudo -s
iptables -N FUERZABRUTA_SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j FUERZABRUTA_SSH
iptables -A FUERZABRUTA_SSH -m recent --set --name SSH
iptables -A FUERZABRUTA_SSH -m recent --update --seconds 600 --hitcount 6 --name SSH -j DROP

Con los parámetros –seconds y –hitcount configuramos el número de segundos que estará baneado el cliente que realice los intentos fallidos y el número de intentos fallidos que permitiremos antes de banear al cliente respectivamente

El inconveniente de este método es que no es permanente y cuando el sistema se apague se perderán las reglas. Para hacerlo permanente vamos a guardar las reglas en un archivo con el siguiente comando:

iptables-save > /etc/reglasIptables

Pero esto no es suficiente, pues nos falta restaurar este archivo cada vez que el sistema arranque, para ello editaremos el archivo /etc/rc.local y añadimos la siguiente línea justo antes de “exit 0

iptables-restore < /etc/reglasIptables

Continuará…

Con esto ya tenemos a nuestro pequeñín preparado para salir al peligroso mundo exterior

baby-fighter

En el próximo capítulo tendremos todo listo para poder acceder a nuestro Raspberry Pi remotamente mediante SSH o el cliente FTP Fillezilla

Sobre el autor

Daniel Santamaría:
Mis primeras líneas de código las escribí en un Sony MSX, un tiempo después, con 14 años (hace mucho mucho tiempo) Pc-Manía publicó mi primer juego para MS-DOS 6.21 desarrollado en Turbo Pascal. Actualmente me gano la vida gracias a Linux, PHP, mySQL, .Net y SQL Server, pero mi sueño profesional sería ganarme la vida programado con Cocoa y Objective-C. Podéis encontrarme en twitter como @DanielSanRiv.