Thuiswerken in kantoor. RDP, Port Knocking, Mikrotik: eenvoudig en veilig.

In verband met de covid-19 pandemie en de algemene lockdown in veel landen is de enige manier voor veel bedrijven om door te gaan met hun werkzaamheden — toegang tot werkplekken via internet. Er zijn veel relatief veilige methoden voor remote werken — maar gezien de omvang van het probleem is een eenvoudige methode voor alle gebruikers nodig voor remote verbinding met het kantoor, zonder extra instellingen, uitleg, moeizame consultaties en lange instructies. Een dergelijke methode is de door veel beheerders geliefde RDP (Remote Desktop Protocol). Direct verbinding maken met de werkplek via RDP lost onze uitdaging perfect op, met uitzondering van één belangrijk nadeel — het openhouden van de RDP-poort voor het internet is zeer onveilig. Daarom stel ik hieronder een eenvoudige maar betrouwbare beschermingsmethode voor.Thuiswerken in kantoor. RDP, Port Knocking, Mikrotik: eenvoudig en veilig.

Aangezien ik vaak kleine organisaties tegenkom die apparaten van Mikrotik gebruiken als toegang tot het internet, zal ik hieronder laten zien hoe dit op Mikrotik kan worden gerealiseerd, maar de Port Knocking beschermingsmethode is ook gemakkelijk te implementeren op andere, hoger geclassificeerde apparaten met vergelijkbare routering en firewall instellingen.

Kort over Port Knocking. De ideale externe beveiliging van een netwerk dat met het internet is verbonden, is wanneer alle bronnen en poorten van buitenaf door een firewall zijn gesloten. En hoewel de router met zo'n geconfigureerde firewall niet reageert op binnenkomende pakketten van buiten, luistert hij er wel naar. Daarom kan de router zo worden ingesteld dat bij ontvangst van een bepaalde (code)reeks netwerkpakketten op verschillende poorten, hij (de router) toegang geeft tot bepaalde middelen (poorten, protocollen, enz.) voor het IP-adres van waaruit de pakketten zijn ontvangen.

Laten we nu aan de slag gaan. Ik zal geen gedetailleerde beschrijving geven van het configureren van de firewall op Mikrotik — er zijn volop kwalitatieve bronnen op internet hiervoor. Idealiter blokkeert de firewall alle binnenkomende pakketten, maar

/ip firewall filter
add action=accept chain=input comment="established and related accept" connection-state=established,related

staat binnenkomend verkeer van reeds gevestigde (established, related) verbindingen toe.
Laten we nu Port Knocking op Mikrotik configureren:

/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
move [/ip firewall filter find comment=RemoteRules] 1
/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389

Laten we nu in detail naar het volgende kijken:

de eerste twee regels

/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules

verbieden binnenkomende pakketten van IP-adressen die tijdens de poortscan op de zwarte lijst zijn gezet;

Derde regel:

add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules

voegt ip toe aan de lijst van hosts die de juiste eerste knock op de juiste poort (19000) hebben gedaan;
De volgende vier regels:

add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules

maken valstrengen voor degenen die proberen uw poorten te scannen, en bij het detecteren van dergelijke pogingen worden hun ip's gedurende 60 minuten op de zwarte lijst geplaatst, waarin de eerste twee regels geen kans geven aan deze hosts om de juiste poorten te bereiken;

De volgende regel:

add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules

plaatst ip op de toegestane lijst voor 1 minuut (voldoende voor het opzetten van de verbinding), aangezien er een tweede correcte tik op de vereiste poort (16000) was;

De volgende opdracht:

move [\/ip firewall filter find comment=RemoteRules] 1

verplaatst onze regels omhoog in de verwerkingsketen van de firewall, aangezien we waarschijnlijk al verschillende blokkade regels hebben ingesteld die onze nieuw aangemaakte regels verhinderen om te functioneren. De eerste regel in Mikrotik begint met nul, maar op mijn apparaat was nul bezet door de ingebouwde regel en kon ik niet verplaatsen — ik heb het naar 1 verplaatst. Daarom kijken we naar onze instellingen — waar we kunnen verplaatsen en geven het benodigde nummer op.

De volgende instelling:

/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp_to_33" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389

voert een doorsturing uit van de willekeurig gekozen poort 33890 naar de gebruikelijke RDP-poort 3389 en het ip van de gewenste computer of terminalserver. We maken dergelijke regels voor alle benodigde interne bronnen, idealiter combineren we onconventionele (en verschillende) externe poorten. Uiteraard moeten de ip's van interne bronnen ofwel statisch zijn of aan DHCP zijn toegewezen. de server.

Nu is onze Mikrotik ingesteld en hebben we een gebruiksvriendelijke procedure nodig voor de verbinding met onze interne RDP. Aangezien dit voornamelijk Windows-gebruikers zijn, maken we een eenvoudig bat-bestand en noemen het StartRDP.bat:

1.htm
1.rdp

bevat respectievelijk de volgende code:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
druk op vernieuwen om opnieuw via RDP in te loggen
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

Hier staan twee links naar fictieve afbeeldingen die te vinden zijn op my_router.sn.mynetname.net — dit adres halen we uit het DDNS-systeem van MikroTik door dit eerst in onze MikroTik in te schakelen: ga naar het menu IP->Cloud — vink DDNS Enabled aan, klik op Toepassen en kopieer de dns-naam van onze router. Dit is echter alleen nodig wanneer het externe ip van de router dynamisch is of er een configuratie met meerdere internetproviders wordt gebruikt.

De poort in de eerste link :19000 komt overeen met de eerste poort waarmee we verbinding moeten maken, en de tweede poort met de tweede. Tussen de links staat een korte instructie die aangeeft wat te doen als onze verbinding door korte netwerkproblemen verbroken wordt — vernieuw de pagina, de RDP-poort wordt weer geopend voor 1 minuut en onze sessie wordt hersteld. Ook de tekst tussen de img-tags zorgt voor een microvertraging in de browser, wat de kans verkleint dat het eerste pakket naar de tweede poort (16000) wordt afgeleverd — tot nu toe zijn er in twee weken gebruik (30 personen) geen gevallen geweest.

Vervolgens komt het bestand 1.rdp, dat we één keer voor iedereen kunnen instellen of afzonderlijk voor elke gebruiker (ik heb het zo gedaan — het is gemakkelijker om 15 minuten extra tijd te besteden dan meerdere uren aan het adviseren van degenen die het niet konden uitzoeken).

screen mode id:i:2
use multimon:i:1
.....
connection type:i:6
networkautodetect:i:0
.....
disable wallpaper:i:1
.....
full address:s:my_router.sn.mynetname.net:33890
.....
username:s:myuserlogin
domain:s:mydomain

Van de interessante instellingen hier use multimon:i:1 — dit schakelt het gebruik van meerdere monitoren in — sommige hebben dat nodig, en ze denken er zelf niet aan om het in te schakelen.

connection type:i:6 en networkautodetect:i:0 — gezien het feit dat de meeste internetverbindingen boven de 10 Mbit zijn, schakelen we verbindings type 6 (lokale netwerk 10 Mbit en hoger) in en schakelen we networkautodetect uit, omdat als het standaard (auto) is, zelfs een korte vertraging in het netwerk automatisch een verlaagde snelheid voor onze sessie instelt, wat merkbare vertragingen in het werk kan veroorzaken, vooral in grafische programma's.

disable wallpaper:i:1 — we schakelen de achtergrondafbeelding uit.
username:s:myuserlogin — we geven de gebruikersnaam op, omdat een aanzienlijk deel van onze gebruikers zijn of haar gebruikersnaam niet weet.
domain:s:mydomain — we geven het domein of de naam van de computer op.

Maar als we onze taak bij het creëren van de verbindingsprocedure willen vereenvoudigen, kunnen we ook PowerShell gebruiken — StartRDP.ps1.

Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 19000
Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 16000
mstsc /v:my_router.sn.mynetname.net:33890

Ook een beetje over de RDP-client in Windows: MS heeft een lange weg afgelegd in het optimaliseren van het protocol en zijn server- en clientonderdelen, en heeft veel nuttige functies geïmplementeerd — zoals ondersteuning voor hardwarematige 3D, optimalisatie van de schermresolutie voor uw monitor, meerdere schermen en meer. Maar natuurlijk is alles geïmplementeerd in een modus van achterwaartse compatibiliteit en als de Windows 7-client gebruikt wordt, en de externe pc Windows 10 is, zal RDP werken met protocolversie 7.0. Maar gelukkig kunnen proefversies van RDP worden bijgewerkt naar nieuwere versies — u kunt bijvoorbeeld de protocolversie verhogen van 7.0 (Windows 7) naar 8.1. Daarom is het voor het gemak van de cliënten belangrijk om de versies van de serverzijde zo veel mogelijk te verhogen, en ook links naar updates naar nieuwere versies van RDP-clients te verstrekken.

Uiteindelijk hebben we een eenvoudige en relatief veilige technologie voor externe toegang tot een werk-pc of terminalserver. Maar om de verbinding veiliger te maken, kan onze methode van Port Knocking worden ingewikkeld om aanvallen te weerstaan door extra controlepoorten toe te voegen — u kunt op dezelfde manier 3, 4, 5, 6… poorten toevoegen, en in dat geval zal een directe inbraak in uw netwerk bijna onmogelijk zijn.

Sjablonen van bestanden voor het creëren van externe verbindingen met RDP.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster