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
Busque la línea
Port 22
en 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).Descomentar
#AuthorizedKeysFile
si está comentado (quitando el#
que está delante)Cambiar
KbdInteractiveAuthentication yes
aKbdInteractiveAuthentication no
y descomentar (quitando el#
que está delante)Cambiar
PasswordAuthentication yes
aPasswordAuthentication no
y descomentar (quitando el#
que está delante)Cambiar
#PermitRootLogin prohibit-password
aPermitRootLogin no
, eliminando el#
prefijo
Una vez que haya terminado, guarde con Ctrl+O
y 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:
Denegar todo el tráfico entrante de forma predeterminada
Permitir todo el tráfico saliente de forma predeterminada
Permitir el tráfico entrante a través del puerto <your_chosen_SSH_port> para acceso SSH
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
Permitir el tráfico entrante a través del puerto 9000 y 9001 para que los clientes de consenso se conecten con otros nodos
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+O
y 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+O
y 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