Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Xabiel Garca Paeda David Melendi Palacio Manuel Vilas Paz Roberto Garca Fernndez
El protocolo TELNET
El cliente establece con el servidor una conexin TCP/IP
Normalmente en el puerto TCP:23
El cliente lee de la terminal TELNET El cliente enva al servidor El servidor recibe TELNET
Sistema Operativo
Sistema Operativo
TCP/IP
El servidor enva una pseudo terminal
Adaptarse a la heterogeneidad
El TELNET debe inter-operar con tantos sistemas como sea posible
Algunos sistemas necesitan el carcter CR (retorno de carro) para marcar el final de lnea Otros necesitan el LF (alimentacin de lnea) Otros la combinacin de ambos CR-LF
Para adaptarse, TELNET define cmo deben mandarse las secuencias de datos y comandos Se define el Terminal Virtual de Red (Network Virtual Terminal) (NVT)
Internet
Cliente Formato NVT Servidor
Sistema Servidor
RED
Las caractersticas bsicas de una NVT, a menos que sean modificadas por opciones establecidas de comn acuerdo, son:
Los datos se representan en cdigo ASCII de 7 bits, transmitido en bytes de 8 bits La NVT es un dispositivo semi-duplex que opera en modo de buffer en lnea La NVT proporciona una funcin de eco local
Problemas de TELNET
La autenticacin de usuarios (login y password) viaja en claro por la red
Un atacante situado en algn punto intermedio, o un usuario de la mquina de destino con permisos suficientes, podra analizar el trfico y hacerse con esta informacin
2. Cuando un usuario local de la mquina se conecte, el usuario malintencionado dispone del nombre y la contrasea en esa mquina y posiblemente en otras.
Solucin: SSH
SSH (Secure Shell) Autentifica los dos extremos de la conexin
El servidor se autentica ante el cliente con un certificado El cliente se autentica ante el servidor
Usuario y password Certificados
Versin a utilizar Modos de autenticacin y encriptacin soportados Cliente y servidor acuerdan una clave dinmica para codificar los datos de esa sesin Intercambio de clave de Diffie-Hellman Datos en claro
A y B llegan a un secreto compartido sin que este sea transmitido sobre la red en ningn momento
Un atacante puede conocer p, g, ga mod p y gb mod p y no podra obtener la clave
Las operaciones de aritmtica modular con nmeros primos grandes (1024bits) escogidos cuidadosamente son no reversibles
Autentificacin
Cada servidor dispone de una clave que le permite autenticarse ante el cliente
El cliente puede comprobar esta clave contra una base de datos local relacionando IPs y claves El cliente puede recurrir a una tercera entidad (autoridad certificadora) para comprobar la validez del certificado
Esta clave no se usa para proteger la sesin, solo para identificar a las partes El proceso de autentificacin se basa en la presencia de un transporte seguro establecido previamente
Clave pblica
Conocida por todo el mundo
Clave privada
Conocida solo por su propietario
Mensaje
Mensaje Encriptado
Mensaje
Algoritmo
Algoritmo
Solo el poseedor de la clave privada puede desencriptar los mensajes El resto tendran que implementar un ataque por fuerza bruta, que, con las capacidades de computo actuales y la seleccin correcta de las claves es inviable Permite la firma de mensajes garantizando su autenticidad
Xabiel Garca Paeda David Melendi Palacio Manuel Vilas Paz Roberto Garca Fernndez
Durante la instalacin se crea los ficheros de configuracin por defecto, se incluye el script de arranque del servicio y se crean los certificados del servidor Ficheros de configuracin en:
/etc/ssh/sshd_config /etc/ssh/ssh_host_dsa_key Clave privada para firmar los mensajes
Si este fichero tiene permisos de lectura universales el OpenSSH no lo utilizar
Funcionamiento OpenSSH
/etc/init.d/ssh restart/start
En el arranque o tras solicitud del usuario, se inicia el servicio
Llama a /usr/sbin/sshd Salvo que se le indique lo contrario, lee el fichero de configuracin por defecto /etc/ssh/sshd_config
/usr/sbin/sshd
sshd_config
Opcin 1 Opcin 2 Opcin N
Los contenidos del fichero marcan como se comporta sshd para las sesiones establecidas a partir de este momento. Para las anteriores, siguen aplicndose los parmetros definidos cuando se iniciaron P. Ej: Si se niega la entrada a un usuario, este no es expulsado
Control de acceso
En la mquina hay cuentas de usuario1, usuario2, usuario3 y root. Usuario1 solo tiene permiso para acceder en local
usuario1
Usuario2 y Usuario3 pueden acceder en remoto autenticndose mediante un certificado de cliente (no usa password) Usuario3 dej sus credenciales accesibles de forma pblica
usuario2
usuario3 root?
Hay dos versiones del protocolo (se recomienda por motivos de seguridad la 2). Para seleccionar entre ellas
Protocol 2,1
Control de sesiones
Conexin 1
Conexin 2
Conexin N
Un usuario podra abrir Los recursos de la mquina sesiones de forma remota y remota son limitados (CPUs, detener el proceso antes de memoria, puertos,) autenticarse (introducir el usuario) Tenemos que controlar este fenmeno, limitando el nmero de conexiones abiertas sin autenticar, el tiempo mximo que puede estar abierta una conexin sin autenticar y el nmero mximo de intentos antes de una autenticacin correcta.
Enviar mensajes solicitando respuesta del cliente cada NUM segundos. Evita la caducidad de las sesiones en equipos NAT/PAT y Firewalls
ClientAliveInterval NUM (Por defecto = 0)
Control de sesiones cadas para evitar consumos innecesarios en el servidor. Con este valor a yes se monitoriza la disponibilidad de la conexin
TCPKeepAlive [yes/no]
Ejercicio 1
Desplegar un servicio SSH que:
Solo admita la versin 2 (ms segura) del protocolo Permita el acceso al usuario1 pero no al usuario2
Autentificandose con su usuario y contrasea local del equipo
No permita directamente el acceso al usuario root Limite a dos el nmero de intentos de autentificacin antes de uno correcto Limite a 60 segundos el tiempo que un usuario puede consumir una lnea sin autenticarse Limite a 15 minutos la duracin de las sesiones evitando los despistes de los usuarios Mostrar un banner de entrada con un aviso sobre la funcionalidad del servicio y el almacenamiento en un fichero de log de las actividades del usuario
Definir donde se almacenan los certificados de cada usuario. El valor por defecto es dentro de la carpeta HOME de cada usuario el fichero .ssh/authorized_keys
AuthorizedKeysFile /PATH/nombre Se pueden utilizar %h para identificar el HOME de un usuario y %u para identificar el nombre de usuario que est accediendo
Permitir solo el login basado en certificados a aquellos usuarios que definan los permisos correctos y no tengan sus claves pblicamente accesibles
StrictModes yes
Proceso de importacin
Generar claves Servidor ssh Acceso ssh Grabar
PuttyGen
Importar desde PuttyGen Exportar a ppk Importar desde Putty
Putty
4. Comprobar los permisos del fichero!!!!! 5. Copiar el fichero de clave privada a un soporte seguro y llevarlo al cliente
Importar la clave
Conversions -> Import Key Seleccionar id_dsa
Proporcionar la password asignada durante la creacin
Proporcionar los datos sobre IP y puerto Pulsar Open Conseguimos el acceso sin necesidad de teclear la password!!!!!!!
Ejercicio 2
Sobre el servicio SSH desplegado anteriormente:
Habilitar la autentificacin mediante certificados Habilitar el acceso mediante certificados para el usuario1 Comprobar el funcionamiento desde un cliente Windows con la aplicacin Putty
Adems, incluye soporte a subsistemas externos, como el sftp (Secure FTP) Para activar este soporte en OpenSSH
Subsystem sftp /usr/lib/openssh/sftp-server
Al igual que para el protocolo FTP, existen clientes grficos para el protocolo SFTP
WinSCP FileZilla
WinSCP
Confirmacin de operaciones sobre ficheros Almacenamiento de parmetros de sesin Ejecucin de comandos no relacionados con la transferencia de ficheros Servicio automtico de actualizaciones Integracin con Putty, Puttygen Soporte a autentificacin por certificados
Ejercicio 3
Descargar mediante FTP el fichero ejemplos.rar del Servidor SFTP que se indique Subir los contenidos al servidor de cada grupo de usuarios
Para limitar la cantidad de logins que una IP puede hacer en un perodo determinado de tiempo
#Aadimos las IPs de las conexiones nuevas (solo las nuevas NEW) a un lista recent iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set #Si hay ms de 4 ocurrencias de una cierta IP en la lista recent en los ltimos 60 segundos, descartamos iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
#!/bin/bash #Definimos un control de trfico basado en Token Bucket tc qdisc add dev eth0 root handle 1: htb default 30 #Definimos un consumo mximo de 10Mbps con una rfaga de 15Kbytes tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit burst 15k #Definimos lmites de trfico para las diferentes clases tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit burst 15k tc class add dev eth0 parent 1:1 classid 1:20 htb rate 7mbit ceil 10mbit burst 15k tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1mbit ceil 10mbit burst 15k #Definimos la gestin de cola en cada clase tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10 #Clasificamos los distintos tipos de trfico tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 22 0xffff flowid 1:10 tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 80 0xffff flowid 1:20
Si queremos eliminar las lneas aplicadas anteriormente: tc qdisc del dev eth0 root