Traballo remoto na oficina. RDP, Port Knocking, Mikrotik: sinxelo e seguro

Debido á pandemia do virus covid-19 e á corentena xeral en moitos países, a única forma de que moitas empresas sigan traballando é o acceso remoto aos lugares de traballo a través de Internet. Hai moitos métodos relativamente seguros para o traballo remoto, pero dada a magnitude do problema, é necesario un método sinxelo para que calquera usuario se conecte remotamente á oficina e sen necesidade de configuracións adicionais, explicacións, consultas tediosas e longas instrucións. Este método é amado por moitos administradores RDP (Remote Desktop Protocol). Conectarse directamente ao lugar de traballo a través de RDP soluciona idealmente o noso problema, excepto por unha gran mosca na pomada: manter o porto RDP aberto para Internet é moi perigoso. Polo tanto, a continuación propoño un método de protección sinxelo pero fiable.Traballo remoto na oficina. RDP, Port Knocking, Mikrotik: sinxelo e seguro

Dado que moitas veces me atopo con pequenas organizacións nas que se usan dispositivos Mikrotik como acceso a Internet, a continuación amosarase como implementar isto en Mikrotik, pero o método de protección contra golpes de portos se implementa facilmente noutros dispositivos de clase superior con configuracións de enrutadores de entrada e firewall similares. .

Brevemente sobre Port Knocking. A protección externa ideal dunha rede conectada a Internet é cando todos os recursos e portos están pechados desde o exterior por un cortalumes. E aínda que un enrutador cun firewall tan configurado non reacciona de ningún xeito aos paquetes que veñen de fóra, escóitaos. Polo tanto, pode configurar o enrutador para que cando se reciba unha determinada secuencia (código) de paquetes de rede en diferentes portos, este (o enrutador) para a IP de onde proviñan os paquetes corte o acceso a determinados recursos (portos, protocolos, etc.).

Agora aos negocios. Non farei unha descrición detallada da configuración do firewall en Mikrotik: Internet está chea de fontes de alta calidade para iso. O ideal é que o firewall bloquee todos os paquetes entrantes, pero

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

Permite o tráfico entrante de conexións establecidas e relacionadas.
Agora configuramos Port Knocking en Mikrotik:

/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

Agora con máis detalle:

dúas primeiras regras

/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

prohibir os paquetes entrantes de enderezos IP que están na lista negra durante a exploración de portos;

Terceira regra:

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

engade ip á lista de hosts que fixeron o primeiro golpe correcto no porto correcto (19000);
As seguintes catro regras son:

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

cree portos de trampa para aqueles que queiran escanear os seus portos e, se se detectan tales intentos, coloque a súa IP na lista negra durante 60 minutos, durante os cales as dúas primeiras regras non darán a eses servidores a oportunidade de chamar aos portos correctos;

Seguinte regra:

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

pon ip na lista permitida durante 1 minuto (o suficiente para establecer unha conexión), xa que o segundo golpe correcto realizouse no porto desexado (16000);

Seguinte comando:

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

move as nosas regras na cadea de procesamento do firewall, xa que o máis probable é que xa teñamos configuradas diferentes regras de denegación que impedirán que funcionen as que acaban de crear. A primeira regra en Mikrotik comeza desde cero, pero no meu dispositivo o cero estaba ocupado por unha regra integrada e era imposible movelo. Moveino a 1. Polo tanto, miramos a nosa configuración: onde podes movelo. e indica o número desexado.

Próxima configuración:

/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

reenvía un porto 33890 seleccionado arbitrariamente ao porto RDP habitual 3389 e a ip do ordenador ou servidor de terminal que necesitamos. Creamos tales regras para todos os recursos internos necesarios, preferiblemente establecendo portos externos non estándar (e diferentes). Por suposto, a ip dos recursos internos debe ser estática ou fixada no servidor DHCP.

Agora o noso Mikrotik está configurado e necesitamos un procedemento sinxelo para que o usuario se conecte ao noso RDP interno. Dado que temos principalmente usuarios de Windows, creamos un ficheiro bat simple e nomeamos StartRDP.bat:

1.htm
1.rdp

respectivamente 1.htm contén o seguinte código:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
нажмите обновить страницу для повторного захода по RDP
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

contén dúas ligazóns a imaxes imaxinarias que se atopan en my_router.sn.mynetname.net - tomamos este enderezo do sistema Mikrotik DDNS despois de activalo no noso Mikrotik: vai ao menú IP-> Cloud - marque a caixa de verificación DDNS Enabled, fai clic en Aplicar e copia o nome dns do noso enrutador. Pero isto só é necesario cando a ip externa do router é dinámica ou se utiliza unha configuración con varios provedores de Internet.

O porto do primeiro enlace: 19000 corresponde ao primeiro porto no que cómpre tocar, no segundo, respectivamente, ao segundo. Entre as ligazóns hai unha pequena instrución que mostra o que facer se de súpeto a nosa conexión se interrompe debido a problemas curtos de rede: actualizamos a páxina, o porto RDP reabre para nós durante 1 minuto e a nosa sesión restableceuse. Ademais, o texto entre as etiquetas img constitúe un micro-retraso para o navegador, o que reduce a probabilidade de que o primeiro paquete se entregue ao segundo porto (16000) - ata agora non houbo tales casos en dúas semanas de uso (30 persoas).

A continuación vén o ficheiro 1.rdp, que podemos configurar un para todos ou por separado para cada usuario (eu fixen isto: é máis fácil gastar 15 minutos máis que unhas horas consultando a aqueles que non puideron descifralo)

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

dos axustes interesantes aquí é usar multimon: i: 1 - isto inclúe o uso de varios monitores - algúns precisan isto, pero eles mesmos non pensarán en acendelo.

tipo de conexión: i: 6 e detección automática de rede: i: 0 - xa que a maioría de Internet está por riba de 10 Mbps, active o tipo de conexión 6 (rede local de 10 Mbps ou superior) e desactive a detección automática de rede, xa que se está por defecto (automático) , entón incluso unha pequena latencia de rede rara configura automaticamente a nosa sesión a unha velocidade lenta durante moito tempo, o que pode crear atrasos notables no traballo, especialmente nos programas de gráficos.

desactivar fondo de pantalla: i: 1 - desactivar a imaxe do escritorio
username:s:myuserlogin - especificamos o inicio de sesión do usuario, xa que unha parte significativa dos nosos usuarios non coñece o seu inicio de sesión
domain:s:mydomain - especifique o nome do dominio ou do ordenador

Pero se queremos simplificar a nosa tarefa de crear un procedemento de conexión, tamén podemos usar PowerShell - 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

Tamén un pouco sobre o cliente RDP en Windows: MS percorreu un longo camiño á hora de optimizar o protocolo e as súas partes de servidor e cliente, implementou moitas funcións útiles, como traballar con hardware 3D, optimizar a resolución da pantalla para o seu monitor, multipantalla, etc. etcétera. Pero, por suposto, todo está implementado en modo de compatibilidade con versións anteriores, e se o cliente é Windows 7 e o PC remoto é Windows 10, entón o RDP funcionará coa versión do protocolo 7.0. Pero a vantaxe é que pode actualizar as versións RDP a versións máis recentes; por exemplo, pode actualizar a versión do protocolo de 7.0 (Windows 7) a 8.1. Polo tanto, para a comodidade dos clientes, é necesario aumentar o máximo posible as versións da parte do servidor, así como soltar ligazóns para actualizar a novas versións dos clientes do protocolo RDP.

Como resultado, temos unha tecnoloxía sinxela e relativamente segura para a conexión remota a un PC ou servidor terminal que funcione. Pero para unha conexión máis segura, o noso método Port Knocking pode ser máis difícil de atacar en varias ordes de magnitude, engadindo portos para comprobar - pode engadir 3,4,5,6 ... un porto segundo a mesma lóxica , e neste caso unha intrusión directa na túa rede será case imposible .

Ficheiros en branco para crear unha conexión remota a RDP.

Fonte: www.habr.com

Engadir un comentario