Una recomendación mínima para contar con un login más seguro consiste en deshabilitar la posibilidad de ingresar directamente con el usuario root, crear un nuevo usuario con su respectiva clave .pem y no usar el puerto por defecto para la conexión SSH.
De hecho lo mejor sería, en caso de que varias personas necesiten realizar tareas en el server, que cada uno tenga su respectivo usuario y contraseña.
En muchas ocasiones lo usual, luego de contratar un VPS, Cloud Server o dedicado, es que el mismo solo proporcione acceso root.
Por lo que la primera tarea consistirá en crear un nuevo usuario, que será el que luego se usará para conectarse por SSH.
Crear un nuevo usuario
Bien, ahora crearemos un nuevo usuario, en este caso el mismo será una sucesión de letras minúsculas al azar (puede usar nuestro generador de contraseñas para dicho propósito).
Podriamos usar jazmin, juan, lucrecia, pepe, pero esta bueno hacer las cosas un poco más difíciles para quien quiera entrar probando nombres al azar.
Para eso bastará con usar el comando:
# adduser njisxyoifwrkttwabyfx
En los nombres de usuario, por defecto no se permiten mayúsculas o símbolos, por cuestiones relacionadas al sistema de directorio (por ej si se crea la carpeta del mismo dentro /home/) o a scripts del sistema o propios que operen con nombres de usuario.
Luego de ejecutar dicho comando, el sistema te pedirá el ingreso de una nueva contraseña, en este caso se permite tanto mayúsculas, minúsculas y una gran cantidad de símbolos, por lo que podemos ser creativos.
Luego nos pide información básica de contacto, esto lo podremos dejar vacío o completar con cualquier cosa.
En este momento podemos intentar ingresar con:
$ ssh njisxyoifwrkttwabyfx@IP_server -p MI_PUERTO
Modificar el archivo de configuración del servidor SSH
Con el editor Nano, se modificará el siguiente archivo:
# nano /etc/ssh/sshd_config
Deberemos buscar las lineas
Port 22 - Modificar el puerto por defecto
PermitRootLogin no
X11Forwarding no
PermitEmptyPasswords no
AllowUsers njisxyoifwrkttwabyfx - Para solo permitir el ingreso del usuario
Estas son las configuraciones mínimas, luego dependiendo el caso se pueden modificar otras opciones.
Guardamos y pasamos al siguiente paso.
Actualizar reglas del Firewall
Se asume que usa ufw como firewall, por lo que el primer paso será cerrar el puerto por defecto:
# ufw deny 22
Luego abrir el nuevo puerto asignado:
# ufw allow puerto_elegido_enconfiguracion
Puede comprobar las reglas actuales con:
# ufw status
Reiniciar servidor SSH
Debe usar el comando:
# service sshd restart
Y reiniciar el firewall con:
# service ufw restart
Si todo va bien, ya deberíamos poder logearnos con el nuevo usuario creado.
También se podría comprobar que ya no sea posible conectarse con el usuario root.
Ahora el siguiente paso es la creación de la clave .pem.
Crear clave .pem
En el server comprobamos que exista el directorio .ssh dentro del home del usuario, la forma más rapida es intentar crear el mismo y ver que pasa o usar ls.
# mkdir /home/njisxyoifwrkttwab/.ssh
# chown -R njisxyoifwrkttwab:njisxyoifwrkttwab /home/njisxyoifwrkttwab/.ssh
En nuestra computadora, usaremos el siguiente comando:
$ ssh-keygen -t rsa -b 4096
Pedirá el nombre para el archivo, este puede ser cualquiera, por ej pepa.
Nos pedirá definir una contraseña para el mismo (se recomienda definir una), que puede ser igual o diferente a la contraseña asociada al usuario.
Luego nos creará la clave privada y la pública, la privada la usaremos para iniciar sesión, la pública deberemos copiarla al directorio .ssh del usuario, por lo que podemos usar el comando scp, por ej:
$ scp -P puerto_elegido_enconfiguracion pepa.pub njisxyoifwrkttwab@ip_server:/home/njisxyoifwrkttwab/.ssh/pepa.pub
Ahora ya se puede hacer la prueba de conexión con la nueva clave:
$ ssh -i pepa njisxyoifwrkttwab@IP_server -p PUERTO_ELEGIDO
Y nos pedirá la contraseña que definimos al crear la clave
¡Bien, eso es todo!