Jak skonfigurować serwer proxy SOCKS przez ssh z uwierzytelnianiem opartym na hasłach w CentOS?

10

Wiem, jak skonfigurować prosty serwer proxy ssh -D, ale w tym przypadku chcę użyć uwierzytelniania opartego na nazwie użytkownika i haśle. Czy jest jakiś sposób?

davyzhang
źródło

Odpowiedzi:

5

Dynamiczne przekierowywanie portów na poziomie aplikacji ( ssh -D) nie obsługuje tej funkcji. Zamiast tego spójrz na Dantego :

[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

Pamiętaj jednak, że hasło jest przesyłane w postaci czystego tekstu .

Aby skonfigurować uwierzytelnianie oparte na nazwie użytkownika, otwórz /etc/sockd.confplik i dodaj / zmień następujące elementy:

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
}

Sprawdź gniazda odsłuchowe po uruchomieniu:

# 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        

Spójrz na plik logów ( /var/log/messageslub /var/log/dante.log), jeśli coś jest nie tak.

PS: plik hasła systemowego ( /etc/passwd) służy do weryfikacji kombinacji nazwy użytkownika i hasła.

kwanty
źródło
4

ssh -Dnie wymaga hasła dostępu, a przy obecnej implementacji nie można wymagać hasła. Jeśli chcesz, możesz skonfigurować wieloetapowy serwer proxy za pomocą wychodzącego serwera HTTP (np. Apache), który następnie używa tunelu ssh do połączenia wychodzącego.

Z drugiej strony, jeśli dostaniesz się tak daleko w chwasty, prawdopodobnie pójdziesz niewłaściwą drogą i być może będziesz musiał przemyśleć to, co próbujesz osiągnąć.

tylerl
źródło