CCNP: Port Mirroring com SPAN, RSPAN e VSPAN
Para esse exemplo, irei abstrair toda e qualquer informação relacionada a camada de redes, aqui o foco está apenas na camada 2. Para manter o padrão, abaixo segue a topologia utilizada:

Switched Port Analyzer (SPAN, como é chamado pela Cisco Systems), é um mecanismo de simples entendimento e implementação, consiste apenas no espelhamento de uma porta de origem (ou um range de portas) para uma outra porta de destino (ou porta de monitoramento), facilitando assim, como demonstrado na topologia, a implementação de mecanismos como IDS/IPS (ou qualquer que seja a modalidade de analisador de tráfego em redes cabeada). O exemplo acima fará uso da configuração padrão Local SPAN, podendo ser configurado da seguinte maneira:
SWB(config)# monitor session 1 source interface fast 0/2 both
Podemos fazer o espelhamento de uma porta em 3 modos (destacado em vermelho):
both (default) – monitora o tráfego em ambos os sentidos (tx/rx);
rx – monitora apenas o tráfego recebido pela porta;
tx – monitora apenas o tráfego enviado pela porta;
Configurando a monitor port:
SWB(config)# monitor session 1 destination interface fast0/1
Posted in Cisco | No Comments
CCNP: Isolamento e Segmentação com Private VLANs (PVLANs)
Abaixo segue o modelo de referência topológica utilizado para esse exemplo:
Para começar, uma VLAN privada tem como propósito, como mencionado no título, prover o isolamento e segmentação em camada 2 sem que seja necessário a divisão da rede em subnets (economizando endereços IP). PVLAN é um mecanismo (ou técnica, como preferir) proprietária da Cisco, descrita na RFC 5517.
A compreensão da técnica consiste basicamente no entendimento dos três estados de porta:
1) Isolated – onde as portas só conseguem se comunicar com as portas em modo promiscuous;
2) Community - onde as portas só conseguem se comunicar com as portas em modo promíscuo e com as portas de sua própria community;
3) Promiscuous - porta que enviará comunicação das portas communities e isolated;
A configuração é simples, e consiste inicialmente na escolha de uma primary VLAN (verifique a imagem da topologia). As configurações serão, obviamente, efetuadas no dispositivo SW:
SW(config)# vlan 200 SW(config-vlan)# private-vlan primary SW(config-vlan)# end
Após determinar quem será sua primary VLAN, deveremos começar o processo de segmentação. NOTA: O ID de cada VLAN não precisa, necessariamente, seguir uma ordem numérica lógica, mas é aconselhável que você, como administrador, as crie de forma a facilitar a compreensão para verificação futura. No exemplo, utilizamos a VLAN 200 como primária e a “segmentamos” na VLAN 210 e 220.
O restante da configuração será dada da seguinte maneira:
SW(config)# vlan 210 SW(config-vlan)# private-vlan community SW(config-vlan)# end SW(config)# vlan 220 SW(config-vlan)# private-vlan isolated SW(config-vlan)# end
Para finalizar essa etapa, após a configuração das portas em estado de community e isolated, elas deverão ser associadas a nossa VLAN primária:
SW(config)# vlan 200 SW(config-vlan)# private-vlan association 210,220 SW(config-vlan)# end
Pronto, é tudo? Não. Ainda é necessário associar as portas propriamente ditas a cada VLAN, a associação deverá especificar a qual primary VLAN aquela porta pertence, seguido de sua sub-VLAN.
SW(config)# interface range fa1/0 - 1
SW(config-if)# switchport mode private-lan host
SW(config-if)# switchport private-lan host-association 200 210
SW(config-if)# end
SW(config)# interface range fa1/2 - 3
SW(config-if)# switchport mode private-lan host
SW(config-if)# switchport private-lan host-association 200 220
SW(config-if)# end
SW(config)# interface fa1/10
SW(config-if)# switchport mode private-lan promiscuous
SW(config-if)# switchport private-lan mapping 200 210,220
SW(config-if)# end
Qual resultado final dessas configurações? Em nossa topologia específica, os servidores WWW e MySQL conseguirão se comunicar entre si por serem membros de uma mesma community, e também com o gateway (representado pelo roteador “R”), justamente por este se encontrar em uma porta “promíscua”. Os hosts PCA e PCB poderão se comunicar com o gateway, entretanto, jamais se comunicarão entre si (mesmo estando na mesma sub-VLAN). Essa característica faz parte do design do mecanismo isolated em PVLANs. Hosts no modo isolated são de fato isolados de todo outro tráfego. Por consequência, não podemos associar mais do que uma sub-VLAN do tipo isolated a uma mesma primary VLAN. Pense bem! Para quê criar várias sub-VLAN do tipo isolated se o resultado final seria exatamente o mesmo apresentado pela utilização de apenas uma sub-VLAN?
Posted in Cisco | Tags: VLAN | No Comments
CCNP: Cisco Hot Standby Router Protocol
Abaixo, segue a topologia a ser discutida nesse post relacionado a redundância por meio da implementação do protocolo proprietário HSRP.

O primeiro passo para a configuração é compreender os conceitos que envolvem o HSRP, e o primeiro deles é o conceito de SVI (que não é necessariamente associado ao HSRP, mas sim a um mecanismo de Layer-3 switching). SVI, ou Switchi(ed) Virtual Interface, é apenas a criação de uma interface virtual associada a uma tag 802.1Q (VLAN) visível a partir de qualquer porta do dispositivo. Abaixo segue os passos para configuração das SVI 50 em R1 e R2 (considerando que a VLAN 50 já esteja criada, inseridas no arquivo flash:vlan.dat e rodando na RAM):
R1(config)# ip routing R1(config)# interface vlan 50 R1(config-if)# ip address 172.16.50.2 255.255.255.0 R1(config-if)# no shutdown
R2(config)# ip routing R2(config)# interface vlan 50 R2(config-if)# ip address 172.16.50.3 255.255.255.0 R2(config-if)# no shutdown
O segundo passo, já consiste na configuração da VIP (Virtual IP), que é feito, em nosso caso, dentro de nossas SVI:
R1(config)# interface vlan 50 R1(config-if)# standby 1 ip 172.16.50.1 R1(config-if)# standby 1 priority 150
R2(config)# interface vlan 50 R2(config-if)# standby 1 ip 172.16.50.1 R2(config-if)# standby 1 priority 100
Após a criação do VIP, o endereço 172.16.50.1 já se encontrará “pingável”, e seu MAC address será, no nosso caso: 0000.0c07.ac01, onde 0000.0c representa o nosso vendor id (Cisco), 07.ac representa a código do protocolo HSRP e, finalmente, 01 é o nosso standby group, configurado na linha:
R1(config-if)# standby 1 ip 172.16.50.1
Podemos verificar a ocorrência do endereço MAC com o comando descrito abaixo, após um ping para 172.16.50.1:
R2#show arp Protocol Address Age (min) Hardware Addr Type Interface Internet 172.16.50.3 - c00b.1464.0000 ARPA Vlan50 Internet 172.16.50.1 0 0000.0c07.ac01 ARPA Vlan50
Curiosamente, ao falarmos em MAC address fatalmente estaremos trabalhando com valores hexadecimais. Os últimos dois valores do endereço representam o grupo, logo, podemos variar entre 00 até FF, tendo assim 255 possibilidades de grupos (o valor 00 não é aceitável). O priority (seu valor default é 100) determina quem será o Active router, e obviamente, quem estará atuando como Standby. Sempre que trabalharmos com o termo “priority” devemos considerar a seguinte assertiva: “The bigger, the better!”
Outras informações relevantes a serem consideradas no estudo do HSRP são seus timers. Por padrão, cada dispositivo configurado enviará 1 hello message a cada 3 segundos, e considerará seu vizinho inativo após 10 segundos (hold/dead time), ou seja, após três hello messages perdidas, o roteador irá ser considerado em standby, e o roteador com o segundo maior priority será dado como Active.
Em caso de empate (todos os outros routers configurados com seu priority default, por exemplo) assumirá aquele com maior endereço IP configurado (assim como na eleição do DR/DBR no OSPF, para os que já estudaram sobre).
O comando abaixo é utilizado para visualizar as configurações realizadas:
R1#show standby Vlan50 - Group 1 State is Active 2 state changes, last state change 00:05:07 Virtual IP address is 172.16.50.1 Active virtual MAC address is 0000.0c07.ac01 Local virtual MAC address is 0000.0c07.ac01 (v1 default) Hello time 3 sec, hold time 10 sec Next hello sent in 1.588 secs Preemption disabled Active router is local Standby router is 172.16.50.3, priority 100 (expires in 9.544 sec) Priority 150 (configured 150) IP redundancy name is "hsrp-Vl50-1" (default)
Posted in Cisco | Tags: Redundância | No Comments
Apache: mod_bw
Desenvolvido por Ivan Barrera, o mod_bw é simplesmente um fantástico controlador de banda (e simples!) que trabalha muitissímo bem com hosts virtuais. Vou tentar ser o mais breve possível nessa postagem (estou sem tempo), então para começar, sua instalação pode ser realizada por qualquer gerenciador de pacotes:
$ sudo apt-get install libapache2-mod-bw
Para ativar o módulo simplesmente utilize:
$ a2enmod bw $ sudo /etc/init.d/apache2 restart
No arquivo de configuração do seu site (provavelmente o /etc/apache2/sites-available/default), lembrando que você pode configurar um arquivo para cada virtual host, que de fato é mais interessante, você poderá incluir as seguintes diretivas:
<VirtualHost *:80> ServerName blog.romerojunior.com ServerAdmin romerojnr@gmail.com # Ativa a módulo para todo o domínio blog.romerojunior.com BandwidthModule On # Força a limitação de banda para toda e qualquer requisição na porta 80 ForceBandWidthModule On # Limita em 200kbytes/s Bandwidth all 204800 # Faz com que mesmo que existam vários clientes simultâneos, garanta pelo menos (se disponível) # os 200kbytes especificado acima o valor -1 é uma flag especial, você pode, por exemplo, # garantir o mínimo de 100kbytes por segundo, se preferir. MinBandwidth all -1 DocumentRoot /var/www/blog # [...] </VirtualHost>
Você pode também inserir as diretivas dentro de diretórios específicos (<Directory /var/www/foobar> [...] </Directory>), estabelecendo uma política de priorização de utilização de banda, dando maior prioridade a algum diretório que contenha arquivos pesados (.avi por exemplo), e reduzir a banda em diretórios com conteúdo apenas textual. Enfim, vai de acordo com a criatividade e necessidade de cada um.
Acredito que é mais informação do que o necessário! Aproveitem
Maiores informações sobre o módulo: http://bwmod.sourceforge.net/files/mod_bw-0.7.txt
Posted in Sem categoria | No Comments
Exploit: ARP Poisoning em C
Para começar a envolver um pouco de programação [direcionada a redes] nas postagens, resolvi começar com um exploit que escrevi a algumas noites atrás para demonstrar um ataque de ARP Poisoning para meus colegas de turma da Cisco Networking Academy.
O código é bastante simples e não usa mais do que qualquer distribuição Linux oferece por padrão em seu banco de “includes” (/usr/include/), nele iremos estabelecer comunicação direta com a nossa NIC, tratando assim de uma codificação low-level, o que pode parecer incomodo para alguns, mas não há nenhum bicho de sete cabeças, acreditem que a grande dificuldade é compreender o funcionamento de dois protocolos básicos, o primeiro deles [e mais óbvio] é o Address Resolution Protocol, que se encontra na camada 3 (assim como os protocolos IPv4 e IPv6), observe abaixo sua representação gráfica:
Logo abaixo dele se econtra o Ethernet (IEEE 802.3), não entrarei em muitos detalhes sobre o Ethernet e suas vertentes, sua implementação [que se limitará ao seu header] independe de seu padrões específicos, abaixo segue sua representação gráfica:
O funcionamento do ARP é simples, e para encomizar palavras (e não roubar o foco da postagem, que de fato é a programação), abaixo segue uma ilustração que exemplifica o seu funcionamento:
Finalmente, vamos ao que interessa! O código para explorar a vulnerabilidade nessa infraestrutura é o seguinte: [Compilado em Ubuntu 10.10, ECLIPSE IDE C/C++ (GCC)]
Posted in C, Linux, Programação, Segurança | Tags: C, Linux, Segurança | No Comments
NetBIOS, como funciona?
NetBIOS-over-TCP/IP (NetBT ou NBT), ou simplesmente NetBIOS, é um protocolo legado e um sistema de nomeação utilizado para a compatibilidade com serviços de rede Windows mais antigos (ou seja, ainda se encontra presente em várias e várias redes espalhadas pelo mundo), e como um bom administrador, é seu papel saber configurar, gerenciar e solucionar problemas de resolução de nomes NetBIOS.
Para começar, o NetBIOS fornece a única resolução de nomes (tradução de endereço IP para nome) no Windows que funciona por padrão em uma rede IPv4 sem DNS. Por exemplo, não há necessidade de criar uma zona DNS para uma rede doméstica, mas ao mesmo tempo seria comodo se houvesse uma maneira de acessar determinadas máquinas atráves de um nome UNC (como \\Computador2).
Indo um pouco mais a fundo em seu funcionamento, o NetBIOS possuí três métodos de resolução de nome:
Broadcast NetBIOS
Funciona basicamente como o protocolo ARP (Address Resolution Protocol), onde o cliente NetBIOS envia uma pergunta para todo o domínio de broadcast e aquele que possuir a resposta envia os dados corretos para a origem da pergunta, não há muito o que comentar, observe a imagem:
WINS
Acredito que esse nome seja familiar a muitos administradores, o WINS é um serviço que essencialmente consite numa lista de nomes de computador e seus respectivos endereços IPv4 (lembra o funcionamento do DNS), a vantagem do WINS sobre o metódo de broadcast é que você permite que as consultas ultrapassem os limites do domínio de broadcast local. Ao habilitar um cliente para fazer consultas em um servidor WINS, automaticamente você estará o adicionando a lista do serviço WINS.
Lmhosts
O Lmhosts é na verdade um arquivo local armazenado em %SystemRoot%\System32\Drivers\Etc (diretório bastante conhecido por administradores de rede). O arquivo consiste em um banco de dados estático que mapeia nomes NetBIOS específicos em endereços IPv4. Uma boa observação a ser feia em relação a esse tipo de consulta, é que ele só entrará em vigor no momento em que todos os outros metódos falharem (DNS, WINS, LLMNR, Broadcast). Nessa situação, o administrador deve adicionar manualmente as entradas. Quando é útil? Quando nenhum servidor WINS existir na rede, quando o cliente remoto não estiver registrado em um servidor DNS e quando um computador cliente estiver fora do intervalo de broadcast (acreditem, acontece!).
Observação para iniciantes: Sempre que encontrar a tag %SystemRoot%, você deverá associa-la ao diretório de instalação do sistema operacional Windows (onde na grande maioria das vezes é C:\windows\).
Mergulhando um pouco mais fundo dentro desse tema, vamos agora explorar os mecanicos exatos que fazem a escolha do método de resolução, para tal, iremos a partir de agora chamar o nosso cliente que fará as consultas de “node”, ou simplesmente “nó”.
As interfaces de redes podem ter quatro configurações associadas:
broadcast ou b-node
Como o nome já diz, não é difícil imaginar qual método será utilizado aqui. Exato! Aqui o método será o de broadcast, tendo duas desvantagens: uma consulta irá pertubar todos os outros nodes da rede e a consultura se limitará ao domínio de broadcast.
point-to-point ou p-none
Nesse tipo de node será realizada uma consultura direta (point-to-point) com um servidor WINS. Não haverão broadcasts nessa situação.
mixed ou m-node
No mecanismo misto, haverá primeiro uma consulta em broadcast, e depois, caso a consulta seja mal-sucedida, haverá uma consulta do tipo point-to-point.
hydrid ou h-node
Deve haver um certo de cuidado aqui, é fácil confundir mixed com hydrid! Nessa situação haverá uma consulta do tipo point-to-point, e caso o servidor WINS não esteja disponível ele irá buscar em seu banco de dados local lmhosts. Caso nenhuma das consultas não sejam bem sucedidas, haverá uma consulta do tipo b-node. Resumindo, a ordem é: p-node > lmhosts > b-node.
É possível verificar qual tipo de node sua interface está configurada, basta utilizar o comando: ipconfig /all
Posted in Microsoft | Tags: NetBIOS, Windows Server | No Comments
Microsoft: “Nova” estrutura de certificação para Windows Server
Essa semana adquiri o kit oficial de treinamento para certificação MCTS: Windows Server 2008 Network Infrastructure, para quem não ainda não sabe, a Microsoft reformulou todo seu sistema de certificações para as “novas” versões de seu sistema operacional para servidores, Windows Server 2008.
Em termos de comparação, a antiga (mas ainda válida) certificação MCSA (Microsoft Certified System Administrator) agora faz parte do grupo MCITP (Microsoft Certified IT Professional), que se subdivide em áreas especificas, por exemplo: Server Administrator, Enterprise Administrator, Database Administrator… e por aí vai (consulte o site oficial da Microsoft para maiores detalhes).
Em resumo, a MCSA atualmente é, em termos de conteúdo e complexidade, equivalente a MCITP: Server Administrator. Já a MCSE está para a MCITP: Enterprise Administrator.
Outro detalhe interessante são as certificações MCTS (como citei acima), onde para a área de redes e infraestrutura deverão ser levadas em conta:
70-642 MCTS – Windows Server 2008 Network Infrastructure Configuration
70-640 MCTS – Windows Server 2008 Active Directory Configuration
70-643 MCTS – Windows Server 2008 Infrastructure Applications Configuration
Onde:
MCITP Server Administrator = 70-642 MCTS + 70-640 MCTS + Exame 70-646 (Server Administator)
(É necessário aprovação nos 3 exames acima)
MCITP Enterprise Administrator = 70-642 MCTS + 70-640 MCTS + 70-643 MCTS + Exame 70-647 (Server Administator) + [Exame 70-620 ou Exame 70-624]
(É necessário aprovação em 5 exames dos citados acima)
Preparei um guia para certificação 70-642 que consiste basicamente em uma agenda de 52 dias de estudo diário (pelo menos 1 hora por dia), confesso que é um cronograma bem rígido, mas se seguido conforme o descrito, é garantido o sucesso do exame. Irei pensar numa forma de postar o guia, explicando como ele deverá ser utilizado. No mais, vou voltar a estudar porque minha prova já é dia 25/08!
Posted in Microsoft | Tags: Certificação, Microsoft, Windows Server 2008 | No Comments
Linux: Buscando pelos maiores arquivos e diretórios
Dica rápida para quem precisa encontrar os maiores arquivos ou diretórios dentro de um sistema unix-like, segue abaixo:
$ find / -size +1M 2> /dev/null
O comando acima utiliza o find para buscar dentro do diretório /, recursivamente, arquivos maiores que 1 mb (-size +1M), enviando as mensagens de erro (quando houver) para o “buraco negro”.
$ du / -B M 2> /dev/null | sort -n -r | more
O comando acima utiliza o du para buscar dentro do /, recursivamente, outros diretórios, enviando as mensagens de erro (quando houver) para o “buraco negro”. Note que o tamanho de cada diretório será exibido (em mb), possibilitando sua ordenação, que será do maior para o menor (sort -n -r).
Os comandos acima podem ser úteis durante a necessidade de realizar alguma limpeza no disco, como por exemplo: buscar por diretórios ou logs muito extensos que não são utilizados. Por falar nisso, para buscar por arquivos que não são acessos a n dias, basta adicionar o parâmetro -atime +N ao find, exemplo:
$ find / -size +1M -atime +7 2> /dev/null
O comando acima irá buscar por arquivos maiores que 1 mb que foram acessados a mais de 7 dias.
Posted in Linux | Tags: Comandos, Linux | No Comments
Apache: Módulo UserDir
Provavelmente você já deve ter se deparado com alguma URI do tipo: http://dominio.com/~usuario e deve ter se perguntado qual a origem desse “padrão”. Para tornar a página de cada usuário acessível a partir do endereço http://dominio.com/~usuario é necessário o acoplamento de mais um módulo no servidor Apache, o UserDir. Esse tutorial irá abordar básico de sua configuração.
Após a instalação e a devida configuração do Apache2 é necessário ativar o módulo (que por sua vez já é nativo do próprio Apache2), podendo ser feito da seguinte maneira em distribuições Debian/Ubuntu:
# ln -sf /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled # ln -sf /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled # /etc/init.d/apache2 restart
O que fizemos acima foi apenas criar um link simbólico para dois arquivos do diretório mods-available, que armazena os módulos que podem ser instalados no Apache, para o diretório mods-enabled, que possuem os módulos que estão ativos no servidor web. Após executar os comandos, o apache deve ser reiniciado para que as modificações entrem em vigor.
# /etc/init.d/apache2 restart
Depois disso é necessário criar o diretório public_html dentro dos diretórios dos usuários criados. Por exemplo: (leve em consideração a existência prévia do diretório home do usuário maria)
# mkdir /home/maria/public_html
Posted in Linux | Tags: Apache, Linux, UserDir | No Comments


