Hallo,

Ik ben KiTTY aan het configureren en bij het onderdeel "Connection" kun je een "Port knocking sequence" invoeren. Nu vraag ik me af wat port knocking precies is en hoe dat werkt. Ik heb gelezen dat het lijkt alsof je SSH-poort dichtstaat, maar dat die door op een bepaalde manier te "kloppen" opengaat. Kan iemand me uitleggen hoe zoiets werkt? Wat houdt het in, en hoe stel je zo'n sequence dan in? Weet iemand dat toevallig?
KiTTY is een afgeleide van putty een ssh client.

Het heeft verder weinig met de ssh-server te maken daar het 2 verschillende verhalen zijn. Het port knocking verhaal is het aantal keren dat deze ssh-client probeert een connectie met de voorgedefinieerde server te maken, gaat dit mis, houdt het op.

Zo uit mijn hoofd, kun je 5x een verbinding met een ssh-server proberen te maken, Klopt na 5x de gebruikersnaam of het wachtwoord niet wordt je gebanned & is het einde oefening.

Meer informatie is te vinden in een /etc/ssh/sshd_config (Linux) of Google op een sshd_config.

Geband wordt je gelukkig niet vanzelf. Wel wordt de verbinding beëindigd.

[size=xsmall]Toevoeging op 25/01/2015 12:33:45:[/size]

Verder zou je even moeten google-n op 'putty port knocking' voor wat uitleg en waarom het putty-team dat niets vindt
>> KiTTY is een afgeleide van putty een ssh client.

>> Het heeft verder weinig met de ssh-server te maken daar het 2 verschillende verhalen zijn.

Dat klopt, maar het was enkel even een introductie-verhaaltje hoe ik bij dat port knocking terecht kwam.

>> Verder zou je even moeten google-n op 'putty port knocking' voor wat uitleg en waarom het putty-team dat niets vindt

Dit heb ik gelezen inderdaad, maar ik heb er ook positieve reacties over gelezen. Je SSH-poort is namelijk niet meer zichtbaar. Vandaar dat ik benieuwd ben hoe het nu eigenlijk werkt.

Ik kon zo gauw geen plaatje van KiTTY vinden, maar hier van een vergelijkbaar programma in een vreemde taal. Maar rechts onderin zie je dus dat je een port knocking sequence kan invoeren. Nu zie ik daar verschillende getallen staan: 3333.tcp, 9999:udp enz. Wat houdt dat in?


Nu kan je in KiTTY dus ook zo'n sequence invoeren. Maar stel dat mijn PHP-editor dat niet ondersteunt, dan kan ik daar dus niet meer mee inloggen als ik het goed begrijp?
Wat is er niet duidelijk aan de uitleg op wikipedia?
"In computer networking, port knocking is a method of externally opening ports on a firewall by generating a connection attempt on a set of prespecified closed ports. Once a correct sequence of connection attempts is received, the firewall rules are dynamically modified to allow the host which sent the connection attempts to connect over specific port(s). A variant called Single Packet Authorization exists, where only a single "knock" is needed, consisting of an encrypted packet.[1][2][3]"

Als je die uitleg combineert net een een komma gescheiden lijst van string in het formaat <nummer>.<tcp/udp> dan snap ik niet hoe iemand het niet kan snappen. Tenzij hij/zij niet weet wat TCP en UDP is, maar daar is googe/wikipedia ook voor te raadplegen.

Het komt neer op een secret knock zoals je in films wel eens ziet: je wordt alleen binnen gelaten als je op de juiste manier op de deur klopt.

"Nu kan je in KiTTY dus ook zo'n sequence invoeren. Maar stel dat mijn PHP-editor dat niet ondersteunt, dan kan ik daar dus niet meer mee inloggen als ik het goed begrijp?"
Putty laat je tunnels opzetten, ik neem aan KiTTY ook.
Wat betekend dat je je PHP editor naar localhost kan wijzen. Welke port hang er van af op welke port je de tunnel hebt opgezet.
Ik weet van serverbeheer en internet protocollen niet zo heel veel af. Vandaar mijn vraag. Wat wil bijv. "3333.tcp" zeggen?

>> Het komt neer op een secret knock zoals je in films wel eens ziet: je wordt alleen binnen gelaten als je op de juiste manier op de deur klopt.

Oké. Maar klop je dan een paar keer op dezelfde SSH poort, waarna die poort opengaat? Of klop je op verschillende poorten waarna de SSH poort opengaat?

>> Putty laat je tunnels opzetten, ik neem aan KiTTY ook.

Ja, ik kan tunnels instellen, maar ik heb hier (nog) geen ervaring mee.

>> Wat betekend dat je je PHP editor naar localhost kan wijzen. Welke port hang er van af op welke port je de tunnel hebt opgezet.

Kun je dit principe eens uitleggen? In mijn editor kan ik een SFTP verbinding maken, moet ik die nu dan naar localhost laten verwijzen? En log ik dan via de editor in of via KiTTY (PuTTY)?

Sorry, wellicht voor jou een rare vraag, maar voor mij is dit geen gesneden koek en ik heb zoiets nooit eerder gedaan.

[size=xsmall]Toevoeging op 26/01/2015 00:07:33:[/size]

En oh ja ... hoe weet de server dan eigenlijk op welke sequence ie moet reageren?
3333.tcp,9999:udp,1010:udp,8675:tcp

Secret knock:
Stuur een packet via port 3333 met het TCP protocol.
Stuur een packet via port 9999 met het UDP protocol.
Stuur een packet via port 1010 met het UDP protocol.
Stuur een packet via port 8675 met het TCP protocol.
Breng een SSH (of wat dan ook) verbinding tot stand.

"En oh ja ... hoe weet de server dan eigenlijk op welke sequence ie moet reageren?"
De server's firewall moet support hebben voor port knocking voor zover ik het begrijp.

Tunnels voor zover ik ze begrijp (en versimpelt):
Een utility verbind met de opgegeven server op de opgegeven port.
De zelfde utility gaat op jouw pc luisteren naar de andere opgegeven port.
Packets die het lokaal ontvangt stuurt het het op die bestaande verbinding door naar de externe server. Packets die het ontvangt van de externe server stuurt het door via de lokale verbinding.
De utility logt dus in op de externe server.

PS. ja, ik weet dat de P in TCP en UDP voor Protocol staat
Even een copy paste uit een mail die ik een tijdje terug aan iemand stuurde als uitleg.
Helaas zonder de plaatjes:

In de linker kolom van het putty/ kitty connectie scherm klik je SSH open.
Klik op Tunnels

vul daar in bij Source port 3306
en bij Destination localhost:3306
klik Add

crol in de balk terug naar boven en klik op Session

Kies een leuke naam om de verbinding op te slaan. (MYNAME)
en kies SAVE.

Daarna kun je in het grote vlak dubbelklikken op de naam, of de button Open kiezen.

Er wordt een ssh verbinding opgebouwd.
De tunnel zorgt dat wat je op je pc op poort 3306 aanspreekt, doorgeleid wordt naar de server.

(als je het leuk vindt, kun je ook poort 3399 (door die bij Source Port in te vullen ) doorverbinden naar 3306 op de server. Dat geeft je de mogelijkheid om tegelijk op meerdere remote servers te werken.)

Werkt ook voor andere poorten, zoals voor ftp, DNS etc etc.
Dankjulliewel voor de uitleg!

@Dos:

>> De server's firewall moet support hebben voor port knocking voor zover ik het begrijp.

Ah oké, dan moet ik eens uitzoeken hoe zoiets werkt met IPTABLES.

@Ivo:

Stel ik heb een PHP editor, waar vul ik dan die "localhost:3306" in? Vul ik dat in waar ik normaal de SFTP host en poortnummer invul? Of moet ik nu juist bij het FTP gedeelte invullen?
3306 is het poortnummer van Mysql. Mijn uitleg ging over het gebruik van HeidiSQL op je pc om de remote database te beheren.

Jij zou de ftp port(s) moetem tunnelen

je server wordt dan "localhost" op de plek waar eerst ftp.ozziesserver.nl stond

google zelf even de portnummers
Ivo, sorry ik ben een beetje een noob op dit gebied.

Ik gebruik SSH om te connecten met mijn server, en niet FTP. Moet ik dan niet de SSH poort gebruiken? In mijn editor is een SFTP port waar ik de host en poortnummer invul. Moet ik daar dan niet localhost invullen? En die poort moet toch de lokale poort op mijn pc zijn (en niet op de server)?

Reageren