Diferencia entre revisiones de «Servidor SSH»
m |
|||
(No se muestran 5 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
− | + | ==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 |
− | |||
− | $ 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 - 18: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.