Socks Proxy mit ssh-forwarding realisieren
Ein SOCKS-Proxy (SOCKS4 oder SOCKS5) kann einfach mit einem SSH-Tunnel aufgebaut werden:
ssh -D8080 -N tunnel-user@proxy-server.
Im Browser wird dann in den Proxy Einstellungen localhost als SOCKS-Host (v4 oder v5) mit Port 8080 eingetragen.
Soll der Tunnel von der Kommandozeile genutzt werden, kann man die mit:
export http_proxy=http://localhost:8080 https_proxy=https://localhost:8080
oder für Programme die SOCKS bevorzugen, z.B. ...
export http_proxy=socks5://localhost:8080 https_proxy=socks5://localhost:8080
Damit über diesen Tunnel wirklich nur 'getunnelt' werden kann, sind auf der Serverseite einige Vorkehrungen zu treffen:
sshd_config
Den User und die Restriktionen in einen Match-Block:
Match User tunnel-user
AllowTcpForwarding yes
X11Forwarding no
PermitTunnel no
GatewayPorts no
AllowAgentForwarding no
User Account
Der User tunnel-user darf natürlich keine Shell erhalten. Um trotzdem ein Login zu ermöglichen, wird dem User als Shell /bin/false zugewiesen. Das funktioniert aber nur, wenn der Client beim SSH Verbindungsaufbau den Parameter -N setzt.
Aus der SSH Manpage:
-N Do not execute a remote command. This is useful for just forwarding ports (protocol
version 2 only).
Nun den Benutzer Account erstellen:
useradd -m -s /bin/false tunnel-user
Das sieht dann in der /etc/passwd etwa so aus:
tunnel-user:x:1004:1004::/home/tunnel-user:/bin/false