¿Qué es SSH?
SSH: Protocolo Secure Shell
1. Introducción a SSH
¿Qué es SSH?
Los programas de servicios de red tradicionales, como ftp, pop y telnet, son inherentemente inseguros porque transmiten contraseñas y datos en texto plano en la red. Las personas con motivos ocultos pueden interceptarlos fácilmente. Además, los métodos de verificación de seguridad de estos programas de servicio también tienen sus debilidades, es decir, son fácilmente vulnerables a ataques de "intermediario". El método de ataque llamado "intermediario" consiste en que el "intermediario" se hace pasar por un servidor real para recibir los datos que usted envía al servidor, y luego se hace pasar por usted y envía los datos al servidor real. servidor. Después de que el "intermediario" cambie y altere la transmisión de datos entre el servidor y usted, surgirán problemas graves.
El nombre completo en inglés de SSH es Secure Shell. Al utilizar SSH, puede cifrar todos los datos transmitidos, lo que imposibilita los ataques de "intermediario" y evita la suplantación de DNS e IP. Una ventaja adicional es que los datos transmitidos se comprimen, por lo que se puede acelerar la velocidad de transmisión. SSH tiene muchas funciones. No sólo puede reemplazar a telnet, sino que también proporciona un "canal" seguro para ftp, pop e incluso ppp.
SSH fue desarrollado originalmente por una empresa de Finlandia. Sin embargo, debido a las restricciones sobre los derechos de autor y los algoritmos de cifrado, muchas personas ahora están recurriendo a OpenSSH. OpenSSH es un software alternativo a SSH y es gratuito. Se puede esperar que cada vez más personas lo utilicen en lugar de SSH en el futuro.
SSH se compone de software de cliente y servidor. Hay dos versiones incompatibles: 1.x y 2.x. El programa cliente de SSH 2.x no puede conectarse al programa de servicio de SSH 1.x. OpenSSH 2.x admite SSH 1.x y 2.x.
Cómo funciona la verificación de seguridad SSH
Desde la perspectiva del cliente, SSH proporciona dos niveles de verificación de seguridad.
El primer nivel (verificación de seguridad basada en contraseña) le permite iniciar sesión en el host remoto siempre que conozca su cuenta y contraseña. Todos los datos transmitidos se cifrarán, pero no hay garantía de que el servidor al que se está conectando sea el servidor al que desea conectarse. Puede haber otros servidores que se hacen pasar por el servidor real, lo cual es un ataque de "intermediario".
El segundo nivel (autenticación de seguridad basada en claves) se basa en claves, es decir, debe crear un par de claves para usted mismo y colocar la clave pública en el servidor al que necesita acceder. Si desea conectarse a un servidor SSH, el software del cliente solicitará al servidor que utilice su clave para la verificación de seguridad. Después de que el servidor recibe la solicitud, primero busca su clave pública en su directorio personal del servidor y luego la compara con la clave pública que envió. Si las dos claves coinciden, el servidor cifra el "desafío" utilizando la clave pública y la envía al software del cliente. Una vez que el software del cliente recibe el "desafío", puede descifrarlo con su clave privada y enviarlo al servidor.
De esta forma, deberás conocer la contraseña de tu clave. Sin embargo, en comparación con el primer nivel, el segundo nivel no requiere que la contraseña se transmita a través de la red.
El segundo nivel no sólo cifra todos los datos transmitidos, sino que también imposibilita los ataques de "hombre en el medio" (porque no tiene su clave privada). Pero todo el proceso de inicio de sesión puede tardar 10 segundos.
2. Introducción a SSL (Secure Socket Layer & Security Socket Layer)
Los requisitos de seguridad de una aplicación dependen en gran medida de cómo se utilizará la aplicación y de qué se protegerá. . Sin embargo, a menudo es posible implementar una seguridad sólida y de propósito general utilizando tecnologías existentes. La certificación es un buen ejemplo.
Cuando un cliente quiere comprar un producto en un sitio web, tanto el cliente como el sitio web deben autenticarse. El cliente suele autenticarse proporcionando un nombre y una contraseña. Un sitio web, por otro lado, se autentica intercambiando datos firmados y un certificado X.509 válido como parte del protocolo de enlace SSL. El navegador del cliente verifica el certificado y verifica los datos firmados utilizando la clave pública adjunta. Una vez que ambas partes estén autenticadas, la transacción puede comenzar.
SSL puede manejar la autenticación del servidor (como en el ejemplo anterior) y la autenticación del cliente utilizando el mismo mecanismo. Los sitios web normalmente no dependen de SSL para la autenticación del cliente; es más fácil exigir a los usuarios que proporcionen contraseñas. Si bien la autenticación SSL de cliente y servidor es perfecta para una autenticación transparente, la autenticación transparente debe realizarse entre pares, como en las aplicaciones p2p.
Secure Sockets Layer (SSL), SSL es un protocolo de seguridad que proporciona privacidad a las comunicaciones a través de una red, como Internet. SSL permite que las aplicaciones se comuniquen sin temor a ser escuchadas o manipuladas. SSL son en realidad dos protocolos que funcionan juntos: "Protocolo de registro SSL" y "Protocolo de protocolo de enlace SSL". El "Protocolo de registro SSL" es el protocolo de nivel inferior de los dos protocolos que cifra y descifra registros de datos de longitud variable para protocolos de nivel superior, como el protocolo de protocolo de enlace SSL. El protocolo de enlace SSL maneja el intercambio y la verificación de las credenciales de la aplicación.
Cuando una aplicación (cliente) quiere comunicarse con otra aplicación (servidor), el cliente abre una conexión de socket con el servidor. Luego, el cliente y el servidor negocian una conexión segura. Como parte de la negociación, el servidor se autentica ante el cliente. El cliente puede optar por autenticarse en el servidor o no. Una vez que se completa la autenticación y se establece una conexión segura, las dos aplicaciones pueden comunicarse de forma segura. Por convención, consideraré que el par que inicia la comunicación es el cliente y el otro par es el servidor, independientemente de sus roles después de la conexión.
Dos pares llamados A y B quieren comunicarse de forma segura. En el contexto de nuestra sencilla aplicación p2p, el par A quiere consultar al par B sobre un recurso. Cada par tiene una base de datos (llamada almacén de claves) que contiene su clave privada y un certificado que contiene su clave pública. Proteger con contraseña el contenido de la base de datos. La base de datos también contiene uno o más certificados autofirmados de pares confiables. El par A inicia esta transacción, cada par se autentica entre sí y los dos pares negocian la contraseña y su longitud y establecen un canal seguro. Después de completar estas operaciones, cada par sabe con quién está hablando y sabe que el canal es seguro. El protocolo SSL (Secure Socket Layer) utiliza principalmente un sistema de clave pública y tecnología de certificado digital X.509 para proteger la confidencialidad y la integridad de la transmisión de información. No puede garantizar el no repudio de la información y es principalmente adecuado para la comunicación punto a punto. Para la transmisión de información se utiliza habitualmente el método del Servidor Web.
Secure Socket Layer (SSL, Security Socket Layer) es un protocolo de seguridad basado en aplicaciones WEB propuesto por Netscape. Incluye: autenticación de servidor, autenticación de cliente (opcional), enlace SSL Integridad de datos y confidencialidad de datos en SSL. campo de golf. Para aplicaciones de comercio electrónico, el uso de SSL puede garantizar la autenticidad, integridad y confidencialidad de la información. Sin embargo, dado que SSL no firma digitalmente mensajes en la capa de aplicación, no puede proporcionar no repudio de transacciones. Esta es la mayor deficiencia de SSL en el comercio electrónico.
En vista de esto, Netscape ha introducido una función llamada "Firma de formulario" en todos los navegadores a partir de la versión 4.04 de Communicator. En el comercio electrónico, esta función se puede utilizar para firmar documentos que contienen información de compras y formularios de instrucciones de pago del usuario. para garantizar el no repudio de la información de la transacción. En resumen, no basta con utilizar un único protocolo SSL en el comercio electrónico para garantizar la seguridad de las transacciones, pero utilizar el modo "SSL + firma de formulario" puede proporcionar una mejor garantía de seguridad para el comercio electrónico.
------------------------------------------- ----- --------------------------------------------- ----- ---
(SSH: Secure Shell Protocol)
Secure Shell Protocol (SSH) es un protocolo que proporciona inicio de sesión remoto seguro y otros servicios de red seguros en una Red no segura. Secure Shell, también conocido como SSH, fue originalmente un programa en sistemas UNIX y luego se expandió rápidamente a otras plataformas operativas. SSH es una buena aplicación que, cuando se usa correctamente, puede cerrar los agujeros en su red. Más allá de eso, SSH es interesante por las siguientes razones: Los clientes SSH están disponibles en múltiples plataformas. Casi todas las plataformas UNIX (incluidas HP-UX, Linux, AIX, Solaris, Digital UNIX, Irrix, SCO y otras) pueden ejecutar SSH. Además, ya existen algunos clientes (algunos de ellos en versión beta) que pueden ejecutarse en plataformas operativas distintas a UNIX, incluidos OS/2, VMS, BeOS, Java, Windows 95/98 y Windows NT. De esta manera, puede ejecutar programas cliente SSH en casi todas las plataformas. Es gratuito para uso no comercial. El código fuente está disponible para muchas versiones de SSH y está disponible gratuitamente siempre que no se utilice con fines comerciales. Además, la versión UNIX también proporciona código fuente, lo que significa que cualquiera puede modificarlo. Sin embargo, si lo eliges con fines comerciales, sin importar qué versión de SSH uses, debes confirmar que te has registrado y obtenido los permisos correspondientes. La mayoría de los demonios y clientes SSH tienen algunas restricciones de registro. La única versión de Licencia pública general (GPL) SSH es lsh, que actualmente sigue siendo una versión beta. La transmisión de contraseñas a través de Internet es segura y confiable. Ésta es una de las ventajas reconocidas de SSH. Si examina el método de acceso a un ISP (proveedor de servicios de Internet, proveedor de servicios de Internet) o a una universidad, generalmente se utilizan procesos de cliente de correo Telnet o POP. Por lo tanto, siempre que desee ingresar a su cuenta, la contraseña que ingrese se enviará en un código claro (es decir, desprotegido y directamente legible), lo que le da al atacante la oportunidad de robar su cuenta y, en última instancia, usted será responsable de sus acciones. Responsable. Soporte para aplicaciones. Debido a que el código fuente de SSH es público, ha ganado un amplio reconocimiento en el mundo UNIX. Linux, cuyo código fuente también está abierto y disponible gratuitamente para el público, también ha recibido un reconocimiento similar. Esto permite que cualquier desarrollador (o cualquier persona) mejore su rendimiento e incluso agregue funcionalidad mediante parches o correcciones de errores. Esta es también la primera parte de la obtención e instalación de SSH, lo que significa que su rendimiento se puede mejorar continuamente sin necesidad de soporte técnico directo de los creadores originales. SSH reemplaza aplicaciones remotas inseguras. SSH está diseñado para reemplazar la versión Berkeley del conjunto de comandos r y también hereda una sintaxis similar. Como resultado, los usuarios no notan la diferencia entre usar los conjuntos de comandos SSH y r. También puedes hacer algunas cosas interesantes con él.
Al utilizar SSH, no tiene que preocuparse por ser monitoreado cuando envía información a través de una red no segura. También puede utilizar canales POP y métodos Telnet. Puede utilizar canales PPP para crear una red privada virtual (Virtual Private Network, VPN) a través de SSH. SSH también admite otros métodos de autenticación, como Kerberos y tarjetas de identificación seguras.
Sin embargo, debido a las restricciones sobre los derechos de autor y los algoritmos de cifrado, muchas personas ahora están recurriendo a OpenSSH. OpenSSH es un software alternativo a SSH y es gratuito. Se puede esperar que cada vez más personas lo utilicen en lugar de SSH en el futuro.
SSH se compone de software de cliente y servidor. Hay dos versiones incompatibles: 1.x y 2.x. El programa cliente de SSH 2.x no puede conectarse al programa de servicio de SSH 1.x. OpenSSH 2.x admite SSH 1.x y 2.x.
SSH consta principalmente de tres partes:
El protocolo de capa de transporte [SSH-TRANS] proporciona autenticación, confidencialidad e integridad del servidor. Además, a veces proporciona capacidades de compresión. SSH-TRANS normalmente se ejecuta a través de conexiones TCP/IP, pero también se puede utilizar a través de otros flujos de datos confiables. SSH-TRANS proporciona una sólida tecnología de cifrado, autenticación de host de contraseñas y protección de integridad. La autenticación en este protocolo se basa en el host y el protocolo no realiza la autenticación del usuario. Se pueden diseñar protocolos de autenticación de usuarios de nivel superior sobre este protocolo.
El protocolo de autenticación de usuario [SSH-USERAUTH] se utiliza para proporcionar funciones de autenticación de usuarios del cliente al servidor. Se ejecuta en el protocolo de capa de transporte SSH-TRANS. Cuando se inicia SSH-USERAUTH, recibe el identificador de sesión (del hash de intercambio H en el primer intercambio de claves) del protocolo de capa inferior. El identificador de sesión identifica de forma única esta sesión y se utiliza como token para demostrar la propiedad de la clave privada. SSH-USERAUTH también necesita saber si los protocolos de nivel inferior brindan protección de confidencialidad.
El protocolo de conexión [SSH-CONNECT] divide múltiples túneles cifrados en canales lógicos. Se ejecuta en el protocolo de autenticación de usuario. Proporciona sesiones de inicio de sesión interactivas, ejecución remota de comandos, reenvío de conexiones TCP/IP y reenvío de conexiones X11.
Una vez que se establece una conexión de capa de transporte segura, el cliente envía una solicitud de servicio. Cuando se complete la autenticación del usuario, se enviará una segunda solicitud de servicio. Esto permite que los protocolos recién definidos coexistan con los protocolos anteriores. Los protocolos de conexión proporcionan una amplia variedad de canales, con métodos estándar para establecer sesiones interactivas seguras y reenvío ("tunelización") de puertos TCP/IP propietarios y conexiones X11.
Al utilizar SSH, puede cifrar todos los datos transmitidos, de modo que los ataques "man-in-the-middle" sean imposibles, y también puede evitar la suplantación de DNS y la suplantación de IP. Un beneficio adicional de utilizar SSH es que los datos transmitidos se comprimen, por lo que se puede acelerar la velocidad de transmisión. SSH tiene muchas funciones. No sólo puede reemplazar a Telnet, sino que también proporciona un "canal" seguro para FTP, PoP e incluso PPP.
SSH se divide en dos partes: la parte del cliente y la parte del servidor.
El servidor es un demonio que se ejecuta en segundo plano y responde a las solicitudes de conexión de los clientes. El servidor es generalmente el proceso sshd, que proporciona procesamiento de conexión remota, que generalmente incluye autenticación de clave pública, intercambio de claves, cifrado de clave simétrica y conexiones no seguras.
El cliente incluye el programa ssh y otras aplicaciones como scp (copia remota), slogin (inicio de sesión remoto), sftp (transferencia segura de archivos), etc.
Su mecanismo de trabajo es, aproximadamente, que el cliente local envía una solicitud de conexión al servidor remoto, el servidor verifica el paquete solicitado y la dirección IP y luego envía la clave al cliente SSH, y luego el cliente local envía la clave La clave se envía de vuelta al servidor y se establece la conexión. De lo que acabo de hablar es solo del proceso general de conexión SSH. Existen algunas diferencias en los protocolos de conexión entre SSH 1.x y SSH 2.x.
SSH está diseñado para funcionar por sí solo sin utilizar un superservidor (inetd). Aunque es posible ejecutar el proceso SSH a través de tcpd en inetd, esto es completamente innecesario. Después de iniciar el servidor SSH, sshd se ejecuta y escucha en el puerto predeterminado 22 (puede usar # ps -waux | grep sshd para verificar si sshd se ha ejecutado correctamente. Si SSH no se inicia a través de inetd, entonces SSH esperará la conexión). pedido. Cuando llega una solicitud, el demonio SSH generará un proceso hijo que maneja la conexión.
SSH: nuevo modelo de desarrollo de software MVC, SSH (Struts, Spring, Hibernate). Struts realiza el control de procesos, Spring realiza el flujo de negocios e Hibernate encapsula las operaciones de la base de datos. Este nuevo modelo de desarrollo nos permite desarrollarlo de manera más conveniente. , más rápido y más claro!