Comunicación remota a través de SSH
Sumario
Introducción
A tarefa consiste en establecer a conexión remota a un servidor ssh público ou a unha máquina nosa, a través de liña de comandos ou ferramentas gráficas.
Qué ventaxas ten ssh? Qué inconvintes? Cómo funciona?
AMPLIACIÓN. Podes sabeer máis lendo a FAQ de SSH.
Desde Windows
Desde Linux
Instalación:
sudo apt update sudo apt install openssh-server
Comprobando o servizo:
sudo systemctl status ssh
Para arrancalo/paralo/reinicialo (cambiar pola opción axeitada en start/stop/restart:
sudo systemctl start/stop/restart ssh
Para que arranque despois dun reinicio:
sudo systemctl disable ssh
Para deshabilitar o servizo no arranque:
sudo systemctl enable ssh
Configuración do firewall:
sudo ufw allow ssh
Para conectar:
ssh username@ip_address
Se non coñecedes a ip do equipo:
ip a
Troubleshooting. Se non está permitindo conectar: A) Revisa o firewall. En caso de dúbida, nun entorno pedagóxico podes deshabilitalo con sudo ufw disable B) Revisa que hai conectividade facendo ping entre máquinas. Se non a hai, revisa a configuración de rede (en virtualbox, posiblemente tes que cambiar o modo de conexión de rede (adaptador ponte, rede nat, rede interna...)
Algunhas configuracións
En Ubuntu, o ficheiro de configuración sshd principal se atópase en /etc/ssh/sshd_config. É moi recomendable facer unha copia de seguridade da versión actual do ficheiro antes de editalo:
Para facer cambios na configuracion
sudo nano /etc/ssh/sshd_config.
CONSELLO. Fai copia do ficheiro antes de facer cambios para sempre coñecer a configuración orixinal e poder reverter se algo vai mal
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original
Ou tamén:
sudo cp /etc/ssh/sshd_config{,.bak}
IMPORTANTE
Un cambio erróneo pode facer que perdas a conexión remota... por iso é aconsellable probar a configuración despois dos cambios e antes do reinicio con
sudo sshd -t -f /etc/ssh/sshd_config
Para coñecer as opcións de configuración:
man sshd_config
Cambiar porto por defecto
O porto por defecto é o 22
Port 22
Pode ser axeitado cambialo para non dar pistas a un posible atacante que faga un escaneo de portos.
De facer o cambio, para conectar por terminal será co parámetro -p:
ssh -p port_number remote_host
Cómo iniciar sesión en SSH con claves Si bien es útil poder iniciar sesión en un sistema remoto usando contraseñas, es mucho mejor configurar una autenticación basada en claves.
Cómo funciona a autenticación baseada en claves
Funciona mediante a creación dun par de claves: unha clave privada e unha clave pública:
- A clave privada atópase no equipo cliente e protéxese e mantense en segrego
- A clave pública pode entregarse a alguén ou colocarse en calquera servidor ai que desexe acceder.
Cando intente conectarse usando un par de claves, o servidor usará a clave pública para crear unha mensaxe para o equipo cliente que só pode leerse coa clave privada.
Despois o equipo cliente envía a resposta axeitada ao servidor e así o servidor saberá que o cliente é lexítimo.
O proceso completo realízase automáticamente despois de configurar as claves.
Cómo crear claves SSH
As claves SSH deben xenerarse no equipo desde o que se desexa iniciar sesión (Xeneralmente o noso equipo local)
Pode facerse con este commando:
ssh-keygen -t rsa
Intro para aceptar os valores predeterminados. As túas claves crearanse en ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.
Cambia ao directorio .ssh escribindo:
cd ~/.ssh
Vemos os permisos dos ficheiros:
ls -l -rw-r--r-- 1 demo demo 807 Sep 2 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 2 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 2 23:13 id_rsa.pub
So o propietario pode leer o ficheiro id_rsa e escribir nel (Así é como debería ser mantido en segredo).
Mais o ficheiro id_rsa.pub pode compartirse e ten permisos apropiados para que así sexa.
Cómo transferir su clave pública al servidor
Mentras temos acceso con ccontrasinal a un servidor, podemos copiar a súa clave pública nel mediante a emisión deste comando:
ssh-copy-id remote_host
Con isto iniciarase unha sesión SSH. Despois de ingresar o noso contrasinal, a nosa clave pública copiarase no ficheiro de claves autorizadas do servidor, o que permitirá iniciar sesión sin o contrasinal nas seguintes conexións.
Deshabilitar a autenticación mediante contrasinal
Se creou claves SSH, pode mellorar a seguridade do servidor deshabilitando a autenticación mediante contrasinal. Así, ademáis de por consola, a forma de iniciar sesión será mediante a clave privada que se emparella coa clave pública que se tivo instalado no servidor.
CUIDADO- Antes de continuar con este paso, asegúrese de tes instalada unha clave pública no servidor. De non ser así, non poderá ter acceso por SSH!
Como root ou usuario con privilexios sudo, abrimos o ficheiro de configuración sshd:
sudo nano /etc/ssh/sshd_config
Na liña que di Password Authentication eliminamos o # inicial (para descomentar) e cambiamos o seu valor a no:
PasswordAuthentication no
Deben quedar estes parametros así (xa o están de forma predeterminada): PubkeyAuthentication yes ChallengeResponseAuthentication no
Gardamos cambios, e reiniciamos o servizo:
sudo systemctl reload ssh
A autenticación mediante contrasinal estará deshabilitada e so debe poder accederse mediante a autenticación de claves SSH.
Outros parámentros
Estos parámetros especifican parte de la información de inicio de sesión.
- LoginGraceTime
- especifica cantos segundos manterase a conexión activa sen iniciar sesión (cando pide usuario e contrasinal).
- PermitRootLogin
- selecciona se permite que o usuario root inicie sesión (mellor desactivalo por cuestións de seguridade. Na maioría dos casos modificar a no cando se teña creado unha conta de usuario que teña acceso a maiores privilexios (a través de su ou sudo) e que poida iniciar sesión a través de ssh.
- strictModes
- é un protector de la seguridade que denegará un intento de inicio de sesión se calquera pode ler os ficheiros de autenticación (evita intentos de inicio de sesión cando os ficheiros de configuración non sexan seguro)s.
- Reenvío X11
- Estos parámetros configuran una capacidad llamada Reenvío X11. Esto le permite ver en el sistema local la interfaz gráfica de usuario (GUI) del sistema remoto.
- X11Forwarding yes
- X11DisplayOffset 10
- Esta opción debe habilitarse no servidor e asignarse co cliente SSH durante a conexión coa opción -X.
INTERESANTE- Unha boa idea pode ser ter algunhas sesións activas cado realice cambios. Así poderás reverter a configuración de ser preciso.
Túneles SSH
Túneles directos
Túneles inversos
Copia de ficheiros con scp
Acceso mediante ferramentas con interfaz gráfica
Para comprobar o funcionamento
- Podemos conectar dunha máquina virtual a outra (que estén na mesma rede ou sexan accesibles).
- Desde a nosa máquina a unha máquina virtual (configurada a tarxeta coma adaptador ponte)
- Ou podemos facer uso de servidores SSH públicos
Referencias
- Comprueba la seguridad de tu servidor SSH y protégelo de ataques
- ssh audit
- Servidor OpenSSH en Linux: Manual de configuración para máxima seguridad
- SSH Essentials: Working with SSH Servers, Clients, and Keys
- Comandos SSH
- Wikibook OpenSSH
- Securizando Openssh
- fwknop: Single Packet Authorization > Port Knocking