Con SSH, las cosas se hacen así:
- en la computadora portátil, ejecute
ssh -N -D 5000 proxy-machine
(donde proxy-machine
es el nombre DNS de la máquina "Proxy web");
- configure el navegador para usar el protocolo SOCKS en
localhost
y el puerto 5000.
Esto es conveniente y se activa en mucho menos de 20 minutos. Sin embargo, tiene las siguientes consecuencias:
- El usuario de la computadora portátil debe ejecutar el comando
ssh
y mantenerlo en ejecución mientras desee navegar por Internet a través del proxy.
- El comando
ssh
debe estar instalado en la computadora portátil (es un problema estándar con MacOS X, Linux y todos los sistemas similares a Unix, pero no con Windows).
- La máquina Proxy Web debe ejecutar un servidor SSH.
- El usuario de la computadora portátil debe tener una cuenta en la máquina de Proxy Web (es posible restringir esa cuenta a la configuración de túneles como el que se muestra arriba, pero no es fácil de configurar).
Con SSL, tendría que instalar algún software proxy en el Proxy Web (por ejemplo, squid ) y configurarlo con un Certificado X.509, para que los clientes (la computadora portátil) usen https://proxy-machine:9000/
como URL proxy (el número de puerto se puede cambiar a voluntad, usé 9000 como ejemplo). No hay software para instalar en la computadora portátil; el navegador solo tiene que estar configurado para usar la URL correcta como un proxy de nivel HTTP. Desconfíe de los scripts de configuración automática del proxy, podrían ser formas para que el atacante fuerce otra configuración de proxy; Será mejor que configures el proxy manualmente.
SSL y SSH usan distintas protecciones contra los ataques Man-in-the-Middle. El cliente SSH registra la clave pública de la máquina de destino (en el archivo $HOME/.ssh/known_hosts
en sistemas similares a Unix) para que pueda verificar que la clave pública del servidor es la correcta; Solo la primera conexión es vulnerable. Las claves públicas de SSH tienen huellas digitales (es decir, valores hash) que se pueden usar para verificar que una clave es correcta (la idea es que puede llamar al administrador del sistema, y él deletreará la huella digital; esto es tedioso pero debe hacerse solo una vez por servidor SSH). Hasta que la computadora portátil o el proxy se vean comprometidos, o los algoritmos criptográficos sean demolidos por los criptoanalistas furiosos, la forma SSH es segura.
SSL se basa en certificados X.509 . La seguridad proviene del conjunto de anclajes de confianza (también conocidos como "certificados raíz") que ya están incorporados en el navegador (o el sistema operativo). Se supone que las autoridades de certificación deben emitir certificados solo a entidades debidamente autenticadas, y las firmas digitales son las herramientas criptográficas mediante las cuales el navegador puede verificar que los contenidos de los certificados no han sido manipulados, y solo las autoridades de certificación aceptadas han participado. Para montar un MitM, un atacante tendría que sobornar a una CA para que emita un certificado falso, con el nombre proxy-machine
, pero con una clave pública de propiedad del atacante.
La seguridad X.509 se basa en muchas más suposiciones que la seguridad SSH, que se maneja localmente y donde lo que sucede es bastante simple. Pero el escenario de SSH requiere que el usuario de la computadora portátil esté un poco más consciente de lo que está sucediendo. Para yo , usaría SSH (de hecho, eso es lo que hago); para una organización con muchos usuarios, seguiría la ruta SSL (pero el requisito de "20 minutos" sería una broma).