Vamos a ver cómo instalar y configurar un servidor SSH para mayor seguridad en el acceso de los usuarios de la máquina Linux.


 
   

 

Sitio oficial de Open SSH: https://www.openssh.com/

 

 

 


 

 

1. Para qué un servidor SSH

 
Por seguridad. SSH es más difícil de interceptar que una comunicación sin cifrar. Además SSH puede utilizar pares de clave pública y privada.
 

 

2. SSH Servidor y SSH Cliente

 
Hemos de diferenciar entre el servidor y el cliente SSH.
 
SERVIDOR SSH:

  • En Linux, podremos instalar Open SSH.

 

CLIENTE SSH:

Como cliente SSH en Windows podemos utilizar el famoso PuTTY. Y en Linux conectaremos directamente por terminal.

 

 

 

3. Instalación de Servidor SSH (con Open SSH)

 
Comenzamos instalando Open SSH Server

dependiendo de la distro Linux usaremos:

1
apt-get install openssh-server

o

1
apt install openssh-server

 

 
Tras la instalación, debemos revisar el archivo de configuración del servidor SSH y modificaremos las directivas activadas, el puerto de escucha, los usuarios que deseamos que puedan acceder por SSH …
 

 

3.1 ARCHIVO DE CONFIGURACIÓN DE SERVIDOR OPEN SSH

 
El archivo de configuración principal del servidor SSH es el archivo sshd_config


 

 

3.2 CONFIGURAR ARCHIVO sshd_config

 
Vemos el contenido del archivo sshd_config por defecto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Package generated configuration file
# See the sshd_config(5) manpage for details
 
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
 
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
 
# Logging
SyslogFacility AUTH
LogLevel INFO
 
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
 
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
 
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
 
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
 
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
 
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes
 
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
 
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
 
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
 
#MaxStartups 10:30:60
#Banner /etc/issue.net
 
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
 
Subsystem sftp /usr/lib/openssh/sftp-server
 
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

 

 

El resto del archivo sshd_config:

 

 

4. DIRECTIVAS SSH INTERESANTES Y ÚTILES

 

4.1 Directiva AuthorizedKeysFile (directorio donde configurar los hosts y claves autorizadas)

 
El directorio donde se encuentran los hosts conocidos y las claves almacenadas, es:

/home/usuario/.ssh/
 

Podemos verlo en el archivo de configuración del server SSH: /home/usuario/.ssh/

SSH | PubkeyAuthentication AuthorizedKeysFile
 
En el archivo de configuración aparecerá por defecto: %h/.ssh/authorized_keys

que significa la home del usuario/.ssh/authorized_keys
 

Y concretamente en el archivo authorized_keys se encuentran las claves públicas y el hostname de cada uno de los hosts que tienen permitido el acceso al Server OpenSSH:
 

 

 

4.2 Generación de claves SSH

 

Lo podemos ver en el post sobre clave pública/privada de SSH

 

 

4.3 Directivas SSH para denegar acceso usuarios/grupos

 
Ya hablamos de estas directivas en el post: Permisos usuarios y grupos SSH Server

DenyUsers: Permite especificar usuarios a los que deseamos denegar el acceso SSH.

DenyGroups : Permite especificar grupos de usuarios a los que deseamos denegar el acceso SSH.
 

 

4.4 Opciones Conexión SSH

 

1
ssh -p puerto usuario@IP  permite especificar el puerto al que nos conectaremos por SSH

 

 

4.5 Comandos para gestionar el servicio de servidor SSH

 

  • Iniciar el servidor SSH
1
sudo /etc/init.d/ssh start
  • Apagar el servidor SSH
1
sudo /etc/init.d/ssh stop
  • Reiniciar el servidor SSH
1
sudo /etc/init.d/ssh restart
  • Comprobar el estado del servicio SSH:
1
systemctl status service ssh

Este comando nos mostrará si el servicio se encuentra funcionando, si hay errores en alguno de los archivos de configuración, y en qué puertos e interfaces está funcionando el servicio de OpenSSH.


 

 

5. Aspectos de seguridad que podemos configurar para crear un servidor SSH más seguro

 

  • Cambiar el puerto de funcionamiento por defecto de SSH (22) a otro de nuestra elección, que no esté ocupado por ningún servicio: Port 21335
  • Deshabilitar el acceso al usuario Root:  (PermitRootLogin no)
  • Limitar el número de intentos permitidos para introducir el password correcto, antes de desconectar al usuario: MaxAuthTries
  • Establecer un tiempo menor para que el usuario pueda autenticarse en el servidor:  LoginGraceTime
  • Permitir/Denegar a ciertos usuarios: AllowUsers/DenyUsers
  • Permitir/Denegar a ciertos grupos de usuarios: AllowGroups/DenyUsers

 

 

Esto es lo básico que necesitamos para configurar de forma rápida un servidor OpenSSH, sin muchos quebraderos de cabeza, y con algo de seguridad.

 
Si queremos hilar más fino, podemos revisar otros aspectos de seguridad como por ejemplo los relativos a permisos de usuarios y grupos SSH, y revisar algunos posibles errores en un Server SSH puede mostrarnos de forma más o menos habitual.

 


Etiquetas del articulo: , ,


Centro de preferencias de privacidad

Cookies imprescindibles

Se usan para saber si ya aceptaste nuestras políticas y para servir más rápidos los contenidos.

gpdr,wpSGCacheBypass

Cookies de terceros

Usamos cookies de terceros en las que se almacenan externamente para conocer tus usos de navegación, si ya estás suscrito al boletín y los elementos compartidos en redes sociales.

1P_JAR, AID, DSID, IDE, NID, JCS_INENREF, JCS_INENTIM, __cfduid, _ga, _gat, _gat_gtag_UA_16843793_11, _gid,_wpss_h_, _wpss_p_, gadwp_wg_default_dimension, gadwp_wg_default_metric, gadwp_wg_default_swmetric