
Proxy HTTP/HTTPS sobre SSH
Proxy HTTP/HTTPS sobre SSH.
go install github.com/justmao945/mallory/cmd/mallory@latestLa ruta predeterminada es $HOME/.config/mallory.json, se puede establecer al iniciar el programa
mallory -config path/to/config.json
Contenido:
id_rsa es la ruta a nuestro archivo de clave privada, se puede generar con ssh-keygenlocal_smart es la dirección local para servir el proxy HTTP con detección inteligente del host de destinolocal_normal es similar a local_smart pero envía todo el tráfico a través del servidor SSH remoto sin detección del host de destinoremote es la dirección remota del servidor SSHblocked es una lista de dominios que necesitan usar proxy, cualquier otro dominio se conectará directamente a su servidor{
"id_rsa": "$HOME/.ssh/id_rsa",
"local_smart": ":1315",
"local_normal": ":1316",
"remote": "ssh://[email protected]:22",
"blocked": [
"angularjs.org",
"golang.org",
"google.com",
"google.co.jp",
"googleapis.com",
"googleusercontent.com",
"google-analytics.com",
"gstatic.com",
"twitter.com",
"youtube.com"
]
}
La lista bloqueada en el archivo de configuración se recargará automáticamente cuando se actualice, y puedes hacerlo manualmente:
# send signal to reload
kill -USR2 <pid of mallory>
# or use reload command by sending http request
mallory -reload
localhost con el puerto 1315 para usar con la lista de bloqueohttp_proxy y https_proxy a localhost:1316 para uso en terminalmallory -suffix www.google.com
# install it: go get github.com/justmao945/mallory/cmd/forward
# all traffic through port 20022 will be forwarded to destination.com:22
forward -network tcp -listen :20022 -forward destination.com:22
# you can ssh to destination:22 through localhost:20022
ssh root@localhost -p 20022
Considerando el siguiente archivo de configuración:
$ cat mallory.json
{
"id_rsa": "/tmp/id_rsa",
"local_smart": ":1315",
"local_normal": ":1316",
"remote": "ssh://[email protected]:22"
}
Puedes ejecutar el contenedor (zoobab/mallory) montando el archivo de configuración, la clave SSH, y mapeando los 2 puertos:
$ docker run -v $PWD/mallory.json:/root/.config/mallory.json -p 1316:1316 -p 1315:1315 -v $PWD/.ssh/id_rsa:/tmp/id_rsa zoobab/mallory
mallory: 2020/03/30 16:51:10 main.go:22: Starting...
mallory: 2020/03/30 16:51:10 main.go:23: PID: 1
mallory: 2020/03/30 16:51:10 config.go:103: Loading: /root/.config/mallory.json
mallory: 2020/03/30 16:51:10 main.go:30: Connecting remote SSH server: ssh://[email protected]:22
mallory: 2020/03/30 16:51:10 main.go:38: Local normal HTTP proxy: :1316
mallory: 2020/03/30 16:51:10 main.go:48: Local smart HTTP proxy: :1315
Mi caso de uso era conectarme a un clúster de Kubernetes (Openshift) instalado detrás de un bastión SSH:
$ export http_proxy=http://localhost:1316
$ export https_proxy=https://localhost:1316
$ oc login https://master.mycluster.zoobab.com:8443
Authentication required for https://master.mycluster.zoobab.com:8443 (openshift)
Username: bhenrion
Password:
Login successful.