Vi har vist deg hvordan du utløser WOL eksternt ved "Port Knocking" på ruteren din . I denne artikkelen vil vi vise hvordan du bruker den til å beskytte en VPN-tjeneste.
Bilde av Aviad Raviv & bfick .
Forord
Hvis du har brukt
DD-WRT innebygd funksjonalitet
for VPN eller, har
en annen VPN-server
i nettverket ditt, vil du kanskje sette pris på muligheten til å beskytte den mot brute force-angrep ved å gjemme den bak en banesekvens. Ved å gjøre dette, vil du filtrere ut skriptkiddies som prøver å få tilgang til nettverket ditt. Med det sagt, som nevnt i forrige artikkel, er ikke bankebanking en erstatning for et godt passord og / eller sikkerhetspolitikk. Husk at med nok tålmodighet kan en angriper oppdage sekvensen og utføre et repriseangrep.
Husk også at ulempen med å implementere dette er at når noen VPN-klienter vil koble seg til, må de utløse banksekvensen
på forhånd
og at hvis de av en eller annen grunn ikke kan fullføre sekvensen, vil de ikke kunne VPN i det hele tatt.
Oversikt
For å beskytte * VPN-tjenesten vil vi først deaktivere all mulig kommunikasjon med den ved å blokkere den øyeblikkelige porten fra 1723. For å oppnå dette målet vil vi bruke iptables. Dette er fordi det er slik kommunikasjon blir filtrert på de fleste moderne Linux / GNU-distribusjoner generelt og på DD-WRT spesielt. Hvis du vil ha mer informasjon om iptables til kassen wiki-oppføring , og ta en titt på vår forrige artikkel på emnet. Når tjenesten er beskyttet, oppretter vi en banesekvens som midlertidig åpner VPN-instantieringsporten og lukker den automatisk etter en konfigurert tid, samtidig som den allerede etablerte VPN-økten er tilkoblet.
Merk: I denne veiledningen bruker vi PPTP VPN-tjenesten som et eksempel. Med det sagt kan den samme metoden brukes for andre VPN-typer, du må bare endre den blokkerte porten og / eller kommunikasjonstypen.
Forutsetninger, antakelser og anbefalinger
- Det antas / kreves at du har en Opkg-aktivert DD-WRT-ruter .
- Det antas / kreves at du allerede har utført trinnene i “ Slik banker du inn i nettverket ditt (DD-WRT) " guide.
- Det antas noe nettverkskunnskap.
La oss få sprekker.
Misligholde "Blokker nye VPN-er" -regelen på DD-WRT
Mens kodebiten nedenfor "kode" sannsynligvis vil fungere på alle, selvrespekterende, iptables som bruker Linux / GNU-distribusjon, fordi det er så mange varianter der ute, vil vi bare vise hvordan du bruker den på DD-WRT. Ingenting hindrer deg, hvis du ønsker det, fra å implementere det direkte på VPN-boksen. Hvordan du gjør det, er imidlertid utenfor omfanget av denne veiledningen.
Fordi vi ønsker å forsterke ruterens brannmur, er det bare logisk at vi vil legge til "brannmur" -skriptet. Hvis du gjør det, vil kommandoen iptables bli utført hver gang brannmuren oppdateres og dermed holde utvidelsen på plass for å holde.
Fra DD-WRT Web-GUI:
-
Gå til “Administrasjon” -> “Kommandoer”.
-
Skriv inn koden nedenfor i tekstboksen:
inline = "$ (iptables -L INPUT -n | grep -n" state RELATED, ESTABLISHED "| awk -F: {'print $1'})"; inline = $ (($ inline-2 + 1)); iptables -I INNGANG "$ inline" -p tcp --dport 1723 -j DROP - Klikk på “Lagre brannmur”.
- Ferdig.
Hva er denne "Voodoo" -kommandoen?
Ovennevnte “voodoo magic” -kommando gjør følgende:
- Finner hvor er den iptable linjen som gjør det mulig å passere allerede etablert kommunikasjon. Vi gjør dette, fordi A. Hvis VPN-tjenesten er aktivert på DD-WRT-rutere, vil den være plassert rett under denne linjen og B. Det er viktig for vårt mål å fortsette å la allerede etablerte VPN-økter leve videre etter bankeevent.
- Trekker to (2) fra utdataene fra oppføringskommandoen for å gjøre rede for forskyvningen forårsaket av informasjonskolonneoverskriftene. Når det er gjort, legger du til en (1) til ovennevnte nummer, slik at regelen vi setter inn, kommer like etter regelen som tillater allerede etablert kommunikasjon. Jeg har lagt igjen dette veldig enkle "matteproblemet" her inne, bare for å gjøre logikken til "hvorfor man trenger å redusere en fra regelens sted i stedet for å legge en til den".
KnockD-konfigurasjon
Vi må lage en ny utløsende sekvens som gjør det mulig å opprette nye VPN-tilkoblinger. For å gjøre dette, rediger filen knockd.conf ved å utstede i en terminal:
vi /opt/etc/knockd.conf
Legg til den eksisterende konfigurasjonen:
[enable-VPN]
sekvens = 02,02,02,01,01,01,2010,2010,2010
seq_timeout = 60
start_command = iptables -I INNGANG 1 -s% IP% -p tcp --dport 1723 -j ACCEPT
cmd_timeout = 20
stop_command = iptables -D INNGANG -s% IP% -p tcp --port 1723 -j ACCEPT
Denne konfigurasjonen vil:
- Sett mulighetsvinduet for å fullføre sekvensen, til 60 sekunder. (Det anbefales å holde dette så kort som mulig)
- Lytt til en sekvens på tre baner på port 2, 1 og 2010 (denne ordren er bevisst å kaste havneskannere av sporet).
- Når sekvensen er oppdaget, utfør “start_kommando”. Denne "iptables" -kommandoen vil plassere en "godta trafikk som er bestemt til port 1723 hvor bankene kom fra" på toppen av brannmurreglene. (% IP% -direktivet behandles spesielt av KnockD og erstattes med IP for knocks opprinnelse).
- Vent i 20 sekunder før du utsteder "stop_command".
- Utfør "stop_command". Der denne "iptables" -kommandoen gjør det motsatte av det ovennevnte og sletter regelen som tillater kommunikasjon.
Forfatter ‘s tips
Mens du skal være klar, er det et par punkter som jeg trenger å nevne.
- Feilsøking. Husk at hvis du har problemer, vil "feilsøking" -segmentet på slutten av den første artikkelen burde være ditt første stopp.
- Hvis du vil, kan du få "start / stopp" -direktivene til å utføre flere kommandoer ved å skille dem med en semi-colen (;) eller til og med et skript. Hvis du gjør det, kan du gjøre noen smarte ting. For eksempel har jeg sendt meg en * E-post som forteller meg at en sekvens er utløst og hvorfra.
- Ikke glem at “ Det er en app for det ”Og selv om det ikke er nevnt i denne artikkelen, oppfordres du til å ta tak StavFX Er Android knocker-program .
- Mens du handler om Android, ikke glem at det er en PPTP VPN-klient som vanligvis er innebygd i operativsystemet fra produsenten.
- Metoden for å blokkere noe i utgangspunktet og deretter fortsette å tillate allerede etablert kommunikasjon, kan brukes på praktisk talt hvilken som helst TCP-basert kommunikasjon. Faktisk i Knockd på DD-WRT 1 ~ 6 Jeg har gjort langt tilbake da jeg har brukt Remote Desktop Protocol (RDP) som bruker port 3389 som et eksempel.