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 ethnodePresione 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.
Imprima la cadena de clave pública SSH y cópiela. En su computadora portátil, ejecute:
cat ~/.ssh/id_ed25519.pubVerá un resultado similar al siguiente:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBKRXS4XpZoBcuqvXVN2sRNNolKL+ZHy2Xnzx27Op3uY ethnodeAcceda por SSH a su NUC e ingrese su contraseña cuando se le solicite:
ssh <username>@<node_IP_address> -vCree manualmente el archivo de clave SSH autorizado.
sudo mkdir -p ~/.ssh
sudo nano ~/.ssh/authorized_keysPegue la cadena de clave pública SSH copiada en el archivo authorized_keys y presione CTRL + O, enter, CTRL + X para guardar el archivo y salir.
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_configBusque 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).Descomentar
#AuthorizedKeysFilesi está comentado (quitando el#que está delante)Cambiar
KbdInteractiveAuthentication yesaKbdInteractiveAuthentication noy descomentar (quitando el#que está delante)Cambiar
PasswordAuthentication yesaPasswordAuthentication noy descomentar (quitando el#que está delante)Cambiar
#PermitRootLogin prohibit-passwordaPermitRootLogin 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 sshdAhora 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 -vConfigurar 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 DivaCon 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 numberedDeberí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 fail2banAbra el archivo de configuración:
sudo nano /etc/fail2ban/jail.d/ssh.localAgregue 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 = 5Una vez que haya terminado, guarde y salga con Ctrl+Oy Enter, luego Ctrl+X.
Por último, reinicie el servicio:
sudo systemctl restart fail2banHabilitar 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-upgradesAgregue 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-upgradesRevise los registros para ver si hay advertencias:
sudo cat /var/log/unattended-upgrades/unattended-upgrades.logSi 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, stoppingSi su dispositivo está conectado a una fuente de alimentación, modifique el archivo 50unattended-upgrades directamente.
sudo nano /etc/apt/apt.conf.d/50unattended-upgradesBusque la siguiente línea y descomentela quitando el prefijo //.
// Unattended-Upgrade::OnlyOnACPower "false";Last updated