Vulnerabilidades ssh

19.02.2020

En este tutorial, aprenderá cómo instalar la aplicación del servidor OpenSSH en un indicador de terminal. Aunque las instrucciones se probaron para la arquitectura Power9 (ppc64le), también deberían funcionar en el servidor Intel AMD64 o ARAM64. Para obtener más información, consulte la página de inicio de OpenSSH aquí y cómo asegurar el tutorial del servidor de OpenSSH aquí.

Cómo configurar claves SSH en un sistema Linux / Unix

Cliente y amigos de OpenSSH ssh en Linux (Ubuntu, Debian, {Free, Open, Net} BSD, RHEL, CentOS, MacOS / OSX, AIX, HP-UX y co).

¿Qué es una autenticación de clave pública?El servidor OpenSSH admite varios esquemas de autenticación. Los dos más populares son los siguientes:Autenticación basada en contraseñas.

Autenticación basada en clave pública. Es un método de seguridad alternativo al uso de contraseñas. Este método se recomienda en un servidor VPS, en la nube, dedicado o incluso en el hogar.Cómo configurar claves SSHPasos para configurar claves ssh seguras:Cree el par de claves ssh utilizando el comando ssh-keygen.

Copie e instale la clave ssh pública utilizando el comando ssh-copy-id en un servidor Linux o Unix.

Agréguese a la cuenta de administrador de sudo o wheel group.

Deshabilite el inicio de sesión con contraseña para la cuenta raíz.

Pruebe su contraseña menos ssh keys login usando el comando ssh user @ server-name.Veamos todos los pasos en detalles.

¿Cómo configuro la autenticación de clave pública?

Debe generar un par de claves públicas y privadas. Por ejemplo:

Dónde,

server1.cyberciti.biz: almacena su clave pública en los hosts remotos y tiene una cuenta en este servidor basado en Linux / Unix.

client1.cyberciti.biz: su clave privada permanece en el ordenador de escritorio / portátil / equipo (o servidor local) que utiliza para conectarse al servidor server1.cyberciti.biz. No comparta ni entregue su archivo privado a nadie.En el método basado en clave pública, puede iniciar sesión en servidores y servidores remotos, y transferir archivos a ellos, sin usar las contraseñas de su cuenta. Siéntase libre de reemplazar los nombres server1.cyberciti.biz y client1.cyberciti.biz con su configuración real. Basta de hablar, configuremos la autenticación de clave pública. Abra la Terminal y escriba los siguientes comandos si el directorio

.ssh no existe:mkdir -p $ HOME / .ssh

chmod 0700 $ HOME / .ssh1: crear el par de claves. En el ordenador (como client1.cyberciti.biz), genere un par de claves para el protocolo.ssh-keygen -t rsa

Sample outputs:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/vivek/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/vivek/.ssh/id_rsa.
Your public key has been saved in /Users/vivek/.ssh/id_rsa.pub.
The key fingerprint is:
80:5f:25:7c:f4:90:aa:e1:f4:a0:01:43:4e:e8:bc:f5 vivek@desktop01
The key's randomart image is:
+--[ RSA 2048]----+
| oo ...+. |
|.oo . .ooo |
|o .o. . .o . |
| o ...+o. |
| o .=.=S |
| . .Eo  . |
|            |
|            |
|            |
+-----------------+

Debe establecer la ubicación y el nombre del par de claves. Le recomiendo que use la ubicación predeterminada si aún no tiene otra clave allí, por ejemplo:

$ HOME / .ssh / id_rsa.

Se le pedirá que proporcione una frase de contraseña (contraseña) para su clave privada. Le sugiero que configure una frase de contraseña cuando se le solicite. Debería ver dos archivos nuevos en el directorio $ HOME / .ssh /:

$ HOME / .ssh / id_rsa- contiene su clave privada.
$ HOME / .ssh / id_rsa.pub: contiene tu clave pública.

Sintaxis opcional para usuarios avanzados

La siguiente sintaxis especifica el 4096 de bits en la clave RSA para la creación (por defecto 2048):
$ ssh-keygen -t rsa -b 4096 -f ~ / .ssh / vps-cloud.web-server.key -C "Mi clave de servidor web"
Dónde,

-t rsa: especifica el tipo de clave para crear. Los valores posibles son "rsa1" para la versión 1 del protocolo y "dsa", "ecdsa", "ed25519" o "rsa" para la versión 2 del protocolo.

-b 4096: especifica el número de bits en la clave para crear

-f ~ / .ssh / vps-cloud.web-server.key: especifica el nombre de archivo del archivo de clave.

-C "Mi clave de servidor web": establece un nuevo comentario.

2: Instalar la clave pública en el servidor remoto

Use el comando scp o ssh-copy-id para copiar su archivo de clave pública (por ejemplo, $ HOME / .ssh / id_rsa.pub) a su cuenta en el servidor / host remoto (por ejemplo, nixcraft@server1.cyberciti.biz). Para hacerlo, ingrese el siguiente comando en su client1.cyberciti.biz:

ssh-copy-id -i $ HOME / .ssh / id_rsa.pub user@server1.cyberciti.biz

O simplemente copie la clave pública en el servidor remoto como claves_autorizadas en el directorio ~ / .ssh /:

scp $ HOME / .ssh / id_rsa.pub user@server1.cyberciti.biz: ~ / .ssh / Authorizedkeys

Una nota sobre la adición de la clave pública en el servidor remoto.

En algunos sistemas, el comando ssh-copy-id puede no estar instalado, así que use los siguientes comandos (cuando se le solicite, proporcione la contraseña de la cuenta de usuario remota llamada vivek) para instalar y agregar la clave pública:
## Primero cree el directorio .ssh en el servidor ##
ssh vivek@server1.cyberciti.biz "umask 077; prueba -d .ssh || mkdir .ssh"## cat local id.rsa.pub archivo y canalice sobre ssh para agregar la clave pública en el servidor remoto ##
cat $ HOME / .ssh / id_rsa.pub | ssh vivek@server1.cyberciti.biz "cat >> .ssh / certified_keys"

3: Pruébelo (escriba el comando en client1.cyberciti.biz)

La sintaxis es la siguiente para el comando ssh:
ssh user@server1.cyberciti.biz
usuario ssh @ su-dirección-servidor-ip
ssh -i ~ / .ssh / your-key user @ your-server-ip-address
O copie un archivo de texto llamado foo.txt:

scp foo.txt user@server1.cyberciti.biz: / tmp /

Se le pedirá una frase de contraseña. Para deshacerse de la frase de contraseña cada vez que inicie sesión en el host remoto, pruebe los comandos ssh-agent y ssh-add.

                                ¿Qué son ssh-agent y ssh-add, y cómo los uso?

Para deshacerse de una frase de contraseña para la sesión actual, agregue una frase de contraseña a ssh-agent y no se le solicitará cuando use ssh o scp / sftp / rsync para conectarse a hosts con su clave pública. La sintaxis es la siguiente:
eval $ (agente ssh)

Escriba el comando ssh-add para solicitar al usuario una frase de contraseña de clave privada y la agrega a la lista mantenida por el comando ssh-agent:

ssh-add
Ingrese su frase de contraseña de clave privada. Ahora intente nuevamente iniciar sesión en user@server1.cyberciti.biz y no se le pedirá una contraseña:
ssh user@server1.cyberciti.biz

Se pueden enumerar los parámetros de clave pública de todas las identidades con la opción -L:

ssh-add -L

La eliminación de todas las claves privadas del agente ssh se puede hacer con la opción -D de la siguiente manera:

ssh-add -D

Cuando cierre sesión, elimine el agente ssh, ejecute:

kill$ SSH_AGENT_PID
También puede agregar algo como lo siguiente a su inicio de shell para eliminar ssh-agent al cerrar sesión:

trampa "kill $ SSH_AGENT_PID"


4: Deshabilite el inicio de sesión basado en contraseña en un servidor

Inicie sesión en su servidor, escriba:

## comandos del cliente ##
eval $ (agente ssh)
ssh-add
ssh user@server1.cyberciti.biz


Edite / etc / ssh / sshd_config en server1.cyberciti.biz usando un editor de texto como nano o vim:

Advertencia: asegúrese de agregarse a los archivos sudoers. De lo contrario, no podrá iniciar sesión como root más adelante. Consulte "Cómo agregar, eliminar y otorgar privilegios de Sudo a los usuarios en un servidor FreeBSD" para obtener más información.

$ sudo vim / etc / ssh / sshd_config
salte directamente a la línea PermitRootLogin usando un editor de texto vim:
$ sudo vim + / PermitRootLogin / etc / ssh / sshd_config
Busque PermitRootLogin y configúrelo de la siguiente manera:
PermitRootIniciar sesión no Guarde y cierre el archivo. Voy a agregar un usuario llamado vivek a sudoers en Ubuntu Linux:
# adduser vivek
Finalmente, vuelva a cargar / reiniciar el servidor sshd, escriba el comando según su versión de Linux / Unix:
## CentOS / RHEL / Fedora (versión anterior) servidor Linux recargar sshd ##
sudo service sshd reload## CentOS / RHEL / Fedora (última versión, es decir, basada en systemd) Linux server reload sshd ##
sudo systemctl reload sshd## Debian / Ubuntu Linux (versión anterior) servidor recargar sshd ##sudo /etc/init.d/ssh reload## Debian / Ubuntu Linux (último sistema basado en servidor) recargar sshd ##
sudo systemctl reload ssh## Método genérico de Unix para recargar sshd ##
sudo kill -HUP `cat / var / run / sshd.pid`
O
sudo kill -HUP $ (cat /var/run/sshd.pid)


5: ¿Cómo agregar o reemplazar una frase de contraseña para una clave privada existente?

Para cambiar el tipo de frase de contraseña

                          Ubuntu Linux instala el servidor OpenSSH

La última actualización 14 de octubre de 2019 en Categorías OpenBSD, Ubuntu Linux
                           ¿Cómo instalo el servidor OpenSSH en Ubuntu Linux?

sshd (OpenSSH Daemon o servidor) es el programa daemon para el cliente ssh. Es un servidor ssh gratuito y de código abierto. ssh reemplaza rlogin y rsh inseguros, y proporciona comunicaciones cifradas seguras entre dos hosts no confiables a través de una red insegura como Internet. Ubuntu Desktop y el servidor Ubuntu mínimo no vienen con sshd instalado. Sin embargo, puede instalar fácilmente el servidor SSH en Ubuntu utilizando los siguientes pasos.

Cómo instalar el servidor SSH en Ubuntu

El procedimiento para instalar un servidor ssh en Ubuntu Linux es el siguiente:

Abra la aplicación de terminal para el escritorio de Ubuntu.
Para el servidor Ubuntu remoto, debe usar la herramienta BMC o KVM o IPMI para obtener acceso a la consola
Escriba sudo apt-get install openssh-server
Habilite el servicio ssh escribiendo sudo systemctl enable ssh
Inicie el servicio ssh escribiendo sudo systemctl start ssh

Pruébelo iniciando sesión en el sistema utilizando ssh user @ server-name

Veamos todos los pasos de instalación del servidor Ubuntu OpenSSH en detalles.

1. Inicie sesión en el servidor remoto utilizando bmc / ipmi / kvm sobre IP (opcional)
Estoy usando un sistema basado en OpenPOWER llamado Talos II de Raptor Computing Systems. Es una arquitectura basada en PowerPC (ppc / ppc64le). Después de una nueva instalación de Ubuntu Linux (ppc64le), descubrí que no viene con el servidor SSH instalado de forma predeterminada. A continuación, le mostramos cómo iniciar sesión en el servidor bmc para obtener acceso a la consola serie:
$ ssh root @ power9-bmc
Ejecute obmc-console-client para obtener acceso de consola a la consola del servidor Ubuntu:
# obmc-console-client
Cómo iniciar sesión en el sistema power9 con el cliente openbmc

2. Ubuntu Linux instala el servidor OpenSSH
Primero actualice el sistema usando el comando apt o el comando apt-get:
$ sudo apt update
$ sudo apt upgrade
Para instalar el paquete openssh-server, ejecute:
$ sudo apt install openssh-server
Ubuntu Linux instala el servidor OpenSSH
Haga clic para ampliar una imagen

3. Verifique que el servicio ssh se esté ejecutando
Escriba el siguiente comando systemctl:
$ sudo systemctl status ssh
Compruebe para confirmar que el servidor OpenSSH se ejecuta en Ubuntu
Si no se está ejecutando, habilite el servidor ssh e inícielo de la siguiente manera escribiendo el comando systemctl:
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
Sincronizar el estado de ssh.service con el script de servicio SysV con / lib / systemd / systemd-sysv-install.
Ejecución: / lib / systemd / systemd-sysv-install enable ssh
Enlace simbólico creado /etc/systemd/system/sshd.service? /lib/systemd/system/ssh.service.

4. Configure el firewall y abra el puerto 22
Debe configurar el firewall de Ubuntu Linux llamado ufw. Aquí está cómo abrir o permitir el puerto 22 cuando se usa ufw en Ubuntu:
$ sudo ufw permitir ssh
$ sudo ufw enable
Estado de $ sudo ufw

5. Pruébalo
Ahora puede iniciar sesión desde su computadora de escritorio con Linux, * BSD, macOS, MS-Windows (cliente de masilla) o un sistema similar a Unix utilizando el comando ssh:
$ ssh vivek @ server-ip
$ ssh vivek @ power9
Cómo habilitar y probar SSH en el servidor Ubuntu Linux
Puede instalar copiar e instalar la clave pública utilizando el comando ssh-copy-id para contraseña menos inicio de sesión:
$ ssh-copy-id vivek @ power9
Consulte "Autenticación basada en clave pública SSH en un servidor Linux / Unix" para obtener más información.
Archivo de configuración ssh
Se pueden crear accesos directos para las opciones de inicio de sesión / cliente de ssh. Por ejemplo, cree un archivo llamado ~ / .ssh / config de la siguiente manera:

$ nano ~ / .ssh / config  O
$ vi $ HOME / .ssh / config

Agregue lo siguiente para iniciar sesión en mi servidor Ubuntu EC2 en la nube de AWS:

Host web01
HostName aws-ec2-www-server1.cyberciti.biz
Puerto 22
IdentityFile ~ / .ssh / AWS_EC2_Virginia_US_East_Ubuntu_Boxes.pem
Usuario ubuntu
Para iniciar sesión simplemente escriba:

ssh web01

Mas informacion