Cómo proteger SSH | Documentación de cPanel y WHM

Cómo proteger SSH


Última modificación: 22 de septiembre de 2021

Visión general

Este documento enumera varios cambios útiles que puede realizar en su servidor para mejorar la seguridad SSH. Nosotros fuertemente le recomendamos que restrinja y configure correctamente el acceso a Secure Shell (SSH) para proteger su servidor.

Tenga cuidado a quién concede acceso SSH

Si un usuario no necesita acceso SSH, no no concédales acceso. Para eliminar el acceso SSH de un usuario, utilice WHM Administrar el acceso al shell interfaz (WHM >> Hogar >> Funciones de cuenta >> Administrar el acceso al shell).

Algunos usuarios pueden necesitar acceso SSH, pero solo necesitan acceso a archivos en su directorio de inicio. Recomendamos que asigne un entorno de shell encerrado a estos usuarios. Para obtener más información sobre los proyectiles encarcelados, lea nuestro VirtFS – Shell encarcelado documentación.

El sistema puede mostrar un mensaje legal SSH (mensaje del día o motd) cada vez que alguien inicia sesión en su servidor a través de SSH.

Para configurar el mensaje, use su editor de texto preferido para editar el /etc/motd archivo y guarde sus cambios. Por ejemplo, uno de nuestros analistas técnicos utiliza el siguiente mensaje:

1
2
3
4
5
6
7
ALERT! You have entered a secured area! The system has recorded
your IP and login information, and it has notified the administrator.

This system is restricted to authorized access only. All activities on
this system are recorded and logged. The system administrator will fully
investigate and report unauthorized activity to the appropriate law
enforcement agencies.

Usar claves SSH

Puede deshabilitar la autenticación de contraseña para SSH en su servidor, lo que obligará a los usuarios a iniciar sesión a través de SSH con claves en lugar de contraseñas.

Para hacer esto, realice lo siguiente:

  1. Utilice WHM Administrar las claves SSH de root interfaz (WHM >> Hogar >> Centro de Seguridad >> Administrar las claves SSH de root) para generar y descargar una clave para el usuario root.

  2. Utilice WHM Ajuste de autorización de contraseña SSH interfaz (WHM >> Hogar >> Centro de Seguridad >> Ajuste de autorización de contraseña SSH) para deshabilitar la autenticación de contraseña para SSH.

Fortalecer la seguridad SSH

los /etc/ssh/sshd_config El archivo contiene los ajustes de configuración de su servidor para SSH. Le recomendamos que cambie la siguiente configuración:

  • Port – El número de puerto en el que sshd El demonio escucha las conexiones. El valor más alto aceptable es 49151.

    Nota:

    Le recomendamos que utilice un puerto privilegiado de 11023 que otro servicio hace no uso actualmente. Solo el root el usuario puede enlazar a los puertos 11023. Cualquiera puede usar los puertos sin privilegios de 1024 y mayor.

  • Protocol – El protocolo SSH que usa su servidor. Le recomendamos que cambie este valor a 2.

  • ListenAddress – La dirección IP en la que sshd El demonio escucha las conexiones. Tu servidor debe poseer esta dirección IP. Nosotros fuertemente le recomendamos que no utilice su dirección IP compartida principal para este valor. Puede crear una entrada DNS personalizada específicamente para la nueva dirección IP SSH. Para hacerlo, cree un archivo de zona (por ejemplo, ssh.example.com) y agregue una entrada A al archivo de zona para la nueva entrada del servidor de nombres.

  • PermitRootLogin – Esta opción especifica si desea permitir que las personas inicien sesión directamente en SSH como el root usuario. Recomendamos encarecidamente que establezca este valor en no.

Edite el archivo sshd_config

Para configurar el /etc/ssh/sshd_config archivo para reforzar la seguridad de su servidor, realice los siguientes pasos:

Nota:

Para la administración de firewall CentOS 7 y 8, CloudLinux ™ 7 y 8, AlmaLinux OS 8 y RHEL 7, le recomendamos que administre el firewall de su servidor con el /etc/firewalld/services/cpanel.xml expediente. Puede leer más sobre este archivo en nuestro Cómo configurar su firewall para los servicios cPanel y WHM documentación.

  1. Inicie sesión en su servidor como root usuario a través de SSH. Si su servidor lo hace no permitir directo root inicie sesión en SSH, inicie sesión como su usuario de rueda y use el su comando para convertirse en el root usuario.

  2. Haga una copia de seguridad del sshd_config archivo con el siguiente comando:

    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak`date +%F`
  3. Abre el /etc/ssh/sshd_config archivo con un editor de texto.

  4. Para cambiar un parámetro en el sshd_config archivo, descomente la línea que contiene el parámetro. Para hacer esto, elimine el carácter de signo de número (#) y cambie el valor de la línea.

    Por ejemplo, el puerto SSH predeterminado aparece en una línea similar al siguiente ejemplo: Para cambiar el puerto SSH a 456, edite esa línea para que se parezca al siguiente ejemplo:

Después de configurar SSH, ejecute el /scripts/restart_sshd guión o el service sshd restart comando para reiniciar el demonio SSH.

Después de reiniciar SSH, cierre la sesión de su servidor y vuelva a iniciarla con el usuario, la dirección IP y el número de puerto que especificó en la sshd_config expediente.

Advertencia:

Si accidentalmente configura incorrectamente su archivo de configuración SSH, navegue hasta el siguiente enlace en su navegador web (donde example.com representa el nombre de host del servidor o la dirección IP principal):

https://example.com:2087/scripts2/doautofixer?autofix=safesshrestart

Este intento de script configurará temporalmente un archivo de configuración SSH adicional para el puerto 22, que le permitirá acceder, editar y corregir el archivo de configuración SSH original. Si otro servicio o demonio usa el puerto 22, el script configurará un archivo de configuración SSH adicional para el puerto 23.

Ejemplo de archivo sshd_config

Advertencia:

Hacer no Copie el archivo de ejemplo a continuación e intente usarlo en su servidor. Romperá la configuración de su servicio SSH. Este archivo es solamente un ejemplo.

  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
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#   $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 456
#AddressFamily any
ListenAddress 192.168.69.187
#ListenAddress ::

# The default requires explicit activation of protocol 1
Protocol 2

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# 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
HostKey /etc/ssh/ssh_host_ed25519_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 1024

# Ciphers and keying
#RekeyLimit default none

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#RSAAuthentication yes
#PubkeyAuthentication yes


# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

# 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'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
UsePrivilegeSeparation sandbox      # Default for new installations.
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem   sftp    /usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#   X11Forwarding no
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs server

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *