Omzeil strenge firewalls met sslh

Heb je een bedrijfsnetwerk met een strenge firewall, dan kunnen protocols als ssh en OpenVPN geblokkeerd zijn. Met het programma sslh los je dit op.

Sslh begon als een ssl/ssh multiplexer om strenge bedrijfsfirewalls te omzeilen: aangezien deze firewalls nooit poort 443 blokkeren voor htT*S, kun je toch toegang tot een ssh-server verkrijgen door die ssh-server op poort 443 in plaats van poort 22 te draaien. Wil je op die server echter niet alleen ssh maar ook een webserver met ssl draaien, dan heb je een port multiplexer nodig, zoals sslh. Dit programma bekijkt of de inkomende verbinding een ssl- of ssh-verbinding is en verbindt dit door met het juiste serverproces.

Niet alleen ssh
In de loop der jaren is sslh uitgebreid en ondertussen ondersteunt het naast ssl en ssh ook enkele andere protocols, zodat het een heel flexibele port multiplexer is geworden. De eerste uitbreiding was OpenVPN-support, zodat je in een streng bedrijfsnetwerk of een ingeperkt draadloos netwerk op hotel toch nog een VPN-verbinding kunt opzetten door de firewall wijs te maken dat je een htT*S-website bezoekt. Het volgende protocol dat toegevoegd werd was tinc, eveneens een VPN-protocol maar dan met een mesh-aanpak. En recentelijk werd in sslh 1.10 zelfs ondersteuning voor chatten via xmpp toegevoegd, zodat ook je Jabber-server te bereiken is.

Multiplexer
Met sslh kun je ondertussen dus een htT*S-website, een ssh-server, een OpenVPN-server, een tinc-server en een xmpp-server op dezelfde poort draaien. Achter de schermen worden de inkomende aanvragen automatisch naar het juiste serverproces gestuurd. Standaard luistert sslh naar poort 443, maar dit kun je veranderen naar bijvoorbeeld poort 80 met de optie --listen 80. Let er wel op dat geavanceerdere firewalls controleren of er ssl-verkeer gaat naar poorten waar dat abnormaal is en dit dan blokkeren, dus poort 443 is in de meeste gevallen het meest geschikt.

Andere opties duiden de poorten aan waarnaar de pakketjes voor de verschillende services doorgestuurd worden. Standaard zijn de verwachte waarden ingesteld, maar je kunt dit dus aanpassen, bijvoorbeeld met --ssh localhost:2222 of --ssl localhost:2443. Uiteraard moet je dan ook dezelfde poort in je ssh-server respectievelijk webserver instellen. Verder zijn er ook gelijkaardige opties --openvpn, --tinc en --xmpp.

Om nu sslh als daemon te draaien en de juiste instellingen te laten gebruiken, geef je in het bestand /etc/default/sslh (het juiste pad hangt van uw distributie af) iets als het volgende in:



DAEMON_OPTS="--listen example.com:443 --ssh localhost:22 --ssl localhost:443 --openvpn localhost:1194"

RUN=yes



Daarna start je sslh en vanaf nu kun je op poort 443 terecht voor al de ingestelde protocols.