Meu projeto inacabado. Rede de 200 roteadores MikroTik

Meu projeto inacabado. Rede de 200 roteadores MikroTik

Olá a todos. Este artigo é destinado a quem possui muitos dispositivos Mikrotik em sua frota e deseja fazer a unificação máxima para não conectar cada dispositivo separadamente. Neste artigo descreverei um projeto que, infelizmente, não atingiu condições de combate devido a fatores humanos. Resumindo: mais de 200 roteadores, configuração rápida e treinamento de equipe, unificação por região, filtragem de redes e hosts específicos, capacidade de adicionar facilmente regras a todos os dispositivos, registro e controle de acesso.

O que é descrito a seguir não pretende ser um caso pronto, mas espero que seja útil para você no planejamento de suas redes e na minimização de erros. Talvez alguns pontos e soluções possam não parecer totalmente corretos para você - em caso afirmativo, escreva nos comentários. A crítica neste caso será uma experiência para o erário comum. Portanto, leitor, dê uma olhada nos comentários, talvez o autor tenha cometido um erro grave - a comunidade vai ajudar.

O número de roteadores é de 200 a 300, espalhados por diferentes cidades com diferentes qualidades de conexão à Internet. É necessário fazer tudo de maneira bonita e explicar claramente aos administradores locais como tudo funcionará.

Então, onde começa qualquer projeto? Claro, com TK.

  1. Organização de plano de rede para todas as filiais de acordo com a necessidade do cliente, segmentação de rede (de 3 a 20 redes em filiais dependendo da quantidade de dispositivos).
  2. Configurando dispositivos em cada filial. Verificar a velocidade real de transferência do provedor sob diferentes condições operacionais.
  3. Organização da proteção de dispositivos, gerenciamento de whitelist, autodetecção de ataques com auto-blacklisting por um determinado período de tempo, minimizando a utilização de diversos meios técnicos utilizados para interceptar controle de acesso e negar serviço.
  4. Organização de conexões VPN seguras com filtragem de rede de acordo com as necessidades do cliente. Mínimo de 3 conexões VPN de cada filial ao centro.
  5. Com base nos pontos 1, 2. Selecione as formas ideais de construir VPNs tolerantes a falhas. Se justificado corretamente, a tecnologia de roteamento dinâmico pode ser escolhida pelo contratante.
  6. Organização da priorização de tráfego por protocolos, portas, hosts e outros serviços específicos utilizados pelo cliente. (VOIP, hosts com serviços importantes)
  7. Organização de monitoramento e registro de eventos do roteador para resposta da equipe de suporte técnico.

Como entendemos, em vários casos as especificações técnicas são elaboradas com base nos requisitos. Eu mesmo formulei esses requisitos, depois de ouvir os principais problemas. Ele admitiu a possibilidade de que outra pessoa pudesse cuidar desses pontos.

Quais ferramentas serão usadas para atender a esses requisitos:

  1. Pilha ELK (depois de algum tempo, ficou claro que o fluentd seria usado em vez do logstash).
  2. Ansible. Para facilidade de administração e compartilhamento de acesso, usaremos AWX.
  3. GITLAB. Não há necessidade de explicar aqui. Onde estaríamos sem o controle de versão de nossas configurações?
  4. PowerShell. Haverá um script simples para a geração inicial da configuração.
  5. Wiki do Doku, para escrever documentação e guias. Neste caso, usamos habr.com.
  6. O monitoramento será realizado através do zabbix. Um diagrama de conexão também será desenhado para uma compreensão geral.

Pontos de configuração EFK

Quanto ao primeiro ponto, descreverei apenas a ideologia pela qual serão construídos os índices. Existem muitos
excelentes artigos sobre como configurar e receber logs de dispositivos rodando mikrotik.

Vou me deter em alguns pontos:

1. De acordo com o diagrama, vale a pena considerar o recebimento de logs de diferentes locais e em diferentes portas. Para isso usaremos um agregador de logs. Também queremos criar gráficos universais para todos os roteadores com capacidade de compartilhamento de acesso. Em seguida, construímos os índices da seguinte forma:

aqui está um pedaço da configuração com o fluentd digite pesquisa elástica
logstash_format verdadeiro
nome_índice mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
anfitriões elasticsearch: 9200
port 9200

Desta forma podemos combinar roteadores e segmentar de acordo com o plano - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Por que complicar tanto? Entendemos que teremos 200 ou mais dispositivos. Você não pode acompanhar tudo. Com a versão 6.8 do elasticsearch, as configurações de segurança estão disponíveis para nós (sem adquirir uma licença), assim podemos distribuir direitos de visualização entre funcionários de suporte técnico ou administradores de sistema locais.
Tabelas, gráficos - aqui você só precisa concordar - ou usa os mesmos, ou cada um faz o que lhe é conveniente.

2. Registrando. Se habilitarmos o login nas regras do firewall, criamos os nomes sem espaços. Pode-se observar que usando uma configuração simples no fluentd, podemos filtrar dados e criar painéis convenientes. A imagem abaixo é meu roteador doméstico.

Meu projeto inacabado. Rede de 200 roteadores MikroTik

3. Por espaço ocupado e logs. Em média, com 1000 mensagens por hora, os logs ocupam de 2 a 3 MB por dia, o que, você vê, não é tanto. Elasticsearch versão 7.5.

ANSÍVEL.AWX

Felizmente para nós, temos um módulo pronto para roteadores
Mencionei sobre o AWX, mas os comandos abaixo são apenas sobre o ansible em sua forma pura - acho que para quem já trabalhou com o ansible não terá problemas ao usar o awx pela gui.

Para ser honesto, antes disso eu olhei outros guias onde eles usavam ssh, e todos eles tinham problemas diferentes com tempo de resposta e vários outros problemas. Repito, não houve briga , tome essas informações como um experimento que não foi além de um conjunto de 20 roteadores.

Precisamos usar um certificado ou conta. Cabe a você decidir, sou a favor dos certificados. Algum ponto sutil sobre direitos. Concedo direitos de gravação - pelo menos “redefinir configuração” não funcionará.

Não deverá haver problemas ao gerar, copiar e importar o certificado:

Breve listagem de comandosNo seu PC
ssh-keygen -t RSA, responda às perguntas, salve a chave.
Copie para o Mikrotik:
chaves ssh do usuário importam arquivo de chave pública = id_mtx.pub usuário = ansible
Primeiro você precisa criar uma conta e atribuir direitos a ela.
Verificando a conexão usando o certificado
ssh -p 49475 -i /chaves/mtx [email protegido]

Registre vi /etc/ansible/hosts
MT01 ansible_network_os=roteadores ansible_ssh_port=49475 ansible_ssh_user= ansible
MT02 ansible_network_os=roteadores ansible_ssh_port=49475 ansible_ssh_user= ansible
MT03 ansible_network_os=roteadores ansible_ssh_port=49475 ansible_ssh_user= ansible
MT04 ansible_network_os=roteadores ansible_ssh_port=49475 ansible_ssh_user= ansible

Bem, um exemplo de manual: - nome: add_work_sites
anfitriões: testmt
série: 1
conexão: rede_cli
usuário_remoto: mikrotik.west
reunir_fatos: sim
tarefas:
- nome: adicione Work_sites
comando_roteadores:
comandos:
— /ip lista de endereços de firewall adicionar endereço=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
- /ip lista de endereços de firewall adicionar endereço=habr.com list=work_sites comment=for_habr

Como você pode ver na configuração acima, criar seus próprios manuais não é difícil. Basta dominar bem o cli mikrotik. Vamos imaginar uma situação em que você precise remover a lista de endereços com determinados dados em todos os roteadores, então:

Localizar e remover/ip lista de endereços de firewall remover [encontre onde list="gov.ru"]

Intencionalmente não incluí toda a lista de firewalls aqui porque... será individual para cada projeto. Mas uma coisa posso dizer com certeza, use apenas a lista de endereços.

Segundo o GITLAB tudo está claro. Não vou me alongar neste ponto. Tudo é lindo para tarefas individuais, modelos, manipuladores.

Powershell

Haverá 3 arquivos aqui. Por que PowerShell? Você pode escolher qualquer ferramenta para gerar configurações, o que for mais conveniente para você. Nesse caso, todo mundo tem Windows em seu PC, então por que fazer isso no bash quando o PowerShell é mais conveniente. Qual é mais conveniente?

O script em si (simples e direto):[cmdletBinding()] Param(
[Parâmetro(Obrigatório=$true)] [string]$EXTERNALIPADDDRESS,
[Parâmetro(Obrigatório=$true)] [string]$EXTERNALIPROUTE,
[Parâmetro(Obrigatório=$true)] [string]$BWorknets,
[Parâmetro(Obrigatório=$true)] [string]$CWorknets,
[Parâmetro(Obrigatório=$true)] [string]$BVoipNets,
[Parâmetro(Obrigatório=$true)] [string]$CVoipNets,
[Parâmetro(Obrigatório=$true)] [string]$CClientss,
[Parâmetro(Obrigatório=$true)] [string]$BVPNWORKs,
[Parâmetro(Obrigatório=$true)] [string]$CVPNWORKs,
[Parâmetro(Obrigatório=$true)] [string]$BVPNCLIENTSs,
[Parâmetro(Obrigatório=$true)] [string]$cVPNCLIENTSs,
[Parâmetro(Obrigatório=$true)] [string]$NAMEROUTER,
[Parâmetro(Obrigatório=$true)] [string]$ServerCertificates,
[Parâmetro(Obrigatório=$true)] [string]$infile,
[Parâmetro(Obrigatório=$true)] [string]$outfile
)

Obter conteúdo $infile | Foreach-Object {$_.Replace("EXTERNIP", $EXTERNALIPADDRESS)} |
Foreach-Object {$_.Replace("EXTROUTE", $EXTERNALIPROUTE)} |
Foreach-Object {$_.Replace("BWorknet", $BWorknets)} |
Foreach-Object {$_.Replace("CWorknet", $CWorknets)} |
Foreach-Object {$_.Replace("BVoipNet", $BVoipNets)} |
Foreach-Object {$_.Replace("CVoipNet", $CVoipNets)} |
Foreach-Object {$_.Replace("CClients", $CClientss)} |
Foreach-Object {$_.Replace("BVPNWORK", $BVPNWORKs)} |
Foreach-Object {$_.Replace("CVPNWORK", $CVPNWORKs)} |
Foreach-Object {$_.Replace("BVPNCLIENTS", $BVPNCLIENTSs)} |
Foreach-Object {$_.Replace("CVPNCLIENTS", $cVPNCLIENTSs)} |
Foreach-Object {$_.Replace("MYNAMERROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | Definir conteúdo $outfile

Por favor, me perdoe, não posso postar todas as regras porque... não será muito bonito. Você mesmo pode criar as regras, guiado pelas melhores práticas.

Por exemplo, aqui está uma lista de links que segui:wiki.mikrotik.com/wiki/Manual: Protegendo_Seu_Roteador
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filtro
wiki.mikrotik.com/wiki/Manual: Exemplos OSPF
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/Manual:Atualizando_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - aqui você precisa saber que quando o fasttrack está habilitado, as regras de priorização e modelagem de tráfego não funcionarão - útil para dispositivos fracos.

Símbolos para variáveis:As seguintes redes são tomadas como exemplo:
Rede de trabalho 192.168.0.0/24
Rede VOIP 172.22.4.0/24
Rede 10.0.0.0/24 para clientes sem acesso à rede local
Rede VPN 192.168.255.0/24 para grandes filiais
Rede VPN 172.19.255.0/24 para pequenas

O endereço de rede é composto por 4 números decimais, respectivamente ABCD, a substituição funciona segundo o mesmo princípio, se na inicialização pedir B, então é necessário inserir o número 192.168.0.0 para a rede 24/0, e para C = 0.
$EXTERNALIPADDDRESS – endereço dedicado do provedor.
$EXTERNALIPROUTE – rota padrão para a rede 0.0.0.0/0
$BWorknets - Rede de trabalho, no nosso exemplo serão 168
$CWorknets – Rede em funcionamento, em nosso exemplo será 0
$BVoipNets – rede VOIP em nosso exemplo aqui 22
$CVoipNets - rede VOIP em nosso exemplo aqui 4
$CClientss - Rede para clientes - somente acesso à Internet, no nosso caso aqui 0
$BVPNWORKs – Rede VPN para grandes filiais, no nosso exemplo 20
$CVPNWORKs – Rede VPN para grandes filiais, no nosso exemplo 255
$BVPNCLIENTS – Rede VPN para pequenas filiais, ou seja, 19
$CVPNCLIENTS – Rede VPN para pequenas filiais, ou seja, 255
$NAMEROUTER – nome do roteador
$ServerCertificate – o nome do certificado que você importou anteriormente
$infile — Especifique o caminho para o arquivo do qual leremos a configuração, por exemplo D:config.txt (de preferência o caminho em inglês sem aspas e espaços)
$outfile — especifique o caminho onde salvá-lo, por exemplo D:MT-test.txt

Alterei deliberadamente os endereços nos exemplos por razões óbvias.

Não entendi a questão da detecção de ataques e comportamento anômalo - isso merece um artigo separado. Mas vale ressaltar que nesta categoria você pode usar o monitoramento dos valores dos dados do Zabbix + dados curl processados ​​​​do elasticsearch.

Em quais pontos você deve prestar atenção:

  1. Plano de rede. É melhor redigi-lo imediatamente de forma legível. Excel será suficiente. Infelizmente, muitas vezes vejo que as redes são construídas de acordo com o princípio “Uma nova filial apareceu, aqui está /24 para você”. Ninguém está descobrindo quantos dispositivos são esperados em um determinado local ou se haverá maior crescimento. Por exemplo, foi aberta uma pequena loja na qual inicialmente ficou claro que o dispositivo não teria mais que 10, por que alocar /24? Para grandes filiais, ao contrário, eles alocam /24, e são 500 dispositivos - você pode simplesmente adicionar uma rede, mas quer pensar em tudo de uma vez.
  2. Regras de filtragem. Se o projeto pressupõe que haverá separação de redes e segmentação máxima. As melhores práticas mudam com o tempo. Anteriormente, uma rede de PCs e uma rede de impressoras eram divididas, mas agora é normal não dividir essas redes. Vale a pena usar o bom senso e não criar muitas sub-redes onde elas não são necessárias e não combinar todos os dispositivos em uma rede.
  3. Configurações “douradas” em todos os roteadores. Aqueles. se você decidiu um plano. Vale a pena prever tudo de uma vez e tentar garantir que todas as configurações sejam idênticas - apenas a lista de endereços e os endereços IP são diferentes. Se surgirem problemas, o tempo de depuração será menor.
  4. As questões organizacionais não são menos importantes que as técnicas. Muitas vezes, funcionários preguiçosos executam essas recomendações “manualmente”, sem usar configurações e scripts prontos, o que acaba gerando problemas do nada.

Por roteamento dinâmico. Foi utilizado OSPF com divisão de zona. Mas esta é uma bancada de testes: é mais interessante configurar essas coisas em condições de combate.

Espero que ninguém fique chateado por eu não ter postado as configurações do roteador. Acho que os links serão suficientes, e então tudo depende dos requisitos. E claro, testes, mais testes são necessários.

Desejo que todos realizem seus projetos no novo ano. Que o acesso concedido esteja com você!!!

Fonte: habr.com

Adicionar um comentário