Ir al contenido principal
Primeros pasos con un VPS
Introducción:
Es importante saber usar un VPS, al igual que lo es programar, pero una de las cosas que la gente no hace y debería darse más importancia es la seguridad que nosotros mismos creemos a nuestro VPS. Podemos tener el mejor servidor, con la mejor base de datos, con una aplicación web increíble, que si no seguimos unos sencillos pasos, cualquier "hacker" puede intentar entrar y echarlo todo por el suelo. Con este pequeño tutorial no quiero decir que nuestro VPS sea inexpugnable, si no que será más difícil que puedan entrar y que posiblemente si ven que hemos puesto medidas de seguridad, den media vuelta e intenten entrar en otro servidor que no haya tomado medidas.
Así que en este hilo veremos: lo necesario para acceder al VPS, algunas medidas de seguridad y la instalación del apache.
Preparativos:
Una vez contratado el servicio VPS y nos haya llegado la información de la IP y la contraseña del VPS.
Deberemos tener instalado en nuestra máquina el servicio ssh.
avato@machine
:
~
$ apt-get install openssh-server openssh-client
La comprobación es muy simple, intentamos conectar por servicio ssh al VPS con el comando:
ssh root@[ipVps]
Ejemplo:
ssh root@123.456.789.012
Lo primero que deberemos hacer una vez dentro del VPS, modificar la contraseña de root.
passwd
Y ya introducimos la contraseña que queramos.
Aprovechando que estamos dentro instalamos apache
apt-get install apache2
Accedemos al index.html del directorio /var/www/html y lo modificamos al gusto
nano /var/www/html/index.html
Una vez hecho esto guardamos y desde el navegador de nuestro ordenador, introducimos en la barra de búsqueda la IP de nuestro VPS, si todo ha ido bien debería salirnos el index.html que acabáis de modificar.
Vamos a seguir dándole algo de seguridad a nuestro VPS, actualizamos el sistema del VPS.
apt-get update
apt-get upgrade
Una vez actualizado, uno de los pasos más importantes es cambiar el puerto de acceso al VPS, por defecto es el 22, por lo tanto cualquiera que quiera acceder a nuestro VPS lo primero que hará es atacar dicho puerto, cambiándolo conseguimos que le sea más difícil saber que puerto usamos.
nano /etc/ssh/sshd_config
Modificamos la linea que pone Port: 22.
NOTA*: Hay algunos puertos reservados, antes de elegir uno, intenta que no esté en uso. Puedes comprobarlo en el siguiente enlace.
Una vez modificado el puerto, deberemos reiniciar el servicio ssh.
/etc/init.d/ssh restart
Cerramos la conexión con el VPS e intentamos volverla a lanzar, si nos fijamos ahora el comando:
ssh root@123.456.789.012
Ya no nos sirve, porque debemos especificarle el puerto por el que vamos a establecer la conexión.
ssh root@[ipVps] -p [numPuerto]
Ejemplo:
ssh root@123.456.789.012 -p 1000
Con la opción -p del ssh, le estamos pasando el numero del puerto que previamente hemos seleccionado.
Otra de las medidas de seguridad que podiamos introducir es la de crear un usuario con permisos restringidos y acceder al sistema con permisos root.
adduser [nombreUsuario]
Ahora si queremos podremos entrar al VPS con el nuevo usuario solo deberemos sustitutir root por el nombre de usuario.
Ejemplo:
ssh avato@123.456.789.012 -p 1000
Una vez hecho todo lo anterior, vamos a desactivar el superusuario(root).
Entramos al VPS con el nuevo usuario creado y tenemos dos opciones:
- Darle poderes al usuario normal como superusuario.
- O usar los permisos de root con el comando "sudo".
Dar poderes al usuario: para ello deberemos modificar el archivo /etc/sudoers.
sudo nano /etc/sudoers
NOTA*:Hay que tener mucho cuidado al modificar dicho archivo, ya que un error de sintaxis podría dejar al sistema sin usuario root.
Usar permisos de root: si elegimos esta opción, no tendremos que hacer nada, solo que antes de ejecutar cualquier comando que requiera de permisos de root deberemos introducir delante sudo.
Una vez elegido lo que queramos hacer, una medida de seguridad más, será desactivar el acceso root al VPS
Para ello introducimos el siguiente comando:
nano /etc/ssh/sshd_config
Y modificamos la linea que pone PermitRootLogin no, antes debería estar puesta yes por defecto.
Reiniciamos el servicio de nuevo.
/etc/init.d/ssh restart
Resumen:
Hemos:
-
Modificado la contraseña de root: Esto evita que sea una contraseña que se auto genere por el sistema, aparte de que tu no tienes que recordar una contraseña sin sentido.
-
Modificado el puerto: Con esto evitamos que con un simple ataque al puerto 22, nos puedan entrar, ya que ahora deben saber desde que puerto accedemos.
- Creado un usuario: Esto realmente así de simple no evita nada, pero si le implementamos más cosas podemos sacarle provecho
- Dado poderes al usuario: Le hemos dado poderes de root al usuario.
- Desactivado el usuario root: Ahora los dos pasos de antes tienen sentido, ahora solo podemos acceder al VPS con este usuario, por lo tanto quien intente entrar debe saber el nombre del usuario.
¿Qué conseguimos?: Si no hacemos ningún cambio en nuestro VPS, el que intente entrar ya tiene mucha información, cómo puede ser el número del puerto y el usuario con el que accede. Si genera un bot que vaya probando más tarde o más temprano va a conseguir entrar, con estos pequeños pasos evitamos que le sea tan fácil y que por lo menos el que entre en nuestro VPS se lo merezca porque se lo ha currado.
Fail2ban:
Todo lo que hemos hecho ya son unas medidas que pueden estar bien, pero para todos aquellos que aún no estén tranquilos, podemos ir un paso más allá, instalando y configurando el file2ban en el VPS.
apt-get install fail2ban
Vamos a modificar el archivo de configuración del fail2ban, así que por precaución deberíamos hacer una copia de seguridad del archivo
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.backup
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.conf.backup
Una vez tomadas las medidas necesarias, procedemos a modificar el fail2ban.conf.
De este archivo nos interesa el loglevel, podemos configurarlo a nuestro gusto si queremos que nos de más información de los logs o no. Y el logtarget que es la ruta donde se guardarán los logs.
Pasamos al archivo jail.conf (recordad la ruta /etc/fail2ban/), aquí tenemos más variedad:
- maxretry: Número máximos de intentos antes del baneo.
- bantime: El tiempo que esta IP estará baneada, por defecto está a 10 minutos, un detalle importante esque si ponemos -1, el baneo será permanente.
- ignoreip: Aquí podemos introducir una lista de IPs que no queremos que sean baneadas aunque tengamos un dia torpe y no acertemos con la contraseña.
Hay muchas más opciones, estas son las que me han parecido más relevantes.
Aun podemos ir un paso mas allá si queremos monitorizar todo lo que sucede en nuestro VPS.
Seguimos modificando el archivo jail.conf, esta vez en el apartado Servicio de SSH.
Deberemos hacer las siguientes modificaciones:
NOTA*: recordad que si habéis modificado el puerto, en la opción de port tendréis que poner el vuestro.
Reiniciamos el servicio.
/etc/init.d/fail2ban restart
Para verificar su funcionamiento:
iptables -L
Si queremos ver un listado de los intentos de conexión:
tail -f /var/log/auth.log
Si queremos ver las IPs baneadas:
tail -f /var/log/fail2ban.log
Conclusión:
Este es un pequeño tutorial, como dije al principio, esto no hace imposible que entren en nuestro VPS, pero lo pone más difícil, hay muchas más variables que se pueden modificar y podríamos poner muchas más cosas, así que me gustaría que compartieseis conmigo vuestras experiencias. ¿Que medidas de seguridad tomas?¿Hay alguna que te parezca importante o interesante y no haya comentado? Espero vuestros comentarios.
Comentarios
Publicar un comentario