Programmering

Havnedans: En sikkerhedside, hvis tid er kommet

Mange, mange innovationer kommer fra Linux- og Unix-verdenen. Få er mere spændende for mig end at banke på havnen. Som et globalt sikkerhedsprogram til beskyttelse af tjenester har det meget at gøre med det og få ulemper. Af en eller anden grund lider det imidlertid af manglende brug og forståelse. Mange administratorer kan have hørt om det, men få ved, hvordan de skal implementeres. Endnu færre har brugt det.

Portbanking fungerer efter det koncept, at brugere, der ønsker at tilknytte en netværkstjeneste, skal starte en forudbestemt række af portforbindelser eller sende en unik streng af bytes, før fjernklienten kan oprette forbindelse til den eventuelle service. I sin mest basale form skal fjernbrugerens klientsoftware først oprette forbindelse til en eller flere porte, før der oprettes forbindelse til den endelige destinationsport.

Antag for eksempel, at fjernklienten vil oprette forbindelse til en SSH-server. Administratoren konfigurerer port-banke-kravene i forvejen og kræver, at tilslutning af eksterne klienter først opretter forbindelse til port 3400, 4000 og 9887, før han opretter forbindelse til den endelige destinationsport, 22. Administratoren fortæller alle legitime klienter den korrekte "kombination" for at oprette forbindelse ; ondsindede hackere, der ønsker at oprette forbindelse til SSH-tjenesten, nægtes adgang uden kombinationen. Port banke vil folie selv port-scanning og banner-grabbing entusiaster.

Fordi enhver kombination af porte og transportprotokoller kan bruges, er antallet af mulige sekvenser, som en angriber skulle gætte, højt. Selvom hacker kun vidste, at der var tre havnestik involveret, som i det meget enkle eksempel ovenfor, med 64.000 mulige TCP-, UDP- og ICMP-porte (Internet Control Message Protocol) at vælge imellem, det resulterende sæt af mulige kombinationer, som hacker kan prøv løber ind i millioner. Havnescannere vil blive frustrerede, fordi havnedannelse bruger lukkede porte til at lytte (mere om dette nedenfor).

Den største fordel for alle er, at bankebanking er platform-, service- og applikationsuafhængig: Ethvert operativsystem med den rigtige klient- og serversoftware kan drage fordel af dets beskyttelse. Selvom portbanking hovedsageligt er en Linux / Unix-implementering, er der Windows-værktøjer, der kan gøre det samme. Og i lighed med IPSec og andre beskyttelsesmekanismer behøver ingen af ​​de involverede tjenester eller applikationer at være havnedannede.

Port-banke-serversoftware fungerer ved at overvåge firewall-loggen og lede efter forbindelser til lukkede porte eller ved at overvåge IP-stakken. Den førstnævnte metode kræver, at alle afviste forbindelsesforsøg skrives hurtigt til en firewall-log, og port-banktjenesten (dæmonen) overvåger og korrelerer legitime port-banke-kombinationer. Ved autentificerede bankkombinationer beder port-banking-servertjenesten derefter firewallen om at åbne den endelige anmodede port for netop den legitime port-bankende klient - normalt spores efter IP-adresse.

Mere avancerede implementeringer af portbanking fungerer ved IP-stakken og enten lytter og optager til forbindelser til lukkede porte eller bruger en mere sofistikeret mekanisme. Nogle implementeringer ser efter en bestemt række bytes i det første forbindelsesforsøg. Disse bytes kan endda "skjules" i en simpel ICMP-ekko-anmodning ping. Endnu stærkere port-banke forhandlingsmetoder involverer kryptering eller asymmetrisk godkendelse.

Port banke kan også tjene som et ekstra lag af sikkerhed for at beskytte højrisiko fjernadministrationstjenester, såsom SSH og RDP (Remote Desktop Protocol). Desværre er havnebankning blevet brugt af mere end et par rootkit-trojanske heste, da deres hackerskabere forsøger at holde kontrol over deres egne ondsindede kreationer.

Kritikere peger ofte på det faktum, at aflyttende hackere måske er i stand til at fange og afspille den vellykkede port-banke-sekvens eller række bytes. Selvom dette kan være tilfældet med de grundlæggende implementeringer, ville angreb som disse blive presset ved hjælp af mere sofistikerede godkendelsesmetoder eller minimeret ved hjælp af sekundære hardkodede tilladte IP-adresser såsom TCP-indpakninger.

Hvis en hacker formår at samle din kombination, er det værst tænkelige scenarie, at ubuden gæst omgår port-bankebeskyttelse og nu er nødt til at imødegå dine normale servicesikkerhedsforanstaltninger - login med adgangskode, osv. Så vidt jeg kan se, kan brugen af ​​havnedannelse kun styrke enhver forsvarsdybdegående strategi og gør intet for at skade den.

Jeg ville ønske, at Windows havde indbyggede port-banke-mekanismer som standard. Det ville være et godt supplement til Microsofts markedstestede IPSec- og Kerberos-implementeringer. Linux / Unix-verdenen har en overflod af portbankende implementeringer at vælge imellem, hvoraf ingen kræver utrolig ekspertise for at konfigurere eller bruge.

For mere information om havnedannelse, besøg www.portknocking.org eller en.wikipedia.org/wiki/Port_knocking. For konfigurationsdetaljer fra et eksempel på implementering, se gentoo-wiki.com/HOWTO_Port_Knocking.

En fremragende samling af port-banke-software og hjælpeprogrammer kan findes på www.portknocking.org/view/implementations, og en anden Windows-baseret port-banke-server og klient findes på www.security.org.sg/code/portknock1 .html.