SEGURIDAD EN REDES NOMBRE: Daniel Leonardo

SEGURIDAD EN REDES
NOMBRE: Daniel Leonardo Proaño Rosero
TEMA: SSH server
SSH (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un
protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a
través de una red. Permite manejar por completo la computadora mediante un intérprete
de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas
gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.
Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura
(tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para
no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra
aplicación por un canal seguro tunelizado mediante SSH.
SSH trabaja de forma similar a como se hace con telnet La diferencia principal es que
SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de
comunicación vaya de manera no legible y ninguna tercera persona pueda descubrir el
usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión; aunque
es posible atacar este tipo de sistemas por medio de ataques de REPLAY y manipular así
la información entre destinos.
Configuración de WinSSHD
Ya que se ha instalado el programa procedemos a configurarlo. Para crear un usuario en
el servidor WinSSHD abrimos el WinSSHD Control Panel y nos dirigimos a la opción Edit
settings.
Ahora nos dirigimos a la opción de Virtual groups donde vamos a crear los usuarios.
En la siguiente ventana procedemos a crear el usuario y asignarle una contraseña, así
mismo existen muchas opciones para asignarle al usuario como el número de conexiones,
directorio inicial del usuario, autenticación, etc.
Es importante asignarle un Virtual Group al usuario que se va a crear caso
contrario devuelve un error y el usuario no se crea.
Una vez realizado estos pasos se procede a iniciar el servicio en la ventana de
WinSSHD Control Panel en la opción Start WinSSHD.
Linux OpenSSH OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que
permiten realizar comunicaciones cifradas a través de una red, usando el protocolo SSH.
Fue creado como una alternativa libre y abierta al programa Secure Shell, que es software
propietario.
Se considera es más segura que su contraparte propietaria debido a la constante
auditoría que se realiza sobre el código fuente por parte de una gran comunidad de
desarrolladores, una ventaja que brinda al tratarse de un proyecto de fuente abierta.
OpenSSH incluye servicio y clientes para los protocolos SSH, SFTP y SCP.
Configuración de OpenSSH
Para el desarrollo de este documento se utilizo la distribución Centos 5.3.
Mediante el terminal:
# yum install openssh
Una vez instalado se procede a configurar el archivo opensshd_config para eso
desde el terminal digitamos lo siguiente:
# vi /etc/ssh/opensshd_config
En el archivo de configuración se analiza los siguientes parámetros:
Parámetro Port.
Una forma de elevar considerablemente la seguridad al servicio de SSH, es cambiar el
número de puerto utilizado por el servicio, por otro que solo conozca el administrador del
sistema. A este tipo de técnicas se les conoce como Seguridad por Oscuridad. La mayoría
de los delincuentes informáticos utiliza guiones que buscan servidores que respondan a
peticiones a través del puerto 22. Cambiar de puerto el servicio de SSH disminuye
considerablemente la posibilidad de una intrusión a través de este servicio.
Port 22
SSH trabaja a través del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el
1025 y 65535. Ejemplo:
Port 52341
Parámetro ListenAddress.
Por defecto, el servicio de SSH responderá peticiones a través de todas las interfaces del
sistema. En algunos casos es posible que no se desee esto y se prefiera limitar el acceso
sólo a través de una interfaz a la que sólo se pueda acceder desde la red local. Para tal
fin puede establecerse lo siguiente, considerando que el servidor a configurar posee la IP
192.168.1.105:
ListenAddress 192.168.1.254
Parámetro PermitRootLogin.
Establece si se va a permitir el acceso directo del usuario root al servidor SSH.
Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente
utilizar este parámetro con el valor no.
PermitRootLogin no
Parámetro X11Forwarding.
Establece si se permite o no la ejecución remota de aplicaciones gráficas. Si se va a
acceder hacia el servidor desde red local, este parámetro puede quedarse con el valor
yes. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará
prudente utilizar este parámetro con el valor no.
X11Forwarding yes
Parámetro AllowUsers.
Permite restringir el acceso por usuario y, opcionalmente, anfitrión desde el cual pueden
hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que solo
puedan hacerlo los usuarios aaaguirre y uprueba, desde cualquier anfitrión.
AllowUsers aaaguirre uprueba
Permite restringir el acceso por usuario y, opcionalmente, anfitrión desde el cual pueden
hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que solo
puedan hacerlo los usuarios aaaguirre y uprueba, solamente desde los anfitriones
192.168.0.100 y 192.168.0.101.
AllowUsers aaaguirre@192.168.0.100 uprueba@192.168.0.101
Aplicando los cambios.
El servicio de SSH puede iniciar, detenerse o reiniciar a través de un guión similar a los
del resto del sistema. De tal modo, podrá iniciar, detenerse o reiniciar a través del
mandato service.
Para ejecutar por primera vez el servicio, utilice:
# service sshd start
Para hacer que los cambios hechos a la configuración surtan efecto, utilice:
# service sshd restart
Para detener el servicio, utilice:
# service sshd stop
Los usuarios que se añadieron anteriormente en el archivo de configuración son usuarios
creados en el sistema operativo del Servidor y podemos añadir más usuarios como se
puede ver en la siguiente imagen.
Alternativas a SSH: SSL, S-HTTP e IPsec.
SSH ofrece una solución completa a gran variedad de problemas relacionados con la
seguridad. En este apartado se abordaran diferentes protocolos utilizados en
comunicaciones seguras, tanto generales (caso de SSL) o especificas para la web
(Secure HTTP).
SSL (Secure Sockets Layer) es un protocolo desarrollado por Netscape en el año 1994,
para transmitir documentos privados a través de Internet. Está basado en la aplicación
conjunta de criptografía simétrica, criptografía asimétrica, certificados digitales y firmas
digitales para conseguir un canal o medio seguro de comunicación a través de Internet.
SSL trabaja usando una clave privada para encriptar los datos que son transmitidos por
una conexión SSL. SSL ejecuta un protocolo de negociación para establecer una
conexión segura a nivel de socket (nombre de la maquina más el puerto), haciendo que
los servicios de seguridad sean transparentes al usuario y a la aplicación.
Su mayor ventaja es que funciona entre la capa TCP y la capa de aplicación, por esto es
muy fácil usarlo para proteger los protocolos de la capa de aplicación (por ejemplo FTP,
gopher, HTTP...) sin tener que realizar cambios importantes en los mismos. Más
concretamente, para asegurar el protocolo HTTP, surgió HTTPS, que mediante el uso de
SSL consigue que la comunicación en la web sea segura. Sirve para crear un canal
cifrado (cuyo nivel de cifrado depende del servidor remoto y del navegador utilizado por el
cliente) más apropiado para el tráfico de información sensible que el protocolo HTTP. Es
utilizado principalmente por entidades bancarias, tiendas en línea, y cualquier tipo de
servicio que requiera el envío de datos personales o contraseñas. Actualmente es el
estándar de comunicación segura en los navegadores web más importantes.
En comparación con SSH, podemos decir que ambos protocolos pueden ser instalados en
un mismo servidor, complementándose uno al otro. Su mayor diferencia está en que SSH
cifra todos los canales que utiliza, mientras que SSL no.
Secure HTTP (S-HTTP), los protocolos S-HTTP están integrados con HTTP.
Aquí, los servicios de seguridad se negocian a través de las cabeceras y atributos de la
página. Por lo tanto, los servicios de S-HTTP están disponibles sólo para las conexiones
de HTTP. Es un protocolo a nivel de aplicación, que extiende HTTP para hacerlo seguro.
Las negociaciones entre el cliente y el servidor tienen lugar intercambiando datos
formateados. Estos datos incluyen una variedad de opciones de seguridad y algoritmos a
utilizar.
IPsec (IP Security) son un conjunto de protocolos desarrollados por la IETF
para soportar intercambio de paquetes de forma segura a nivel IP.
Consigue además, al trabajar a nivel IP, seguridad para los niveles superiores.
En un primero momento fue desarrollado para Ipv6, para posteriormente adaptarlo para
Ipv4. IPsec ha sido ampliamente utilizado para la implementación de VPNs (Virtual
Private Networks). IPsec soporta dos tipos de encriptado: Transport y Tunnel. El
primero, solo se encripta la porción de datos de cada paquete, dejando las cabeceras
intactas. Por su parte el modo Tunnel, más seguro, cifra tanto los datos como las
cabeceras. De esta forma un datagrama IP se encapsula por completo en un nuevo
datagrama IPsec. La diferencia principal con SSH, radica en el hecho de que IPsec está
orientado a proteger todo el tráfico que circula por la red, pero sin autentificar al usuario,
mientras que SSH identifica tanto al usuario como al servidor. La elección de uno u otro,
se debe basar en un estudio de las necesidades en cada situación. Es posible incluso
utilizar SSH y IPsec de forma conjunta, de forma que primero se establece un túnel
IPsec y luego utilizamos SSH para hacer login con la maquina remota.
Bibliografía
http://es.wikipedia.org/wiki/Secure_Shell