Configuración de seguridad a nivel del dispositivo

Configurar el acceso remoto a través de un par de claves SSH

Generar un par de claves SSH

En su máquina cliente (por ejemplo, una computadora portátil en funcionamiento), abra su terminal (Mac) o Windows Powershell (Windows) y ejecute:

ssh-keygen -t ed25519 -C ethnode

Presione Enter y establezca una contraseña para cifrar su clave privada SSH.

Resultado esperado:

Agregue una clave pública SSH a su nodo

Mientras que la parte de clave privada del par de claves SSH permanece en su computadora portátil en funcionamiento, necesitaremos agregar la parte de clave pública a su nodo.

En su computadora portátil en funcionamiento, ejecute:

ssh-copy-id -i ~/.ssh/id_ed25519.pub <username>@<node_IP_address>

Ingrese la contraseña de su dispositivo NUC cuando se le solicite.

Cambiar el puerto SSH y deshabilitar el inicio de sesión remoto con contraseña

Puede dificultar el acceso de los atacantes a su nodo cambiando su puerto SSH del puerto predeterminado 22.

Seleccione un número de puerto entre 1024 y 49151 y verifique que no esté en uso ejecutando

sudo ss -tulpn | grep <Chosen_SSH_Port_Number>

Resultado esperado: Nada. Es decir, si no hay salida, significa que el puerto elegido está libre para su uso.

A continuación, cambiaremos su número de puerto SSH y deshabilitaremos el inicio de sesión remoto con contraseña simultáneamente.

Ejecute el siguiente comando para abrir el archivo de configuración del servidor SSH.

sudo nano /etc/ssh/sshd_config
  1. Busque la línea Port 22en el archivo. Cámbiela por el número de puerto que haya elegido y luego elimine el comentario de la línea eliminando el #prefijo (si existe).

  2. Descomentar #AuthorizedKeysFilesi está comentado (quitando el #que está delante)

  3. Cambiar KbdInteractiveAuthentication yes a KbdInteractiveAuthentication no y descomentar (quitando el #que está delante)

  4. Cambiar PasswordAuthentication yes a PasswordAuthentication no y descomentar (quitando el #que está delante)

  5. Cambiar #PermitRootLogin prohibit-password a PermitRootLogin no, eliminando el #prefijo

Una vez que haya terminado, guarde con Ctrl+Oy Enter, luego salga con Ctrl+X.

Ahora reiniciamos el servidor SSH para que registre la nueva configuración:

sudo systemctl restart sshd

Ahora solo podrá acceder a su nodo de forma remota utilizando su clave privada SSH. El comando para su conexión SSH se modificará ligeramente con respecto a lo anterior:

ssh <username>@<node_IP_address> -p <new_port_no.> -i .ssh/id_ed25519 -v

Configurar las reglas del firewall

Las reglas básicas que implementaremos son las siguientes:

  1. Denegar todo el tráfico entrante de forma predeterminada

  2. Permitir todo el tráfico saliente de forma predeterminada

  3. Permitir el tráfico entrante a través del puerto <your_chosen_SSH_port> para acceso SSH

  4. Permitir el tráfico entrante a través del puerto 30303 y 30304 para que los clientes de ejecución se conecten con otros nodos

  5. Permitir el tráfico entrante a través del puerto 9000 y 9001 para que los clientes de consenso se conecten con otros nodos

  6. Permitir el tráfico entrante a través del puerto 3000 y 3001 para que Grafana muestre paneles de monitoreo para su nodo

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow <your_chosen_SSH_port>/tcp
sudo ufw allow 30303 # for the EL via Diva
sudo ufw allow 30304 # for the native EL 
sudo ufw allow 9000 # for the CL via Diva
sudo ufw allow 9001 # for the native CL
sudo ufw allow 3000 # for the native Grafana
sudo ufw allow 3001 # for Grafana via Diva

Con estas configuraciones establecidas, habrás bloqueado todas las posibles aberturas, excepto cuatro, para que los atacantes potenciales puedan entrar.

  • Los puertos 30303 y 9000 serán utilizados por Nethermind y Teku. Crearemos cuentas de usuario dedicadas con acceso root deshabilitado para estos servicios.

  • El puerto 3000 solo es accesible dentro de su red de área local (es decir, no está expuesto a Internet público).

  • El puerto SSH elegido está protegido por su clave privada SSH, por lo que es prácticamente imposible forzar el acceso.

Activar el firewall

Ahora activemos el firewall y verifiquemos nuestras configuraciones antes de continuar.

sudo ufw enable
sudo ufw status numbered

Deberías ver algo similar a la captura de pantalla a continuación:

Configurar protección contra fuerza bruta

Si bien tener implementado nuestro acceso con par de claves SSH significa que un atacante necesitará 25 millones de años para probar todas las combinaciones, sigamos adelante y hagámoslo aún más difícil para ellos, limitando la cantidad de intentos por dirección IP a 5 intentos y bloqueándolos después.

Instalar el software:

sudo apt install -y fail2ban

Abra el archivo de configuración:

sudo nano /etc/fail2ban/jail.d/ssh.local

Agregue el siguiente contenido al archivo de configuración:

[sshd]
enabled = true
banaction = ufw
port = <your_chosen_SSH_port>
filter = sshd
logpath = %(sshd_log)s
maxretry = 5

Una vez que haya terminado, guarde y salga con Ctrl+Oy Enter, luego Ctrl+X.

Por último, reinicie el servicio:

sudo systemctl restart fail2ban

Habilitar actualizaciones de seguridad automáticas

sudo apt update
sudo apt install -y unattended-upgrades update-notifier-common
sudo nano /etc/apt/apt.conf.d/20auto-upgrades

Agregue el siguiente contenido al archivo de configuración:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

Una vez que haya terminado, guarde y salga con Ctrl+Oy Enter, luego Ctrl+X.

Por último, reinicie el servicio:

sudo systemctl restart unattended-upgrades

Revise los registros para ver si hay advertencias:

sudo cat /var/log/unattended-upgrades/unattended-upgrades.log

Si ve las siguientes advertencias, continúe con el siguiente paso.

2024-02-01 04:48:24,012 WARNING System is on battery power, stopping
2024-02-01 06:19:01,972 WARNING System is on battery power, stopping
2024-02-01 17:53:48,650 WARNING System is on battery power, stopping

Si su dispositivo está conectado a una fuente de alimentación, modifique el archivo 50unattended-upgrades directamente.

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Busque la siguiente línea y descomentela quitando el prefijo //.

// Unattended-Upgrade::OnlyOnACPower "false";

Last updated