Een veilige verbinding via bijv. poort 80

Hier staat een beschrijving van SSH en twee applicaties die er gebruik van maken. Met deze methode kan je zorgen dat men niet zomaar je passwords ”snift” of zelf de firewall ontwijken? Helemaal onderaan het document heb ik twee linkjes geplaatst

SSH staat voor Secure Shell. Het is een protocol uit de applicatielaag van de TCP/IP protocol groep dat over TCP draait, normaal over TCP poort 22. De term ssh werd gemakkelijkheidshalve ook gebruikt voor het client-programma dat het protocol toepast (het server-programma heet dan weer sshd, Secure Shell daemon). SSH vervangt oudere protocol zoals telnet, rlogin, en rsh/rexec door een beveiligbare variant daarvan.

Met de SSH daemon; ”WinSSHD” en het tunnel pakket ”PuTTY” kan je een tunnel via poort 80 (ipv de standaard poort 22) starten waarlangs je allerlei soorten verkeer via allerlei poorten kan sturen. Vervolgens autoriseer je op de machine waar de daemon draait met de lokale Windows gegevens. Dus als je een standalone hebt, een user die je op die machine hebt. Als de machine in het domein hangt met een domein-/AD gebruiker. Maar ik zou dit niet uitvoeren op een machine in een domein/Active Directory, toch weer security issues. Mocht je user toch opgevangen worden is enkel de security op die machine zelf aangetast.

WinSSHD is our SSH Secure Shell 2 server for NT4/2000/XP/2003.
It supports the following SSH services:

* Secure remote access via console (vt100/xterm/bvterm)
* Secure remote access via GUI (WinVNC/RDP)
* Secure file transfer using SFTP & SCP
* Secure TCP/IP connection tunneling (port forwarding)

PuTTY is a client for the SSH /Telnet/Rlogin
In simple terms: you run PuTTY on a windows machine, and tell it to connect to another machine. PuTTY opens a window. Then, anything you type into that window is sent straight to the machine, and everything the machine sends back is displayed in the window. So you can work on the machine’s console as if you were sitting at its console, while actually sitting somewhere else.

Het idee is dat je WinSSHD op een machine installeert waar je via poort 80 bij kan en de poorten die je wilt tunnelen naar buiten openstaan. Als je er niet via poort 80 bij kan, dan kan je met PuTTY er geen verbinding mee maken en als de gewenste poorten daar dicht staan heeft het geen zin een tunnel vanuit een beveiligde (achter firewall) omgeving een tunnel te starten naar de daemon, want dan loop je daar tegen de firewall aan.

Op de pc in de beveiligde omgeving start je het programma door de exe op te starten, dus geen installatie van een programma. Je stelt de proxy in en het ip-adres of dns-naam van de host waar de daemon op draait. Door verbinding te maken zet je een tunnel open waardoor je allerlei verkeer kan sturen.

WinSSHD werkt zonder veel instellingen, het enige waar je op moet letten is dat het als service draait en dat hij luistert op poort 80. Het lijkt me logisch trouwens dat de daemon te bereiken is via een vast ip-adres, maar als het een dynamische is welke je op dat moment weet, werkt het ook. Als je maar op het ip-adres met poort 80 kan connecten.

PuTTY vereist wel wat instellingen welke ik op de volgende pagina uitleg;

poort 80 is de poort waarop hij met de daemon moet connecten.
Staat bijvoorbeeld poort 1043 (= in dit voorbeeld een willekeurig getal) open dan moet je natuurlijk die poort hier instellen en de daemon op die poort laten luisteren.

Stel hier het aantal seconden in van het interval waarop een keep alive signaal gestuurd moet worden om de verbinding open te houden.
Zet daarom ook het vinkje aan bij “Enable TCP keepalives” zodat je geen time-out krijgt.

Vul hier je proxy gegevens in. Ik zit hier achter de proxy “proxy.ns.nl op poort 8080”
Let op dat HTML poort 80 standaard heeft, als je hier intern via poort 8080 moet connecten betekent niet dat op internet HTML ook meteen via poort 8080 verloopt.

Hier stel je je tunnels in. Mijn lokale poort 10000 is omgezet naar beaker.demon.nl (thuis) op poort 3389 (standaard poort voor Remote Desktop).
Als ik dus mijn machine thuis wil over nemen dan start ik Remote Desktop Client en connect ik met machine: localhost:10000 over te nemen.
Zie onder voor een voorbeeld.

Je ziet dat ik poort 81 heb getunnelled naar de proxy van demon (ik internet tenslotte vanaf mijn machine thuis) Zo kan ik MSN e.d. gebruiken.
Zie onderstaand voorbeeld voor mijn internet explorer instellingen.

Een andere poort (in het bovenstaande voorbeeld 999) kan je verbinden met een ander adres en poort (in het bovenstaande voorbeeld www.agisweb.nl op poort 888


Een uitbreiding op het bovenstaande verhaal;Nieuw VoorbeeldIk gebruikte in mijn voorbeeld beaker.demon.nl terwijl mijn SSH tunnel ook naar die machine liep. Dus dat is op zich niet handig… de tunnel zorgt dat je op de machine bent en toch liet ik mijn tunnel voor Remote Desktop naar beaker.demon.nl lopen. De buitenkant van de machine, niet echt veilig want dan moet je toch nog een poort open hebben staan op je externe kant. Ik heb getest en bevonden dat je ook interne ip-adressen en zelfs dns-namen kan gebruiken die niet buiten je netwerk bekend zijn. DNS resolutie wordt dus uitgevoerd voor dit programma. Voor een voorbeeld heb ik een screendump aan de rechterkant bijgevoegd.Het is dus heel goed mogelijk om een machine in een netwerk in te richten als een soort SSH proxy waarmee je overal te wereld een SSH tunnel mee open kan zetten om zo via een beveiligde tunnel een verbinding te maken naar allerlei poorten.

Nog een handige tool…

Er is nog een andere tool die gebruikt maakt van een SSH tunnel. Ik heb heel moeilijk zitten doen om de FTP poort te routeren om zo met mijn FTP programma eenvoudig applicaties te up-/downloaden. Het werkte niet lekker. Toen wees iemand me op de applicatie WinSCP welke via SFTP, combi of SCP bestanden via de SSH tunnel verstuurd. De interface die ik gebruik voelt een beetje hetzelfde als Windows Commander en het verkeer gaat best rap. Geen geklooi met poortjes. Gewoon dit programma gebruiken. Het is niet erg ingewikkeld en ik heb hieronder wat screendumps geplaatst om je wat op weg te helpen. Bij de installatie moet je geavanceerde opties aanvinken omdat een proxy gebruiken bij verbinden een geavanceerde optie wordt bevonden.

voorbeeld SCP

Gelukkig kan je je instellingen opslaan en elke keer ”Load”-en als je het programma weer gebruikt.

voorbeeld SCP

Ook hier moet je weer de proxy invullen. (mits je geavanceerd hebt gekozen bij installatie)

voorbeeld SCP

Login knop is grijs, hm, als je je user invult, dan word ie vanzelf actief. Wachtwoord word je later om gevraagd.