Seguridad básica para servidor VPS
Cuando se tiene un servidor VPS disponible a Internet es necesario tomar algunas medidas de seguridad básicas para no ser hackeados fácilmente. En el siguiente post se describen los pasos para realizar estas configuraciones básicas.
Agregar usuario diferente de root.
useradd -m myusuario
# Para establecer la contraseña del usuario root.
passwd myusuario
Agregar alias ssh en la PC personal y subir llave ssh.
Este paso se realiza en nuestra PC.
El paso de agregar el alias es opcional pero muy cómodo.
Editar el fichero /home/myusuario/.ssh/config
vim /home/myusuario/.ssh/config
y agregar la siguiente línea.
# Letra i para editar en vim.
Host miservidor
HostName tu-ip
User root
Port 22
# Teclas esc y :wq para salir y guardar en vim.
Cambiar los valores de myusuario y miservidor por sus correspondientes valores.
Para subir la llave ssh desde la PC local usar el siguiente comando.
ssh-copy-id myusuario@miservidor
Esto permite poder realizar la conexión ssh de sin utilizar contraseña.
Configurar SSH.
Para realizar las configuraciones del servidor ssh es necesario conectarse vía ssh al servidor.
ssh miservidor
Ya dentro del servidor se edita el fichero /etc/ssh/sshd_config
.
vim /etc/ssh/sshd_config
En este fichero es necesario realizar varios cambios.
- Cambiar la línea Port por el puerto seleccionado, este debe estar entre 1024 y 65535 tener en cuenta que no esté siendo utilizado por otro servicio.
- Para quitar la opción que permite al usuario root conectarse vía ssh, busca la línea que comienza con PermitRootLogin, y cambia el valor de “yes” a “no”.
- En este fichero hay varias configuraciones que se pueden cambiar para mejorar la seguridad, todo depende de hasta que nivel se quiera llegar.
Después de guardar los cambios realizados, reiniciar el servicio ssh.
service ssh restart
Después de realizada esta configuración es necesario ir al paso Agregar alias ssh en la PC personal y subir llave ssh. y cambiar el puerto de la configuración del alias.
Cambiar contraseña del root.
Para cambiar la contraseña de root del servidor es necesario conectarse via ssh al servidor
# Conectarse vía ssh al servidor.
ssh miservidor
Ejecutar el siguiente comando y seguir las instrucciones, es importante generar una contraseña segura y guardarla en un lugar seguro.
# Cambiar contraseña del root
passwd root
Enviar notificación a un canal de Telegram cuando se accede vía ssh.
En este caso se usa Telegram, pero se puede configurar con el sistema que se desee.
Primero crear un bot de Telegram con BotFather y copiar el token. Después hay que obtener el ID del Grupo o Canal a donde se van a enviar las alertas. Esto se puede hacer fácilmente con la versión web de Telegram. Al entrar en el Grupo o Canal en la URL se muestra el ID con el siguiente formato https://web.telegram.org/a/#-XXXXXXXXXXX.
Teniendo estos datos se puede agregar el siguiente fichero en el servidor /usr/local/bin/notify
.
#!/bin/bash
CHAT_ID=-XXXXXXXXXXX
BOT_TOKEN=XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
IP=$(echo $SSH_CLIENT|awk '{print $1}')
silent="true"
MESSAGE="
A user signed into your server TuServidor through SSH.
-------------------------------------------
Username: ${USER}@$(hostname -f)
IP Address: $IP"
curl -s --data-urlencode "text=${MESSAGE}" --data "chat_id=${CHAT_ID}" --data "parse_mode=HTML" --data "disable_notification=$silent" 'https://api.telegram.org/bot'${BOT_TOKEN}'/sendMessage' > /dev/null
Después se deben realizar los siguientes pasos:
- Asignar permisos al script de notificaciones
chmod +x /usr/local/bin/notify
- Editar el fichero /usr/local/bin/notify
vim /etc/profile
y agregar las siguientes líneas.
if [ -n "$SSH_CLIENT" ]; then
/usr/local/bin/notify
fi
Con estos pasos realizados cuando se abre una conexión ssh al servidor se envía un mensaje al canal de Telegram.