Trabalho remoto no escritório. RDP, Port Knocking, Mikrotik: simples e seguro

Devido à pandemia do vírus covid-19 e à quarentena geral em muitos países, a única maneira de muitas empresas continuarem trabalhando é o acesso remoto aos locais de trabalho via Internet. Existem muitos métodos relativamente seguros para trabalho remoto - mas, dada a escala do problema, é necessário um método simples para qualquer usuário se conectar remotamente ao escritório e sem a necessidade de configurações adicionais, explicações, consultas tediosas e instruções longas. Este método é amado por muitos administradores RDP (Remote Desktop Protocol). Conectar-se diretamente ao local de trabalho via RDP resolve idealmente nosso problema, exceto por uma grande mosca na pomada - manter a porta RDP aberta para a Internet é muito inseguro. Portanto, abaixo proponho um método de proteção simples, mas confiável.Trabalho remoto no escritório. RDP, Port Knocking, Mikrotik: simples e seguro

Como frequentemente encontro pequenas organizações onde dispositivos Mikrotik são usados ​​como acesso à Internet, abaixo será mostrado como implementar isso no Mikrotik, mas o método de proteção Port Knocking é facilmente implementado em outros dispositivos de classe superior com configurações de roteador de entrada e firewall semelhantes .

Brevemente sobre Port Knocking. A proteção externa ideal de uma rede conectada à Internet é quando todos os recursos e portas são fechados por fora por um firewall. E embora um roteador com esse firewall configurado não reaja de forma alguma aos pacotes vindos de fora, ele os ouve. Portanto, você pode configurar o roteador para que, quando uma determinada sequência (código) de pacotes de rede for recebida em portas diferentes, ele (o roteador) para o IP de onde vieram os pacotes corte o acesso a determinados recursos (portas, protocolos, etc).

Agora vamos aos negócios. Não farei uma descrição detalhada das configurações do firewall no Mikrotik - a Internet está repleta de fontes de alta qualidade para isso. Idealmente, o firewall bloqueia todos os pacotes recebidos, mas

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

Permite o tráfego de entrada de conexões relacionadas estabelecidas.
Agora configuramos o Port Knocking no 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 com mais detalhes:

primeiras duas 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

proibir pacotes recebidos de endereços IP que estão na lista negra durante a varredura de portas;

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

adiciona ip à lista de hosts que fizeram a primeira batida correta na porta correta (19000);
As próximas quatro regras são:

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

crie portas de armadilha para aqueles que desejam escanear suas portas e, se tais tentativas forem detectadas, coloque seus ips na lista negra por 60 minutos, durante os quais as duas primeiras regras não darão a esses hosts a oportunidade de bater nas portas corretas;

Próxima 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

coloca ip na lista de permitidos por 1 minuto (o suficiente para estabelecer conexão), desde que a segunda batida correta tenha sido feita na porta desejada (16000);

Próximo comando:

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

move nossas regras para cima na cadeia de processamento do firewall, pois provavelmente já teremos diferentes regras de negação configuradas que impedirão que as novas criadas funcionem. A primeira regra no Mikrotik começa do zero, mas no meu dispositivo zero estava ocupado por uma regra interna e era impossível movê-la - mudei para 1. Portanto, olhamos para nossas configurações - onde você pode movê-la e indique o número desejado.

Próxima configuração:

/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

encaminha uma porta 33890 selecionada arbitrariamente para a porta RDP 3389 usual e o ip do computador ou servidor de terminal de que precisamos. Criamos essas regras para todos os recursos internos necessários, de preferência definindo portas externas não padronizadas (e diferentes). Naturalmente, o ip dos recursos internos deve ser estático ou fixo no servidor DHCP.

Agora nosso Mikrotik está configurado e precisamos de um procedimento simples para o usuário se conectar ao nosso RDP interno. Como temos principalmente usuários do Windows, criamos um arquivo bat simples e o nomeamos StartRDP.bat:

1.htm
1.rdp

respectivamente 1.htm contém 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">

ele contém dois links para imagens imaginárias localizadas em my_router.sn.mynetname.net - pegamos este endereço do sistema Mikrotik DDNS depois de habilitá-lo em nosso Mikrotik: vá para o menu IP-> Cloud - marque a caixa de seleção DDNS Enabled, clique em Aplicar e copie o nome dns do nosso roteador. Mas isso só é necessário quando o ip externo do roteador é dinâmico ou é utilizada uma configuração com vários provedores de internet.

A porta no primeiro link: 19000 corresponde à primeira porta na qual você precisa bater, na segunda, respectivamente, na segunda. Entre os links há uma breve instrução que mostra o que fazer se repentinamente nossa conexão for interrompida devido a problemas de rede curtos - atualizamos a página, a porta RDP é reaberta para nós por 1 minuto e nossa sessão é restaurada. Além disso, o texto entre as tags img forma um micro-atraso para o navegador, o que reduz a probabilidade de o primeiro pacote ser entregue na segunda porta (16000) - até agora não houve casos em duas semanas de uso (30 pessoas).

Em seguida vem o arquivo 1.rdp, que podemos configurar um para todos ou separadamente para cada usuário (eu fiz isso - é mais fácil gastar 15 minutos a mais do que algumas horas consultando quem não entendeu)

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

Uma das configurações interessantes aqui é usar multimon: i: 1 - isso inclui o uso de vários monitores - alguns precisam disso, mas eles próprios não pensarão em ligá-lo.

tipo de conexão: i: 6 e detecção automática de rede: i: 0 - como a maioria da Internet está acima de 10 Mbps, ative o tipo de conexão 6 (rede local de 10 Mbps e superior) e desative a detecção automática de rede, porque se por padrão (automático) , mesmo uma pequena latência de rede rara define automaticamente nossa sessão para uma velocidade lenta por um longo tempo, o que pode criar atrasos perceptíveis no trabalho, especialmente em programas gráficos.

desativar papel de parede: i: 1 - desativar a imagem da área de trabalho
username:s:myuserlogin - especificamos o login do usuário, pois uma parte significativa de nossos usuários não conhece seu login
domínio:s:meudomínio - especifique o domínio ou o nome do computador

Mas se quisermos simplificar nossa tarefa de criar um procedimento de conexão, também podemos usar o 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

Também um pouco sobre o cliente RDP no Windows: a MS percorreu um longo caminho para otimizar o protocolo e suas partes de servidor e cliente, implementou muitos recursos úteis - como trabalhar com hardware 3D, otimizar a resolução da tela para seu monitor, tela múltipla, e assim por diante. Mas é claro que tudo é implementado no modo de compatibilidade com versões anteriores e, se o cliente for o Windows 7 e o PC remoto for o Windows 10, o RDP funcionará usando o protocolo versão 7.0. Mas o benefício é que você pode atualizar as versões do RDP para versões mais recentes - por exemplo, você pode atualizar a versão do protocolo de 7.0 (Windows 7) para 8.1. Portanto, para comodidade dos clientes, é necessário aumentar ao máximo as versões da parte do servidor, bem como descartar links para atualizar para novas versões dos clientes do protocolo RDP.

Como resultado, temos uma tecnologia simples e relativamente segura para conexão remota a um PC ou servidor de terminal em funcionamento. Mas para uma conexão mais segura, nosso método Port Knocking pode ser mais difícil de atacar em várias ordens de grandeza, adicionando portas para verificar - você pode adicionar 3,4,5,6 ... uma porta de acordo com a mesma lógica , e neste caso uma invasão direta em sua rede será quase impossível .

Arquivos em branco para criar uma conexão remota com RDP.

Fonte: habr.com

Adicionar um comentário