¿Cómo puedo configurar un proxy SOCKS sobre ssh con autenticación basada en contraseña en CentOS?

10

Sé cómo configurar un proxy simple usando ssh -D, pero quiero usar la autenticación basada en nombre de usuario y contraseña para este caso. ¿Hay alguna manera?

davyzhang
fuente

Respuestas:

5

El reenvío dinámico de puertos a nivel de aplicación ( ssh -D) no admite esta función. Echa un vistazo al Dante para:

[I] net-proxy/dante
     Available versions:  1.1.19-r4 (~)1.2.3 (~)1.3.0 (~)1.3.1 (~)1.3.1-r1 (~)1.3.2 {debug kerberos pam selinux static-libs tcpd}
     Installed versions:  1.3.2(04:14:03 PM 11/08/2011)(pam static-libs tcpd -debug -kerberos -selinux)
     Homepage:            http://www.inet.no/dante/
     Description:         A free socks4,5 and msproxy implementation

Pero tenga en cuenta que la contraseña se transmite en texto sin cifrar .

Para configurar la autenticación basada en nombre de usuario, abra el /etc/sockd.confarchivo y añadir / cambiar la siguiente:

logoutput: syslog /var/log/dante.log

# methods for socks-rules.
method: username #rfc931

# when doing something that can require privilege, 
# it will use the userid "sockd".
user.privileged: root

# when running as usual, 
# it will use the unprivileged userid of "sockd".
user.notprivileged: sockd

pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    protocol: tcp udp
    command: bind connect udpassociate
    log: error
    method: username
}

Verifique los enchufes de escucha después de comenzar:

# netstat -nlp | grep sockd
tcp        0      0 127.0.0.1:1080          0.0.0.0:*               LISTEN      5463/sockd          
tcp        0      0 192.168.15.36:1080      0.0.0.0:*               LISTEN      5463/sockd        

Eche un vistazo al archivo de registros ( /var/log/messageso /var/log/dante.log) si obtiene algo incorrecto.

PD: el archivo de contraseña del sistema ( /etc/passwd) se utiliza para verificar una combinación de nombre de usuario y contraseña.

quanta
fuente
4

ssh -Dno requiere requerir una contraseña para acceder, y con la implementación actual no se puede hacer que requiera una contraseña. Si lo desea, puede configurar un proxy de varias etapas utilizando un servidor http existente (por ejemplo, apache) que luego utiliza el túnel ssh para su conexión saliente.

Por otra parte, si llega tan lejos en las malezas, entonces probablemente esté yendo por el camino equivocado y tal vez deba repensar lo que está tratando de lograr.

tylerl
fuente