Como posso configurar um proxy SOCKS sobre ssh com autenticação baseada em senha no CentOS?

8

Eu sei como configurar um proxy simples usando ssh -D , mas eu quero usar autenticação baseada em nome de usuário e senha para este caso. Existe alguma maneira?

    
por davyzhang 30.11.2011 / 04:30

2 respostas

5

Encaminhamento de porta no nível do aplicativo dinâmico ( ssh -D ) não suporta esse recurso. Dê uma olhada no 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

Mas note que a senha é transmitida em texto não criptografado .

Para configurar a autenticação baseada em nome de usuário, abra o arquivo /etc/sockd.conf e adicione / altere o seguinte:

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 os soquetes de escuta depois de iniciar:

# 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        

Dê uma olhada no arquivo de registros ( /var/log/messages ou /var/log/dante.log ) se tiver algo errado.

PS: o arquivo de senha do sistema ( /etc/passwd ) é usado para verificar uma combinação de nome de usuário e senha.

    
por 30.11.2011 / 08:47
3

ssh -D não requer a exigência de senha para acesso e, com a implementação atual, não é possível exigir uma senha. Se desejar, você pode configurar um proxy de vários estágios usando um servidor HTTP existente (por exemplo, apache) que, em seguida, usa o túnel ssh para sua conexão de saída.

Então, novamente, se você chegar tão longe nas ervas daninhas, então provavelmente você está indo pelo caminho errado e talvez precise repensar o que você está tentando realizar.

    
por 30.11.2011 / 07:10