- Aplicaciones clásicas
- telnet (TELetype NETwork) permite conectarnos a otros ordenadores de la red como terminal remoto
- ftp (File Transfer Protocol permite intercambiar ficheros entre distintos ordenadores de la red
- Problema: la información se transfiere en claro
- El uso de telnety ftp se desaconseja
- Reemplazarlos por ssh, scp, sftp
- ssh (Secure Shell) permite conectarnos a otro sistema encriptando toda la información
- scp, sftp permiten la transferencia de ficheros de forma encriptada
- scp similar a cp y sftp similar a ftp
Servicio de telnet y ftp
Los servicios TCP (telnet, ftp, talk, finger, etc.) son normalmente lanzados por el superdemonio de red inetd (o xinetd)- El fichero de configuración es el /etc/inetd.conf
- Ejemplo de línea
telnet stream tcp nowait telnetd /usr/sbin/in.telnetd
- cuando inetd reciba una petición al puerto telnet abre un socket tipo stream y ejecutar fork() y exec() del programa /usr/sbin/in.telnetd, bajo la identidad del usuario telnetd
- nowait indica que el servidor puede continuar procesando conexiones en el socket
- Versión mejorada de inetd: xinetd
- Para mayor control usar TCP Wrapper (programa tcpd)
- Permite conceder/denegar acceso a determinados hosts/redes mediante los fichero /etc/hosts.allow y /etc/hosts.deny
Servicio de telnet
Instalación de un servidor telnet- Descargar el paquete telnetd
- El paquete actualiza el /etc/inetd.conf
- Por defecto usa TCP wrappers
- El servidor escucha el puerto 23
- Desinstalar el paquete telnetd, o
- Comentar la línea correspondiente en /etc/inetd.conf
Servicio de FTP
Transfiere ficheros a/desde un host remoto- Permite usuarios registrados o anónimos (anonymous)
- Utiliza dos puertos: 21 (conexión de control) y 20 (conexión de datos)
- Dos modos de funcionamiento:
- Activo (modo por defecto en el comando ftp)
- El servidor inicia la conexión de datos desde su puerto 20 a un puerto > 1023 del cliente
- Problema con los firewalls en el cliente
- Pasivo (modo recomendable, por defecto en navegadores)
- El cliente inicia las conexiones de control y datos
- No se utiliza el puerto 20
- No tiene problema con los firewall
- Activo (modo por defecto en el comando ftp)
Instalación de un servidor ftp básico
- Instalar el paquete ftpd
- El paquete actualiza el /etc/inetd.conf
- Por defecto usa TCP wrappers
- Podemos denegar el acceso ftp a ciertos usuarios incluyéndolos en el fichero /etc/ftpusers
Servicio de FTP avanzado
Servidores avanzados de FTP- Proporcionan numerosas facilidades, tanto para ftp normal cono anónimo
- Existen numerosos servidores comerciales u open source: Wu-FTPD, Pure-FTPd, ProFTPD, wzdftpd, vsftpd
- Estos servidores proporcionan normalmente:
- Operación a través de inetd o standalone
- Servidores FTP virtuales (varios servidores de FTP anónimos en el mismo host)
- Usuarios FTP virtuales (cuentas ftp diferentes de las cuentas del sistema)
- Facilidades para registro y monitorización de accesos
- Facilidades para controlar y limitar accesos
- Comunicación encriptada
SSH
SSH: Shell seguro- Permite comunicarnos de forma segura con un servidor remoto
- Permite abrir sesiones o transferir ficheros (scp o sftp)
- Reemplazo de rlogin, telnet o ftp
- Todos los datos viajan encriptados
- Dos versiones SSH-1 y SSH-2:
- Recomendable SSH-2
- Versión open-source OpenSSH
- Paquetes Debian:
- Ciente: openssh-client
- Servidor: openssh-server
Modos de autenticación mediante SSH
SSH soporta 4 modos de autenticación:- Si el nombre del host remoto desde el cual un usuario se conecta al servidor esta listado en ~/.rhosts, ~/.shosts, /etc/hosts.equiv o /etc/shosts.equiv el usuario remoto puede entrar sin contraseña
- Método absolutamente desaconsejado
- Igual que el anterior pero la clave pública del host remoto debe aparecer en /etc/ssh_known_hosts o ~/.ssh/known_hosts
- No demasiado seguro (si el host remoto se ve comprometido, el servidor local queda comprometido)
- La clave pública del usuario remoto debe estar en ~/.ssh/authorized_keys
- El usuario remoto debe tener acceso a su clave privada
- Método más seguro, pero un poco incomodo
- Acceso mediante contraseña (modo por defecto)
- Menos seguro que el anterior
Opciones para autenticación
Fichero de configuración del servidor ssh: /etc/ssh/sshd_configOpción | M | Dfto. | Significado |
RhostsRSAAuthentication | 2 | no | Sí yes permite autenticación por host (SSH-1) |
HostbasedAuthentication | 2 | no | Sí yes permite autenticación por host (SSH-2) |
IgnoreRhosts | 2 | yes | No usa los ficheros ~/.rhosts y ~/.shosts |
IgnoreUserKnownHosts | 2 | no | Ignora el fichero ~/.ssh/known_hosts |
RSAAuthentication | 3 | yes | Autenticación de clave pública de usuario (SSH-1) |
PubkeyAuthentication | 3 | yes | Autenticación de clave pública de usuario (SSH-2) |
PasswordAuthentication | 4 | yes | Autenticación mediante contraseña |
UsePAM | 2,3,4 | no | Usa PAM para autenticación |
Otras opciones de configuración del servidor
Otras opciones en /etc/ssh/sshd_configOpción | Dfto. | Significado |
Port | 22 | Puerto (puede ser interesante cambiarlo a >1024) |
Protocol | 2,1 | Protocolo aceptado (más seguro sólo 2) |
ListenAddress | Todas | Dirección local por la que escucha |
PermitRootLogin | yes | Permite acceder al root |
X11Forwarding | no | Permite forwarding X11 |
Opciones para el cliente
Fichero de configuración del cliente ssh: /etc/ssh/ssh_config o ~/.ssh/config- En este fichero se especifican opciones para los comandos ssh, scp o sftp
- Algunas de estas opciones se pueden especificar en el momento de ejecutar el comando, p.e.
$ ssh -p port servidor # Indica otro puerto
Opción | Dfto. | Significado |
Hosts | Host para los que se aplican las opciones (* implica todos) | |
Port | 22 | Puerto por defecto |
Protocol | 2,1 | Protocolo usado por defecto |
Cipher[s] | Mecanismos de cifrado usados | |
ForwardX11 | no | Reenvío X11 |
Otros comandos
- ssh-keygen generación y gestión de claves públicas/privadas para SSH
- Permite claves RSA o DSA (DSA sólo SSH-2, por defecto RSA-2)
- Ficheros (para SSH-2)
- Clave privada: ~/.ssh/id_rsa o ~/.ssh/id_dsa (~/.ssh/identity para SSH-1)
- Clave pública: ~/.ssh/id_rsa.pub o ~/.ssh/id_dsa.pub (~/.ssh/identity.pub para SSH-1)
- La clave privada debe tener una passphrase de longitud arbitraria
- Puede cambiarse con la opción -p
- ssh-agent Agente de autenticación
- Mantiene en memoria la clave privada
- Evita tener que escribir la passphrase cada vez que usemos ssh
- Habitualmente, si entramos en X11 se activa automáticamente
- Opción use-ssh-agent de /etc/X11/Xsession.options (ver man xsession.options)
- Para activarlo en consola usar (como usuario)
eval $(ssh-agent)
- Define las variables SSH_AUTH_SOCK y SSH_AGENT_PID
- ssh-add Añade las claves privadas al agente
- Uso:
ssh-add [opciones] [-t life] [fichero]
- Por defecto añade los ficheros ~/.ssh/id_rsa, ~/.ssh/id_dsa y ~/.ssh/identity, pidiendo las correspondientes passphrases
- Pueden añadirse múltiples claves
- En una conexión se prueban las diferentes claves hasta que coincide
- Algunas opciones:
- -l Muestra las identidades añadidas
- -t life Especifica un tiempo de vida de la identidad
- Uso: