Ein interessantes Feature von SSH ist das man trotz einer Shell wie /bin/false oder /bin/nologin einen SSH Tunnel aufbauen kann. Normalerweise setzt man einer der genannten Shells gerade für (s)/FTP Benutzer ein, damit sich diese nicht auf dem Server mit einer Shell einloggen dürfen. Leider interessiert dieses SSH absolut gar nicht und für einen Tunnel braucht man eben keine Shell (channel!).
Viele Anbieter bieten FTP für ihre Dienste an und falls dann noch SSH läuft wäre es somit möglich die Firewalls zu umgehen und einen direkten Zugang auf das System und den dahinterliegenden zu erhaschen. Das ganze funktioniert leider auch wenn man den Benutzer in einer Match Gruppe nur SFTP erlaubt hat.
Ein SSH Tunnel ist schnell aufgebaut und schon kann man loslegen:
# ssh -N -L 1337:localhost:80 $ftpuser@$server
Viel mehr Spaß macht es dann eigentlich nur noch die File Descriptor auf dem Server bequem und schnell zu verbrauchen:
# ssh -N -L 1337:localhost:80 $ftpuser@$server
# ssh -N -R 1337:localhost:80 $ftpuser@$server
# telnet localhost 1337
Das einzige was man dagegen machen kann ist den Zugriff auf SSH nur für bestimmte Benutzer zu erlauben (AllowUsers, AllowGroups) und Tunnel, Forwarding zu verbieten (AllowTcpForwarding, X11Forwarding, PermitTunnel)
Wunderbar beschrieben im Jahr 2005 auf semicomplete.com und immer noch möglich.