63 - Asegurar tu Raspberry
Como asegurar tu Raspberry ya sea en tu casa como en una red de oficina como en una red pública. Diferentes métodos desde lo básico al modo paranoia.
No quiero que me veas como un paranoico. No se trata de eso. Las medidas que te voy a comentar en este episodio del Podcast van orientadas al caso de que tu Raspberry no esté en un entorno seguro. Si la Rasbperry la vas a tener en tu red local, en casa, probablemente ninguna de las medidas que voy a contar las necesites. O si, todo depende de lo que tu consideres. Pero, si por lo contrario, la Raspbery va a estar expuesta, va a estar en una red pública, si que deberías considerar adoptar algunas, o todas, las medidas que te voy a comentar. Así, en este episodio del podcast te voy a hablar sobre asegurar tu Rasbperry.
No, no me refiero a que contrates un seguro para tu pequeño equipo. Se trata de que la protejas de los amigos de lo ajeno. Que lo protejas tanto de humanos que quieren acceder a la misma para extraer información, como de los robots, que pululan por internet en busca de un agujero de seguridad.
Asegurar tu Raspberry
En los siguientes apartados, encontrarás diferentes soluciones para asegurar tu Raspberry, en el sentido que he comentado en la introducción. Estas soluciones para asegurar tu Rasbperry van desde lo más básico, que pienso que debemos hacer todo, hasta el modo paranoico, que en muchos casos no es necesario que adoptes. Todo es cuestión de si utilizar alguna de estas medidas te va a complicar la vida en lugar de hacértela mas fácil.
Lo más básico para Asegurar tu Raspberry
Manter la Raspberry actualizada
Dentro de las operaciones básicas para asegurar tu Rasbperry, lo mas básico e imprescindible es mantener la Rasbperry actualizada. Para ello, ejecuta frecuentemente estas acciones,
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo rpi-update
Debes prestar especial atención al paquete openssh-server
que al fin y al cabo es el que da acceso a la Raspberry.
Cambiar la contraseña
La siguiente de las operaciones básicas para asegurar tu Rasbperry, es precisamente cambiar tu contraseña de usuario e incluso cambiar al usuario por defecto. En la distribución Raspbian, por defecto, el usuario es pi
y la contraseña es rasbperry
, así que imagina lo que le puede costar a un amigo de lo ajeno acceder a tu Rasbperry en caso de que la tengas expuesta a internet… puede ser cuestión de segundos.
Para cambiar la contraseña tan solo tienes que ejecutar,
passwd
Por supuesto, luego deberás recordar la contraseña, porque de lo contrario, el remedio va a ser peor que la solución. En cualquier caso, quemar una nueva imagen de tu distribución preferida e instalarla es cuestión de unos pocos minutos. Como de costumbre el problema es la información que tengas dentro y que hayas podido perder…
Crear un nuevo usuario y borrar al usuario pi
Crear un nuevo usuario es tan sencillo como ejecutar,
sudo adduser atareao sudo
El segundo de los parámetros, sudo
, es para que tu nuevo usuario pertenezca al grupo sudo
, y por tanto pueda ejecutar esta herramienta tan fundamental para la administración de tu Rasbperry.
Para borrar al usuario utiliza la siguiente instrucción,
sudo deluser -remove-home pi
La opción -remove-home
es para que borre el directorio de inicio del usuario pi
. Si no lo haces así, tendrás su directorio de inicio ocupando un precioso espacio en tu Raspberry.
Contraseña
Si te decides por no eliminar al usuario pi
por la razón que sea, recuerda que este no tiene que introducir su contraseña cuando ejecuta sudo
. Esto está definido de esta forma por defecto por comodidad de los usuarios, pero, es un coladero para la seguridad de tu Rasbperry. Si quieres cambiar esto tienes dos opciones. O bien, editas /etc/sudoers.d/010_pi-nopasswd
cambiando a,
pi ALL=(ALL) PASSWD: ALL
O bien, directamente borra este archivo,
sudo rm /etc/sudoers.d/010_pi-nopasswd
Por último recordarte que para modificar el archivo donde están las propiedades de sudo
debes utilizar sudo visudo
. De esta forma, en caso de que cometas algún error, no guardará el archivo. Quedarte si acceso a este archivo es fatal.
El acceso vía SSH
Como ya te he adelantado anteriormente, otro de los aspectos que debes cuidar es el acceso vía SSH, que actualmente es el punto de entrada a tu Rasbperry. Así, lo primero es definir quienes de tus usuarios pueden acceder a la Raspberry. Esto lo puedes definir editando el archivo /etc/sshd_config
y modificando las líneas,
AllowUsers
Donde puedes especificar que usuarios pueden acceder vía ssh. O por el contrario, especificar que usuarios no pueden accder vía ssh.
DenyUsers
Otros parámetros a modificar son los siguientes,
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
En particular el segundo de los parámetros es para que no se pueda acceder vía ssh con contraseña. ¿Y si no puedes acceder con contraseña como lo haces? Con clave público privada.
Clave público privada
Si vas a acceder vía SSH a tu Raspberry, esta medida deberías adoptarla de las primeras. Se trata de definir una pareja de claves público privada, que te permitan acceder de forma sencilla a la Raspberry. En este caso te recomiendo que le des cun vistazo al artículo sobre sincronización sin contraseña.
Últimos detalles sobre ssh
Por último es conveniente proteger el directorio ssh en la Raspberry Pi, para ello,
chmod 700 /home/pi/.ssh
chmod 600 /home/pi/.ssh/authorized_keys
Y p ara facilitarte el trabajo con ssh, es conveniente que crees una configuración en tu equipo, que te ayude a acceder a la Rasbperry. Para ello, edita el archivo ~/.ssh/config
, y añade lo siguiente, adaptándolo a tus necesidades,
Host rpi
Hostname 192.168.1.48
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
User pi
Port 22
El cortafuegos
Para habilitar y configurar el cortafuegos, te recomiendo que le des una leída al artículo sobre como proteger ru servidor o Raspberry.
Bloquear accesos indeseables en tu Rasbperry
A pesar de todas las medidas adoptadas, es seguro que habrá quien intente acceder a tu Raspberry, ya sea humano o robot. En este caso, en el caso de que intente acceder, debemos poner los medios para bloquear estos intentos. Para ello, es posible tienes a tu disposición fail2ban
. Para instalar y configurar esta poerosa herramienta te recomiendo que leas el artículo sobre como bloquear accesos indeseables en tu servidor.
La información es poder
Si a pesar de aplicar todas las medidas anteriores todavía estás inseguro, tienes la posibilidad de que tu Raspberry te mantenga informado. Se trata de una medida complementaria de la anterior, en la que en caso de accesos indeseables te mandará un correo electrónico o otro tipo de aviso. Se trata de logwatch
. Para instalar esta herramienta tienes que ejecutar la siguiente orden,
$ sudo apt install logwatch
Para configurarla realiza una copia,
cp /usr/share/logwatch/default.conf/logwatch.conf \
/etc/logwatch/conf/logwatch.conf
Por último añade un proceso en el cron
, tal y como explico en el artículo sobre programación de tareas con cron, para que se ejecute cada cierto tiempo. Por ejemplo, para que se ejecute cada media hora,
30 0 * * * /usr/bin/logwatch
Que te avise por Telegram
Por último, si en lugar de que te avise por correo electrónico, prefieres que lo haga mediante un mensaje de Telegram, puedes utilizar este sencillo script,
#!/bin/bash
day=$(date +%Y-%m-%d)
filename=/var/cache/logwatch/$day-logwatch.txt
token=<YOUR BOT TOKEN>
chat_id=<YOUR CHAT ID>
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0
/usr/sbin/logwatch --output file --filename $filename
chmod 644 $filename
mv $filename /root/logwatch_bot/logs/
curl -F chat_id="$chat_id" -F text="$(head\
/root/logwatch_bot/logs/$day-logwatch.txt -n 9)"\
https://api.telegram.org/bot$token/sendMessage >/dev/null 2>&1
curl -F chat_id="$chat_id"\
-F document=@"/root/logwatch_bot/logs/$day-logwatch.txt"\
https://api.telegram.org/bot$token/sendDocument >/dev/null 2>&1
Conclusiones
Ya has visto, que tienes diferentes opciones para asegurar tu Raspberry. Desde el modo normal hasta el modo paranoia. Ahora depende de ti, y de donde tengas la Raspberry, para que adoptes las que consideres mas oportunas. Pero, eso si, es importante asegurar tu Raspberry.