Comment puis-je configurer un proxy SOCKS sur ssh avec une authentification par mot de passe sur CentOS?

10

Je sais comment configurer un proxy simple à l'aide ssh -D, mais je veux utiliser l'authentification basée sur le nom d'utilisateur et le mot de passe pour ce cas. Y a-t-il un moyen?

davyzhang
la source

Réponses:

5

La redirection de port dynamique au niveau de l'application ( ssh -D) ne prend pas en charge cette fonctionnalité. Jetez plutôt un œil au Dante :

[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

Mais notez que le mot de passe est transmis en texte clair .

Pour configurer l'authentification basée sur le nom d'utilisateur, ouvrez le /etc/sockd.conffichier et ajoutez / modifiez les éléments suivants:

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
}

Vérifiez les prises d'écoute après le démarrage:

# 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        

Jetez un œil au fichier journaux ( /var/log/messagesou /var/log/dante.log) si vous vous trompez.

PS: le fichier de mot de passe système ( /etc/passwd) est utilisé pour vérifier une combinaison nom d'utilisateur / mot de passe.

quanta
la source
4

ssh -Dne nécessite pas de mot de passe pour l'accès, et avec l'implémentation actuelle, il n'est pas possible d'exiger un mot de passe. Si vous le souhaitez, vous pouvez configurer un proxy à plusieurs étapes en utilisant un serveur http sortant (par exemple, apache) qui utilise ensuite le tunnel ssh pour sa connexion sortante.

Là encore, si vous arrivez jusque-là dans les mauvaises herbes, vous vous engagez probablement dans la mauvaise direction et devrez peut-être repenser ce que vous essayez d'accomplir.

tylerl
la source