MikroTik VPN-bruger når for langt: begræns til én vært og én port
En PPP-profil kan lægge den tildelte tunneladresse i en adresseliste, og én jump-kæde kan tillade én vært og port før drop.
Tunnelen kommer op, login lykkes, og hver vært på netværket svarer. Det er ikke en ødelagt VPN; det er en VPN uden tilladelsesmodel. RouterOS godkender kontoen og ruter derefter dens pakker som alles, så firewalling skal levere grænsen. At tilføje den grænse uden at ødelægge login er hele arbejdet.
Godkendelse slutter, hvor tilladelse begynder
Når en PPP-session er oppe, går klientens pakker ind i forward-kæden som trafik fra enhver anden grænseflade. Hvis routerens forward-politik er eftergivende, arver konsulenten den eftergivenhed ved login. Kontoen bar aldrig et omfang, så der er intet på kontoen at ændre. Regelsættet blev skrevet til medarbejdere, og den nye session sluttede sig blot til det.
Kontroller, hvilken vej anmodningen handler om, før du skriver noget. Trafik til værter bag routeren krydser forward, mens trafik til routeren selv, inklusive winbox og SSH, krydser input. Et omfang, der kun dækker forward, efterlader enheden åben for den samme klient.
Begge kæder skal beslutte sig, selv om beslutningen er at holde input lukket. Det valg hører i adgangsanmodningen, ikke i en eftertanke.
Knyt sessionen til en navngivet liste
En PPP-profil kan lægge den adresse, den uddeler, i en navngivet adresseliste, når sessionen starter. Det gør en forbigående tunneladresse til noget, firewalling kan matche ved navn, og posten forsvinder, når sessionen slutter. Kontoen arver derefter omfanget fra sin profil i stedet for fra en regel, der hardcoder en adresse.
Opret profilen først, og bind derefter secret eksplicit til den. Et secret, der stadig peger på standardprofilen, genskaber det oprindelige problem.
Navngiv profilen og listen, så deres opgaver er tydelige, og kommentér begge med anmodningens reference. Én profil kan betjene flere personer med samme omfang, mens listen stadig identificerer hver levende session. Det er billigere at gennemgå end en regel per person.
/ppp profile add name=scoped-consultant remote-address=consultant-pool address-list=vpn-scoped-clients
/ppp secret add name=consultant password=... service=ovpn profile=scoped-consultant
Registrér den tilladte tjeneste på én liste
Sæt den tilladte server på sin egen adresseliste i stedet for at indlejre adressen i en filterregel. Listen kan revideres, udvides og kommenteres, og reglen, der bruger den, ændres ikke, når serveren flytter. En enkelt post virker overdrevet, indtil den anden vært dukker op, hvilket den som regel gør.
Match en liste, når adressen er dynamisk eller lastbalanceret, og match adressen direkte, når den er reserveret og stabil. Begge valg læses klart, hvis kommentaren nævner tjenesten og ejeren.
Begræns protokollen og porten såvel som værten. Et accept for en vært uden portbegrænsning åbner hver tjeneste, værten kører, hvilket er bredere, end de fleste adgangsanmodninger tilsigter. Porten er en del af tilladelsen, ikke en detalje, der tilføjes senere.
/ip firewall address-list add list=vpn-targets address=10.0.0.10 comment="consultant RDP target"
Sæt jumpet før ethvert bredt accept
En jump-regel sender videresendt trafik fra den begrænsede liste ind i en privat kæde, hvor hele politikken passer på tre linjer. Den første regel accepterer den tilladte destination og port, og den sidste regel dropper alt andet. Jumpet skal ligge over ethvert bredt accept i forward, fordi et tidligere accept betyder, at jumpet aldrig kører. Hold accept for established og related før jumpet, så returtrafik stadig flyder.
Kontroller, at ingen fasttrack-regel kan føre denne trafik forbi den begrænsede kæde. Fasttrack omgår resten af filtervejen, og en begrænset session, der fasttrackes, er slet ikke begrænset.
Gentag beslutningen for input-kæden, hvis routerens egne tjenester skal være utilgængelige. Et omfang, der blokerer videresendt trafik og lader winbox stå åben, er kun halvt færdigt.
/ip firewall filter
add chain=forward action=jump jump-target=scoped-vpn src-address-list=vpn-scoped-clients
add chain=scoped-vpn action=accept protocol=tcp dst-address-list=vpn-targets dst-port=3389
add chain=scoped-vpn action=drop
Verificér med tællere og listemedlemskab
Test fra klienten den tilladte tjeneste og en, der skal fejle, og læs derefter regelstatistikken på routeren. Accept- og drop-tællerne viser, hvilken vej hver pakke tog, hvilket klienten ikke kan se. Bekræft også, at den levende sessions adresse dukkede op i den begrænsede liste.
En tom liste betyder, at kontoen er på en anden profil, eller at profilen har mistet sin adresselisteindstilling. En stigende drop-tæller med en fejlende tilladt tjeneste betyder, at destinationen eller porten ikke matcher det, klienten sender.
Test den samme tjeneste ved navn og ved adresse, før du konkluderer noget. En fejl i navneopløsningen ser præcis ud som en blokeret port fra klientens side. Registrér derefter profilen, begge lister og den eneste tilladte tjeneste i adgangsanmodningen, så næste gennemgang sammenligner i stedet for at genopbygge.
/ip firewall filter print stats where chain=scoped-vpn
/ip firewall address-list print where list=vpn-scoped-clients