Hola muy buenas, Bienvenidos a Aprende Web Dev.
En este articulo, te voy a enseñar unas pautas para que puedas asegurar tu servidor, tu VPS. Concretamente te voy a dar 6 Claves para proteger tu Servidor.
Estas cosas que te voy a decir son cosas que me han servido y que veo impresindibles para cualquier configuración de servidor.
Para el hosting del servidor voy a estar usando Digitalocean. Si quieres conseguir un crédito de 100$ con Digitalocean, picha aqui
Dicho esto, vamos a ir desglosando 1 por 1 las claves, para conseguir mejorar la seguridad de tu servidor.
Claves Para Proteger tu servidor
1. Setup ssh: La primera clave es usar claves SSH, en vez de la contraseña tradicional. SSH es super seguro y te permite conectar con servidores remotos de una manera muy facil y segura. Para hacer las conexiones SSH, se necesitan 2 claves, la publica y la privada. La clave privada se localiza en tu ordenador, mientras que la publica se mete en el servidor remoto. Entonces cada vez que se conecta, se comprueba la clave del servidor con la clave que esta en tu ordenador. Si las claves no son correctas no te dejara acceder al servidor.
# generar clave ssh
ssh-keygen -t rsa
# Copiar la clave publica a digitalocean
cat id_rsa_secure_server.pub | pbcopy .
# actualizar servidor
sudo apt-get update
sudo apt-get upgrade
2. deshabilitar autenticación por contraseña: La segunda clave para asegurar el server, es deshabilitar la autenticación con contraseña. No queremos usar ninguna autenticacion por contraseña por la razones que hemos dicho antes. Ademas si tienes autenticacion por contraseña habilitada, te pueden hacer un ataque por fuerza bruta(Bruteforce).
cd /etc/ssh
# Cambiar las siguientes variables
PasswordAuthentication: no
ChallengeResponseAuthentication:
no usePAM: no
# actualizar la configuración
systemctl restart sshd
3. deshabilitar el root login y crear un nuevo usuario: Como los hackers ya saben que en todos los sistemas existe un usuario root, vamos a desabilitar su login y vamos a crear un nuevo usuario para nosotros.
# Crear Nuevo Usuario
adduser zeshan
# añadir al nuevo usuario al grupo de sudo
usermod -aG sudo zeshan
# copiar la clave ssh al nuevo usuario
su - zeshan
mkdir ~/.ssh
nano ~/.ssh/authorized_keys
# Cambiar configuración de ssh
cd /etc/ssh/sshd_config
# cambiar la variable PermitRootLogin
PermitRootLogin: no
# actualizar configuración
systemctl restart sshd
4. Configurar UFW: Esta clave es para habilitar un cortafuegos en el server. Este firewall te ayudara proteger tu VPS.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
# reload ufw
sudo ufw reload
5. Cambiar sysctl.conf: Esto lo que hara es, habilitar características de seguridad en nuestro servidor.
sudo nano /etc/sysctl.conf
# cambiar las siguientes variables
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.all.log_martians = 1
# ver las variables cambiadas
sudo sysctl -p
6. Configurar fail2Ban: vamos a instalar una herramienta llamada fail2Ban. Esto te detecta ataques 2Dos y si ve que esta ocurriendo algún ataque bloquea la IP. si ve que hay algun usuario malicioso, lo bloquea automáticamente.
# instalar fail2ban
sudo apt install fail2ban
# habilitamos fail2ban
sudo systemctl enable fail2ban
# iniciar fail2ban
sudo systemctl start fail2ban
# ver el estado de fail2ban
sudo systemctl status fail2ban
Siempre que implemento estas medidas de seguridad, me gusta reniciar el servidor. Esto es para verificar que todo esta bien configurado y funciona bien.
sudo reboot
Si el artículo os ha parecido interesante, no os olvidéis de echarle un ojo a mi canal de Youtube.
Si a alguien le ocurre mas cosas para la seguridad, me la podéis poner abajo en los comentarios.
Muchas gracias por vuestro tiempo. Espero que os haya sido de utilidad y nos vemos en la próxima!!