Archive

Archive for the ‘DNS Policies’ Category

Sobre DNS Policies–Windows Server 2016–volume 05–DNS Filtering

19 de junho de 2017 2 comentários

Saudações! Depois de atuações em alguns auditorias de cybersecurity estamos aí de novo pra continuidade dessa interessante série de posts falando sobre DNS Policies no Windows Server 2016.

A quem está chegando agora, abaixo os links para os outros 4 posts da série:

Sobre DNS Policies – Windows Server 2016 – volume 01 – Teoria

Sobre DNS Policies – Windows Server 2016 – volume 02 – Balanceamento de Carga

Sobre DNS Policies – Windows Server 2016 – volume 03 – Gerenciamento de Tráfego de Rede baseado em Geo-Localização

Sobre DNS Policies – Windows Server 2016 – volume 04 – Split Brain DNS e Selective Recursion Control

Hoje, neste 5o. post desta série, vamos falar sobre DNS Filtering, que são filtros de critérios baseados em requisitos definidos na criação da política propriamente dita, ou seja, a resposta de um DNS Server ocorrerá de acordo com a maneira que um cliente faz a query.

Todos os termos associados aos procedimentos de criação de policies podem ser vistos nos posts anteriores desta série, pois, aqui vamos entrar de forma mais dinãmica no que podemos fazer em termos de Filtering via DNS Policies.

1. Bloqueando queries para um domínio:

Você pode impedir que seu DNS resolva requisições para um determinado domínio. Vamos supor que eu não queira que meus usuários acessem nada que seja do domínio *.malicious.org:

Add-DnsServerQueryResolutionPolicy -Name "BlockedDomains" -Action IGNORE -FQDN "EQ,*.malicious.org" –PassThru

No exemplo acima eu criei uma policy chamada “BlockedDomains” que vai ignorar tudo que for igual (EQ) a “malicious.org”.

2. Bloqueando queries para uma subnet:

Vamos agora supor que eu precise bloquear o acesso a uma subnet, ou seja, uma quantidade de endereços os quais eu teria mais trabalho em bloquear um a um:

Add-DnsServerClientSubnet -Name "BlockedSubnet" -IPv4Subnet 129.214.16.0/24 -PassThru

Add-DnsServerQueryResolutionPolicy -Name "BlockedSubnetPolicy" -Action IGNORE -ClientSubnet  "EQ,BlockedSubnet" -PassThru

No pirmeiro comando eu criei uma subnet chamada “BlockedSubNet” onde eu defino a subnet 129.214.16.0/24. No segundo comando eu crio uma regra chamada “BlockedSubnetPolicy” que ignora tudo o que estiver na range de IP citada.

Este filtro pode ser ainda mais incisivo. Vamos supor que eu queira bloquear acessos a tudo que estiver na subnet acima citada que responda pelo domínio *.malicious.org, ou seja, tudo que responder pelo domínio citado e estiver dentro da subnet criada será ignorado:

Add-DnsServerQueryResolutionPolicy -Name "BlockedSubnetPolicy" -Action IGNORE -ClientSubnet  "EQ,BlockedSubnet" –FQDN “EQ,*.malicious.org” -PassThru

3. Bloqueando e liberando tipo de queries

Vamos fazer um mini lab! Eu vou bloquear toda e qualquer consulta a partir do meu DNS Server e depois vou liberando de acordo com a necessidade.

Add-DnsServerQueryResolutionPolicy -Name "BlockAll" -Action IGNORE -QType "EQ,ANY" –PassThru

Cuidado: O comando acima simplesmente bloqueia todo tipo de queries e requisições a seu DNS. Então planeje bem ao usar o parâmtro ANY.

Agora vou fazer a liberação de determinados tipos de queries. O comando abaixo libera queries do tipo A, AAAA, MX, NS e SOA a partir da interface interface interna do meu DNS Server (10.10.1.20):

Add-DnsServerQueryResolutionPolicy -Name "WhiteListQType" -Action IGNORE -QType "NE,A,AAAA,MX,NS,SOA" –ServerInterface “EQ,10.10.1.20” -PassThru

Vamos agora a outros tipos liberação. Vamos liberar as consultas para meu domínio interno:

Add-DnsServerQueryResolutionPolicy -Name "Whitelist" -Action IGNORE -FQDN "NE,*.uilson.net" –PassThru

O comando acima cria uma white list liberando consultas a tudo que vier do domínio uilson.net, usando o parâmetro NE (Not Equal).

Agora vamos liberar o acesso a uma determinada subnet. Vamos repetir alguns parâmetros do comando exibido no item 2 deste post:

Add-DnsServerClientSubnet -Name "WhiteListSubNet" -IPv4Subnet 129.214.16.0/24 -PassThru

Add-DnsServerQueryResolutionPolicy -Name "WhitelistAllowedSubnetPolicy” -Action IGNORE -ClientSubnet  "NE, WhiteListSubNet" –PassThru

Nos comandos acima criei uma subnet chamada WhileListSubnet contendo a range 129.214.16.0/24 que será liberada para consultas DNS a partir da policy WhiteListAllowedSubNetPolicy.

4. Conclusão

Neste post mostrei exemplos de aplicação de filtros a partir do DNS Policies no Windows Server 2016. Como sempre digo aqui, espero que o conteúdo seja útil e possa ajuda-lo em seu dia a dia.

No próxima post da série irei mostrar DNS Policies para foresincs.

Abraços

Uilson

Sobre DNS Policies–Windows Server 2016–volume 04–Split-Brain DNS e Selective Recursion Control

29 de maio de 2017 Deixe um comentário

Saudações,

Peço desculpas pela demora na publicação do quarto volume desta série. Estive em dias de muito trabalho e alguns percalços pessoais. Mas de qualquer forma vamos ao conteúdo de hoje – Split-Brain DNS.

A quem está chegando agora, abaixo os links para os outros 3 posts da série:

Sobre DNS Policies – Windows Server 2016 – volume 01 – Teoria

Sobre DNS Policies – Windows Server 2016 – volume 02 – Balanceamento de Carga

Sobre DNS Policies – Windows Server 2016 – volume 03 – Gerenciamento de Tráfego de Rede baseado em Geo-Localização

De acordo com a teoria que coloquei no volume 1 desta série, com o recurso de Split-Brain DNS os registros são divididos em diferentes escopos de zona no mesmo servidor DNS. Os clientes DNS recebem uma resposta baseado onde de fato estes clientes estão – internos ou externos. Este recurso pode ser configurado em zonas integradas ao AD ou para DNS Standalone Servers.

Também iremos criar políticas de seletive recursion para mitigação e vulnerabilidades em ambientes como este.

Em tempo – Este laboratório foi criado em meu ambiente tendo como base o laboratório do artigo Split-Brain DNS Deployment Using Windows DNS Server Policies do pessoal do Networking Blog da Microsoft. Como não tinha montado nada semelhante, me espelhei no conteúdo deles para criar o meu. Para aqueles que notarem a semelhança do meu lab com o deles, fica aqui registrado que a idéia inicial é do link citado e deixo a eles o devido crédito.

Vamos então a parte prática!

Imaginemos que tenho um site que deverá ser acessado tanto por usuários internos quanto externos. Esse possui informações de produtos da minha empresa que a equipe compartilha com parceiros externos.

Meu DNS posui duas interfaces, uma interna e outra externa

Interna – IP 10.10.1.100

Externa – IP 200.185.0.55

Meu servidor de aplicação interno responde pelo IP 10.10.1.10 e meu servidor de aplicação externo responde pelo IP 66.56.40.10 (lembrando que estes são IP´s fictícios, os IP´s que usei no laboratório do meu ambiente são outros e aqui fica só para ilustração)

Objetivo – Usuários na minha rede interna, irão acessar o site produtos.uilson.net do back-end Server interno e usuários externos irão acessar o back-end server externo, conforme o desenho abaixo:

 

image

Com o cenário definido, vamos ao procedimento que torna tudo isso real:

Vamos começar criando um zone scope para o acesso interno, ou seja, os acessos que virão pela interface 10.10.1.100:

Add-DnsServerZoneScope –ZoneName “uilson.net” –Name “InternalAccess”

Iremos criar o zone scope somente para o acesso interno, ficando o acesso externo direto no zone uilson.net no escopo padrão.

Agora vamos criar criar os registros para os acessos interno e externo, sendo que, para o acesso interno, iremos cria-lo já dentro do zone scope que acabamos de criar:

Registro de acesso externo – Add-DnsServerResourceRecord –ZoneName “uilson.net” –A –Name “produtos” –IPv4Address “66.56.40.10”

Registro de acesso interno – Add-DnsServerResourceRecord –ZoneName “uilson.net” –A –Name “produtos” –IPv4Address “10.10.1.10” –ZoneScope “InternalAccess”

Agora que temos o zone scope e os registros criados, vamos à política que irá diferenciar acessos internos e externos:

Add-DnsServerQueryResolutionPolicy –Name “SplitBrainPolicy” –Action Allow –ServerInterface “eq,10.10.1.100” –ZoneScope “InternalAccess,1” –ZoneName uilson.net

Feito!!!! Temos agora nosso ambiente direcionando as requisições internas ao site produtos.uilson.net para o back-end server interno e os acessos externos indo diretamente para o servidor externo, conforme definido no escopo inicial.

Poderiamos dizer que temos o trabalho finalizado, certo? Errado! Deixar o ambiente simplesmente como está pode, em alguns casos, criar uma vulnerabilidade que precisa ser mitigada.

Lembre-se que neste exemplo temos um DNS Server resolvendo nomes para recursos internos e externos. O que pode ocorrer aqui é que requisições internas e externas passem fazer queries por endereços de internet, podendo expor o ambiente a um Reflection Attack ou DNS Amplification Attack – um DDoS.

Neste caso, as resoluções recursivas para nomes externos precisa ser bloqueada e para isso criaremos outra política que vem a ajudar na mitigação desta vulneravbilidade:

image

Desenho original do link: https://blogs.technet.microsoft.com/networking/2015/05/12/split-brain-dns-deployment-using-windows-dns-server-policies/

O link que postei sobre DDoS DNS Amplification Attack pede que a funcionalidade da recursiva seja desasbilitada no servidor DNS. Neste caso, vamos desabilitar este recurso que será usado somente para requisições internas.

Desabilitando a recursiva: Set-DnsServerRecursionScope –Name . –EnableRecursion $False

No comando acima, a recursiva está sendo desabilitada para o escope default (tudo que está em uilson.net).

Agora vamos habilitar a recursiva somente para um escopo de clientes internos:

Add-DnsServerRecursionScope –Name “RecursionInternalClients” –EnableRecursion $True

Agora vamos criar a política que irá permitir a recursiva somente para clientes internos;

Add-DnsServerQueryResolutionPolicy –Name “SplitBrainRecursionInternal”-Action ALLOW –ApplyOnRecursion –RecursionScope “RecursionInternalClients” –ServerInterfaceIP “EQ,10.10.1.100”

Agora temos nosso ambiente executando dentro de uma melhor prática para o recurso do Split-Brain DNS.

Espero mais uma vez que o conteúdo possa ser útil e não perca o volume 5 desta série. Iremos falar sobre Filtering com DNS Policies.

Abraços

Uilson

Sobre DNS Policies–Windows Server 2016–volume2–Balanceamento de Carga

11 de abril de 2017 Deixe um comentário

Saudações,

Dando continuidade a nossa série de posts sobre DNS Policies, hoje vou relembrar um post que publiquei a um tempo atrás falando sobre o uso do balanceamento de carga de aplicações.

Para quem ainda não leu o primeiro post desta série, segue abaixo o link:

Sobre DNS Policies – Volume1 – Teoria

1. Planejamento do Balanceamento de carga

Vamos clarificar que, o planejamento para alta disponibilidade e sizing de suas aplicações, você não deve somente se basear no que vamos falar aqui. Você precisa ter em mente os objetivos e tipos de acesso que serão necessários para a sua realidade. O balanceamento de carga pode ser feito via NLB Windows, Failover Clustering ou NLB via hardware (este um recurso mais indicado para aplicações que recebem muitos acessos). No caso de high availability em cloud, verifique as questões de elasticidade em termos desenvolvimento e veja como seu cloud provider trabalha em relação a isso.

Enfim, o balanceamento de carga via DNS Policies deve ser avaliado quanto sua eficácia para o negócio que seu aplicativo visa entregar a um departamento e/ou cliente final. Você precisa estar certo de que esta é a melhor opção para seu cenário.

2. Estudo de caso

Vamos propor aqui, como no artigo original publicado anteriormente, um estudo de caso que nos dará a base para a solução a ser implementada:

2.1. Tenho 4 servidores de aplicação – 1 em São Paulo, 1 no Rio de Janeiro, 1 em Fortaleza e  1 em Belo Horizonte

2.2. Fortaleza e Belo Horizonte possuem links com menos banda que SP e RJ

2.3. Essa aplicação vai atender a todo acesso que vier em qualquer uma das filiais da empresa

3. Cenário

Para atender a esta demanda, temos o seguinte desenho de solução:

 

image

4. Solução técnica

Com o exposto acima, vamos ver agora de forma prática como o DNS Policies nos ajuda a entregar essa solução de forma rápida e tudo via PowerShell!!

Primeiro vamos criar os escopos de zona. É a partir deles que a política vai se orientar para aplicar o que queremos. Para cada localidade onde tenho um servidor de aplicação vou crirar um Scope Zone.

Vou noema-los da seguinte forma:

São Paulo: SP_Scope

Rio de Janeiro: RJ_Scope

Fortaleza: For_Scope

Belo Horizonte: BH_Scope

Como fica as linhas de comando PowerShell para isso:

Add-DnsServerZoneScope –ZoneName “uilson.net” –Name “SP_Scope”

Add-DnsServerZoneScope –ZoneName “uilson.net” –Name “RJ_Scope”

Add-DnsServerZoneScope –ZoneName “uilson.net” –Name “For_Scope”

Add-DnsServerZoneScope –ZoneName “uilson.net” –Name “BH_Scope”

image

Com os Scope Zones criados, vou criar um registro tipo A dentro destes escopos, ou seja, cada escopo estará apontando para o IP do back-end server da localidade correspondente:

Add-DnsServerResourceRecord –ZoneName “uilson.net” –A –Name “AppServer” –IPv4 “10.10.0.10” –ZoneScope “SP_Scope”

Add-DnsServerResourceRecord –ZoneName “uilson.net” –A –Name “AppServer” –IPv4 “10.10.1.10” –ZoneScope “RJ_Scope”

Add-DnsServerResourceRecord –ZoneName “uilson.net” –A –Name “AppServer” –IPv4 “10.10.2.10” –ZoneScope “For_Scope”

Add-DnsServerResourceRecord –ZoneName “uilson.net” –A –Name “AppServer” –IPv4 “10.10.3.10” –ZoneScope “SP_Scope”

image

Agora que já temos os Zone Scopes criados e seus respectivos registros, vamos criar a política que fará o balanceamento de carga via DNS Policies:

Add-DnsServerQueryResolutionPolicy -Name "AppServerPolicy" -Action ALLOW – -ZoneScope "SP_Scope,3;RJ_Scope,3;For_Scope,2;BH_Scope,2" -ZoneName "uilson.net"

image

No comando acima observa-se que ao fim de cada Scope Zone foi colocado uma vírgula e um número (Ex: SP_Scope,3). Isto vai definir que para a cada 10 requisições feitas para o host “appserver.uilson.net”, teremos as 3 primeiras sendo direcionadas para o servidor em São Paulo, as próximas 3 para o servidor do Rio de Janeiro, as 2 seguintes para o servidor em Fortaleza e as 2 últimas para o servidor de Belo Horizonte. Dessa forma conseguimos balancear a carga entre as 3 localidades, respeitando os limites de link de cada uma delas.

5. Conclusão

Este post foi publicado novamente para seguir a série que começamos em 03/abril/2017 sobre DNS Policies. No próximo post falaremos sobre Gerenciamento de tráfego de Rede usando políticas de DNS.

Espero que você tenha gostado e que este conteúdo possa ajuda-lo em suas tarefas diárias.

Abraços

Uilson

Sobre DNS Policies–Windows Server 2016–volume 1–Teoria

3 de abril de 2017 Deixe um comentário

Saudações,

Falando em termos de Windows Server 2016 podemos citar, além de sua total integração e adequação à nuvem também aspectos on-premisses que vão aumentar muito a produtividade de seu datacenter em matéria de Segurança.

Vamos começar hoje uma série de posts voltados a DNS Policies no Windows Server 2016. Nas primeiras versões do ainda recém-divulgado SO Windows Server 2016 TP fiz um laboratório neste espaço acerca do balanceamento de carga de aplicações usando DNS Policies. Vou republicar este post para que a comunidade possa rever o tema e fica como o primeiro de uma série que iremos tratar.

palestra_preview

No que tange à Segurança da Informação levando em mente alguns dos seus principais pilares (Integridade, Disponibilidade e Confidencialidade), o DNS Policies traz possibilidades interessantes de expansão da capacidade de resolução de nomes.

De que forma e como posso configurar DNS Policies? Veja abaixo como:

1. Application Load Balance – Ao implementar vários nodes em uma farm de servidores de aplicação – seja IIS ou outro web server (ou até mesmo um client server) – o DNS Policies pode ser usado para balancear o tráfego entre os nodes desta farm. Diferente do antigo recurso de Round Robin o balanceamento do DNS Policies distribui a carga de forma dinâmica e mais inteligente podendo priorizar um ou mais nodes em relação ao direcionamento das requisições.

2. Gerenciamento de tráfego baseado em Geo-Localização – Para as requisições baseadas em localização geográficas o DNS Policies faz com que servidores DNS primário e secundário fazem o cliente ser redirecionado para o IP do recurso mais próximo, otimizando o tráfego e consumo de banda, dependendo da localização do destino.

3. Split Brain DNS – Com o recurso de Split Brain DNS os registros são divididos em diferentes escopos de zona no mesmo servidor DNS. Os clientes DNS recebem uma resposta baseado onde de fato estes clientes estão – internos ou externos. Este recurso pode ser configurado em zonas integradas ao AD ou para DNS Standalone servers.

4. Filtering – Neste caso você cria filtros de critérios baseados em requisitos definidos na criação da política propriamente dita, ou seja, a resposta de um DNS Server ocorrerá de acordo com a maneira que um cliente faz a query.

5. Foresincs – Um dos recursos que mais gostei nessa parte de políticas. Você pode fazer com que seu DNS redirecione requisições maliciosas para um IP não existente ao invés de direcioná-la para o computador que ela tenta alcançar.

6. Redirecionamento baseado na hora do dia – Vem como uma adicional à política de gerenciamento de tráfego. Você pode direcionar a requisição para um determinado local baseado em uma hora do dia, ou seja, a requisição vai para aquele servidor a partir de um determinado horário do dia.

Novos conceitos

Client Subnet – Um objeto Client Subnet representa uma range IP (IPv4 ou IPv6) a qual as queries são submetidas em um servidor DNS. Você pode criar client subnet’s que vão ser usadas em políticas de DNS que vai resolver/encaminhar uma requisição a um determinado destino baseado na range de IP definida em uma subnet client. Exemplo: Clientes da subnet 10.10.1.0/24 serão encaminhados ao node 2 da farm de servidores de aplicação, enquanto clientes da subnet 10.10.2.0/24 serão encaminhados ao node 1 da minha farm de servidores.

Recursion Scope – Um escopo de recursão contém uma lista de Forwarders e especifica se a recursão está ativada. Um DNS Server pode ter diversos recursion scopes e as políticas atreladas a ele irão ser direcionadas para o escopo que contemple aquela query. Você pode especificar quais forwarders serão utilizados e se utilizarão a recursão.

Zone Scopes – Um DNS Server pode ter diversos escopos de zona (Zone Scopes) contendo neles uma lista de registros. Um mesmo registro pode estar presente em diversos escopos de zona, com diferentes endereços IP. Políticas de Zone Transfer são feitas usando os escopos de zona.

Os conceitos acima se aplicam aos seguintes tipos de política: Query Resolution Policies, Recursion Policies, Zone Transfer Policies, Traffic Management, Block Queries from a Domain, Block Queries from a Subnet, Allow Recursion for Internal Clients, Create a Server Level Zone Transfer Policy, e finalmente, Create a Zone Leve Zone transfer Policy.

No decorrer desta série de posts veremos em exemplos práticos com PowerShell como usar todas as políticas citadas acima em seu ambiente. Não perca! Certamente ela vai ajudar bastante seu dia a dia para assimilar melhor essa nova funcionalidade no Windows Server 2016.

Em breve a parte de balanceamento de carga com DNS Policies será republicada.

A base de estudos para este post foi tirada do link abaixo:

https://technet.microsoft.com/en-us/windows-server-docs/networking/dns/deploy/dns-policies-overview

Abraços

Uilson

%d blogueiros gostam disto: