Diferencia entre revisiones de «Servidor SSH»

De CURE - Informática
Saltar a: navegación, buscar
m
 
(No se muestran 5 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
=== Servidor SSH ===
+
==Servidor SSH==
  
  
== Resumen SSH ==
+
=== Resumen SSH ===
  
  
Línea 9: Línea 9:
  
 
== Instalación por línea de comandos: ==
 
== Instalación por línea de comandos: ==
'''
+
 
Para instalarlo hay que ejecutar:'''
+
'''Para instalarlo hay que ejecutar:'''
$ sudo apt-get install openssh-server
+
$ sudo apt-get install openssh-server
  
 
Nota: Es posible que el paquete no se encuentre en los repositorios, para agregarlo hay que actualizar la lista abriendo un terminal y ejecutando el comando:
 
Nota: Es posible que el paquete no se encuentre en los repositorios, para agregarlo hay que actualizar la lista abriendo un terminal y ejecutando el comando:
  
$ sudo apt-get update
+
$ sudo apt-get update
'''
+
 
Modo gráfico:'''
+
'''Modo gráfico:'''
  
 
1. Ir a: Sistema-> Administración-> Gestor de paquetes synaptic
 
1. Ir a: Sistema-> Administración-> Gestor de paquetes synaptic
Línea 25: Línea 25:
 
Nota: Es posible que el paquete no se encuentre en los repositorios, para agregarlo hay que actualizar la lista abriendo un terminal y ejecutando el comando:
 
Nota: Es posible que el paquete no se encuentre en los repositorios, para agregarlo hay que actualizar la lista abriendo un terminal y ejecutando el comando:
  
$ sudo apt-get update
+
$ sudo apt-get update
  
 
Después de instalado, para poder configurarlo hay que editar el archivo /etc/ssh/sshd_config
 
Después de instalado, para poder configurarlo hay que editar el archivo /etc/ssh/sshd_config
Línea 32: Línea 32:
  
 
El demonio ssh atiende por defecto en el puerto 22, para cambiarlo hay que ir a la linea donde dice:
 
El demonio ssh atiende por defecto en el puerto 22, para cambiarlo hay que ir a la linea donde dice:
Port 22
+
Port 22
 
y cambiar el 22 por el puerto que queramos usar.
 
y cambiar el 22 por el puerto que queramos usar.
  
 
Para no permitir que se puedan hacer login con el usuario root por ssh hay que cambiar:
 
Para no permitir que se puedan hacer login con el usuario root por ssh hay que cambiar:
PermitRootLogin yes
+
PermitRootLogin yes
por:
+
por:
PermitRootLogin no
+
PermitRootLogin no
 +
 
 +
También se puede hacer que si se pueda ingresar por ssh a root, pero que solo pueda ser mediante clave pública-privada:
 +
PermitRootLogin without-password
 +
Esta es la opción más recomendable.
  
 
Para elegir que usuarios podrán acceder por ssh, hay que agregar la siguiente linea:
 
Para elegir que usuarios podrán acceder por ssh, hay que agregar la siguiente linea:
Línea 44: Línea 48:
  
 
Para que los cambios surtan efecto hay que reiniciar el servidor:
 
Para que los cambios surtan efecto hay que reiniciar el servidor:
$ sudo /etc/init.d/ssh restart
+
$ sudo /etc/init.d/ssh restart
  
 
Para solo recargar el cambio de configuración sin reiniciar el servicio:
 
Para solo recargar el cambio de configuración sin reiniciar el servicio:
$ sudo /etc/init.d/ssh reload
+
$ sudo /etc/init.d/ssh reload
  
Evitar que nos pida el password cada vez
 
  
$ ssh-keygen -t rsa
+
=== SSH con clave pública-privada ===
 +
Para generar nuestra clave:
 +
 
 +
$ ssh-keygen -t rsa
  
 
Una vez generada, hay que copiarla al usuario del ordenador remoto con el que queremos mantener la relación de confianza usando el comando ssh-copy-id.
 
Una vez generada, hay que copiarla al usuario del ordenador remoto con el que queremos mantener la relación de confianza usando el comando ssh-copy-id.
 
Este es un ejemplo del uso con la salida del programa:
 
Este es un ejemplo del uso con la salida del programa:
  
$ ssh-copy-id usuario_remoto@192.168.0.1
+
$ ssh-copy-id usuario_remoto@192.168.0.1
  
 
Now try logging into the machine, with "ssh 'usuario_remoto@192.168.0.1'", and check in:
 
Now try logging into the machine, with "ssh 'usuario_remoto@192.168.0.1'", and check in:
Línea 68: Línea 74:
  
 
Debemos ejecutar el comando:
 
Debemos ejecutar el comando:
$ ssh-add
+
$ ssh-add
  
 
Nos pedirá el passphrase:
 
Nos pedirá el passphrase:
Línea 74: Línea 80:
 
Identity added: /home/pablo/.ssh/id_rsa (/home/pablo/.ssh/id_rsa)
 
Identity added: /home/pablo/.ssh/id_rsa (/home/pablo/.ssh/id_rsa)
  
 +
== Protejer nuestro servidor SSH ==
 +
 +
=== DenyHosts ===
 +
 +
Con denyhosts podremos prevenir el ataque a el servicio o demonio SSH por métodos como fuerza bruta o diccionario.
 +
Este después de sucesivos intentos erroneos de logeo por SSH bloquea el acceso a la ip fuente.
 +
 +
Para instalarlo:
 +
$ apt-get install denyhosts
 +
 +
Luego para configurarlo editamos el archivo:
 +
/etc/denyhosts.conf
 +
 +
Tiene muchas opciones para configurar, pero las que nos interesan son:
 +
* purgar las ip bloqueadas después de una hora: PURGE_DENY = 1h
 +
* bloqueo a intentos de login para usuarios inválidos: DENY_THRESHOLD_INVALID = 3
 +
* bloqueo a intentos de login para usuarios válidos: DENY_THRESHOLD_VALID = 5
 +
* bloqueo a intentos de login con el usuario root: DENY_THRESHOLD_ROOT = 1
 +
* bloqueo a intentos de login con usuarios restringidos: DENY_THRESHOLD_RESTRICTED = 1
 +
* vuelve a 0 (cero) el contador de intentos fallidos desde una ip cuando el login es válido: RESET_ON_SUCCESS = yes
 +
 +
Luego de terminar de editar el archivo, hay que reinicar el servicio:
 +
/etc/init.d/denyhosts restart
 +
 +
=== Sshblock ===
 +
 +
Otra forma es mediante Sshblock, que en vez de usar el archivo /etc/hosts.deny usa el archivo /etc/hosts.allow.
 +
Primero hay que descargar el script desde la web:
 +
 +
http://www.la-samhna.de/misc/sshblock.sh
 +
 +
Guardarlo en:
 +
/usr/local/bin/sshblock.sh
 +
no es requisito guardarlo en esa ubicación.
 +
 +
Luego, cambiarle los permisos y permitirle ejecutarse:
 +
chmod 755 /usr/local/bin/sshblock.sh
 +
 +
Y agregar al final del /etc/hosts.allow las siguientes lineas:
 +
#__START_SSHBLOCK__
 +
#__END_SSHBLOCK__
 +
sshd : ALL : spawn (/usr/local/bin/sshblock.sh %a)&
 +
 +
Para configurarlo, solo hay que ir a donde guardamos el script y editar las siguientes lineas.
 +
Una muestra de configuración sería:
 +
 +
# your own domain
 +
DONTBLOCK=192.168
 +
 +
# block host if more than BURST_MAX connections within BURST_TIM seconds
 +
BURST_MAX=5
 +
BURST_TIM=60
 +
 +
# remove block after PURGE_TIM seconds
 +
PURGE_TIM=3600
 +
 +
Con la opción DONTBLOCK le decimos que ip's o redes no bloquear.
 +
Luego le decimos la cantidad de intentos máximos permitidos y el intervalo de tiempo, de esta manera al quinto intento en 60 segundos bloqueará la ip.
 +
Y por último el tiempo de espera para purgar la ip.
  
 
== Referencias ==
 
== Referencias ==
  
 +
http://www.la-samhna.de/library/brutessh.html#5
  
 
Créditos
 
Créditos
  
 
     * Pablo García. Resumen de instalación SSH Server, Foro de Ubuntu Desktop.
 
     * Pablo García. Resumen de instalación SSH Server, Foro de Ubuntu Desktop.
 +
 +
[[Category:Descontinuadas]]

Revisión actual del 15:05 14 ene 2022

Servidor SSH

Resumen SSH

El cliente ssh ya viene instalado por defecto en Ubuntu, no así el servidor ssh.


Instalación por línea de comandos:

Para instalarlo hay que ejecutar:

$ sudo apt-get install openssh-server

Nota: Es posible que el paquete no se encuentre en los repositorios, para agregarlo hay que actualizar la lista abriendo un terminal y ejecutando el comando:

$ sudo apt-get update

Modo gráfico:

1. Ir a: Sistema-> Administración-> Gestor de paquetes synaptic 2. Ingresar en el buscador: openssh-server 3. Seleccionar el paquete openssh-server y hacer click en "aplicar"

Nota: Es posible que el paquete no se encuentre en los repositorios, para agregarlo hay que actualizar la lista abriendo un terminal y ejecutando el comando:

$ sudo apt-get update

Después de instalado, para poder configurarlo hay que editar el archivo /etc/ssh/sshd_config Muy recomendado hacerle una copia de respaldo de este archivo antes de modificarlo: $ sudo cp /etc/ssh/sshd_config{,.original}

El demonio ssh atiende por defecto en el puerto 22, para cambiarlo hay que ir a la linea donde dice:

Port 22

y cambiar el 22 por el puerto que queramos usar.

Para no permitir que se puedan hacer login con el usuario root por ssh hay que cambiar:

PermitRootLogin yes
por:
PermitRootLogin no

También se puede hacer que si se pueda ingresar por ssh a root, pero que solo pueda ser mediante clave pública-privada:

PermitRootLogin without-password

Esta es la opción más recomendable.

Para elegir que usuarios podrán acceder por ssh, hay que agregar la siguiente linea: AllowUsers <usuario1> <usuario2> <usuario3>

Para que los cambios surtan efecto hay que reiniciar el servidor:

$ sudo /etc/init.d/ssh restart

Para solo recargar el cambio de configuración sin reiniciar el servicio:

$ sudo /etc/init.d/ssh reload


SSH con clave pública-privada

Para generar nuestra clave:

$ ssh-keygen -t rsa

Una vez generada, hay que copiarla al usuario del ordenador remoto con el que queremos mantener la relación de confianza usando el comando ssh-copy-id. Este es un ejemplo del uso con la salida del programa:

$ ssh-copy-id usuario_remoto@192.168.0.1

Now try logging into the machine, with "ssh 'usuario_remoto@192.168.0.1'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

En caso que nos de este error cuando queramos entrar por ssh: Agent admitted failure to sign using the key.

Debemos ejecutar el comando:

$ ssh-add

Nos pedirá el passphrase: Enter passphrase for /home/usuario/.ssh/id_rsa: Identity added: /home/pablo/.ssh/id_rsa (/home/pablo/.ssh/id_rsa)

Protejer nuestro servidor SSH

DenyHosts

Con denyhosts podremos prevenir el ataque a el servicio o demonio SSH por métodos como fuerza bruta o diccionario. Este después de sucesivos intentos erroneos de logeo por SSH bloquea el acceso a la ip fuente.

Para instalarlo:

$ apt-get install denyhosts

Luego para configurarlo editamos el archivo:

/etc/denyhosts.conf

Tiene muchas opciones para configurar, pero las que nos interesan son:

* purgar las ip bloqueadas después de una hora: PURGE_DENY = 1h
* bloqueo a intentos de login para usuarios inválidos: DENY_THRESHOLD_INVALID = 3
* bloqueo a intentos de login para usuarios válidos: DENY_THRESHOLD_VALID = 5
* bloqueo a intentos de login con el usuario root: DENY_THRESHOLD_ROOT = 1
* bloqueo a intentos de login con usuarios restringidos: DENY_THRESHOLD_RESTRICTED = 1
* vuelve a 0 (cero) el contador de intentos fallidos desde una ip cuando el login es válido: RESET_ON_SUCCESS = yes

Luego de terminar de editar el archivo, hay que reinicar el servicio:

/etc/init.d/denyhosts restart

Sshblock

Otra forma es mediante Sshblock, que en vez de usar el archivo /etc/hosts.deny usa el archivo /etc/hosts.allow. Primero hay que descargar el script desde la web:

http://www.la-samhna.de/misc/sshblock.sh

Guardarlo en:

/usr/local/bin/sshblock.sh

no es requisito guardarlo en esa ubicación.

Luego, cambiarle los permisos y permitirle ejecutarse:

chmod 755 /usr/local/bin/sshblock.sh

Y agregar al final del /etc/hosts.allow las siguientes lineas:

#__START_SSHBLOCK__
#__END_SSHBLOCK__
sshd : ALL : spawn (/usr/local/bin/sshblock.sh %a)&

Para configurarlo, solo hay que ir a donde guardamos el script y editar las siguientes lineas. Una muestra de configuración sería:

# your own domain 
DONTBLOCK=192.168

# block host if more than BURST_MAX connections within BURST_TIM seconds
BURST_MAX=5
BURST_TIM=60

# remove block after PURGE_TIM seconds
PURGE_TIM=3600

Con la opción DONTBLOCK le decimos que ip's o redes no bloquear. Luego le decimos la cantidad de intentos máximos permitidos y el intervalo de tiempo, de esta manera al quinto intento en 60 segundos bloqueará la ip. Y por último el tiempo de espera para purgar la ip.

Referencias

http://www.la-samhna.de/library/brutessh.html#5

Créditos

   * Pablo García. Resumen de instalación SSH Server, Foro de Ubuntu Desktop.