Quantcast
Channel: Computer Networking
Viewing all 34 articles
Browse latest View live

Descobrindo o Sysinternals suite

$
0
0
O sysinternals suiteé um conjunto de ferramentas desenvolvidas por Mark Russinovich e adotada oficialmente pela Microsoft em 2006. Deixando a história de lado, o fato é que as ferramentas são tão boas que quem se acostuma a usar não consegue viver sem elas. Na verdade eu acho que a Microsoft deveria incluir no Windows nativamente, para não me dar o trabalho de copiar para todas as máquinas.

Para começar você pode baixar o pacote AQUI, em seguida descompacte em uma pasta qualquer.Mas guarde o pacote por que você vai querer copiar para outras máquinas com certeza.


Você pode se sentir a vontade para clicar em qualquer aplicativo e ver como funciona. Todos eles vêm com um help :-). Mas antes de começar é importante preparar o ambiente.
Eu particularmente não gosto de ir até uma pasta específica, escolher uma delas e dar 2 clicks. Eu sempre chamo os programas através do "Executar...". 


Mas para isso é preciso que os executáveis estejam em alguma pasta do path do sistema. Sempre que me sento em frente a uma máquina para fazer qualquer diagnóstico, antes de tudo copio a kit de ferramentas para a pasta "System32", que é o principal path do Windows. Depois disso você pode executar qualquer uma das ferramentas naturalmente pela linha de comando ou via "Executar...". Para automatizar o processo você pode usar um script para copiar os arquivos para a "system32" com um clique. Crie um arquivo no bloco de notas com o seguinte conteúdo:

rem @echo off

copy "SysInternalsSuite"\* "%WINDIR%\System32\"

pause


Basta então salvar com qualquer nome ".cmd" e coloque junto com a pasta do Sysinternals. 2 cliques e ele executa o código copiando tudo para  o path.
Dados os preparativos, vamos aqui a uma apresentação das ferramentas mais úteis e seus principais recursos:

1) Autoruns: Esta ferramenta simplesmente mostra todos os programas que são carregados com o Windows, desde os serviços as tarefas agendadas, e muito mais. De uma forma muito intuitiva você pode habilitar ou não cada entrada de "autorun" no sistema ou mesmo deletar. O mais interessante é que com o tempo você percebe onde aparecem entradas relacionadas a cada programa ou mesmo vírus e adwares. Antes de tentar removê-los ou mesmo terminar o processo com o gerenciador de tarefas tente desabilitar no Autoruns e reiniciar a máquina. Com ele é muito fácil neutralizar programas indesejados ou mesmo malwares. Para quem sentiu algo familiar, este aplicativo nada mais é do que uma ferramente similar ao MSconfig, porém infinitamente superior.

Este software é tão temido pelos malwares que é muito comum quado a máquina etá infectada o vírus detectar que você executou o autoruns e terminar o processo imediatamente! Por isso não se assuste se você executá-lo em uma máquina infectada e a janela fechar de repente. Pule para o "Process Explorer", mate o processo do vírus e volte a abrir o autoruns. Tiro e queda!



Neste link o Mark mostra como remover malwares e usar algumas ferramentas.



2) Process Explorer:  Depois de usar este você nunca mais se sentirá bem com o gerenciador de tarefas nativo do Windows. O "procexp" mostra os processos em árvore e com os ícones. Ele ainda pode ser configurado para exibir colunas a gosto. É possível visualizar a linha de comando que iniciou o processo, usuário, threads, título da janela e muito mais. Vendo o esquema em árvore é possível finalizar toda a árvore.


Como pode ver na imagem acima, há uma opção de substituir o gerenciador padrão e usar o "procexp". Então ao presionar "Ctrl+Shift+Esc" ele será aberto. Simples assim.

O "procexp" tem ainda um irmão, o Process Monitor. Ele monitora toda a atividade dos processos incluindo arquivos e chaves de registro utilizadas. Porém o volume de dados é muito grande e requer uso dos filtros.


3) TCPview:  Qualquer administrador de rede sabe que o netstat é útil porém confuso. Então por que usar o netstat se existe o "tcpview"? Esta ferramenta mostra todas as conexões abertas no sistema em tempo real, incluindo o executável responsável, estado da conexão, portas, e o volume de dados transportados. Simplesmente fabuloso.





4) Sdelete: Quem vem do Linux já está acostumado a usar o shred para apagar arquivos com segurança, mas o Windows carece de uma ferramenta nativa. Apagar arquivos com segurança, significa que ele será sobrescrito várias vezes antes de ser realmente deletado do incide do sistema de arquivos, tornando impossível a recuperação com softwares específicos. O sdelete vem para suprir a necessidade, mas para melhor uso, já que é uma ferramente de linha de comandoé bom copiá-la para uma pasta do path como sugerido acima. Basta usar como um comando qualquer e você poderá deletar arquivos com segurança. Por exemplo :

C:\>sdelete -p 8 teste.txt

SDelete - Secure Delete v1.61
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals - www.sysinternals.com

SDelete is set for 8 passes.

C:\teste.txt...deleted.
1 files found


O parâmetro "-p 8" indica o número de vezes que o arquivo será sobrescrito.

5) Whois: Com este utilitário em mãos você nunca mais vai precisar entrar em sites de consulta de domínios e passar pelos captcha. Basta digitar "Whois dominio.com" e pronto. Lembre-se que que este serviço usa a porta 43, então deve estar liberada  a saída no firewall.

6) PsTools:  O Pstools é um pacote de utilitários de linha de comando muito útil para quem administra uma rede grande e precisa obter informações e executar comandos remotamente. Vale uma artigo apenas para este pacote:

http://technet.microsoft.com/en-us/sysinternals/bb896649

7) Desktops: Este simula 4 áreas de trabalho no explorer. Não funciona tão bem quanto no Linux mas não deixa de ser útil. Assim que executado ele deixa um ícone na área de notificação e pode ser configurado facilmente. O padrão é que alterne entre as áreas de trabalho usando "Alt+Nº", onde é um número de 1 a 4 de acorde com a área de trabalho.



8)Zoomit: Para quem faz apresentações de slides ou em data show com frequência é muito útil dar um zoom para que os espectadores veja melhor o conteúdo. Executando esta ferramenta, com um comando você foca uma área da tela facilmente e regula a ampliação com o mouse. Só usando mesmo para entender como é simples e útil.



9) Blue screen: Que tal ter a infame "Tela azul da morte" como proteção de tela? Baixe o arquivo AQUI e copie para a pasta system32. Então configure-o como protetor de tela.

Existem muitas outras ferramentas no pacote. Vale a pena olhar uma por uma e se acostumar a usá-las. Bom exemplos são o contig, Sync, PsPing, ShellRunas, Autologon, LogonSessions, RootKitRevealer, e por aí vai....


3 pontos definitivos para a segurança de qualquer PC

$
0
0
Ter o PC infectado é quase tão comum como pegar uma gripe anualmente, o que ocorre de fato é que a grande maioria dos usuários está usando o computador de uma forma vulnerável, e estranho seria se eles não fossem infectados desta maneira!

Entre muitas e muitas recomendações de segurança, o que proponho são 3 passos simples, e na verdade óbvios, que deixam você muito menos ameaçado e permite uma recuperação muito mais rápida do que simplesmente formatando o seu PC.


1º - Nunca, mas nunca use contas com privilégio de administrador

Quando se usa Linux os usuários tomam um choque por que a conta de usuário "padrão" simplesmente não tem permissão para alterar configurações do sistema, como instalar programas, alterar a hora, ou mesmo alterar arquivos do sistema e de outros usuários. Na verdade esta é uma tática muitoóbvia do ponto de vista da segurança, no entanto a maneira como o Windows vem configurado (com a sua conta de usuário com privilégios de administrador) deixa para trás o conceito e faz com que o usuário, e o vírus, se sintam  a vontade para executar qualquer código e fazer qualquer alteração no sistema, sem o mínimo de restrição.  
Ironicamente, no help do Windows a recomendação é justamente o contrário.... Que coisa não?!



 A dica é criar uma conta de usuário pessoal (João por exemplo) e criar outra conta com outro nome para ser o "Administrador" do sistema. Criadas as contas no painel de controle você deve ir em "Alterar tipo de conta" e selecionar uma delas como sendo "Usuário padrão".  A diferença é que uma delas é membro do grupo "Administradores" e a outra somente membro do grupo "Usuários".
Você pode ainda usar o console de gerenciamento de usuários, o que pode ser mais simples para você:

Iniciar > Executar > lusrmgr.msc

É importante que cada usuário da máquina tenha a sua conta para deixar as coisas separadas, e apenas uma conta com privilégios de administrador para fazer tarefas administrativas. Você não notará diferença absolutamente nenhuma, a não ser quando for adicionar ou remover programas e alterar configurações do sistema. Para todos caso, quando for necessário executar algum programa com privilégios (instaladores por exemplo) será necessário uso da conta apropriada. Basta clicar com o botão direito e em "Executar como administrador", ou no Windows XP "Executar como...". O trabalho pode ser ainda mais simples no WIndows 7 com o recurso da UAC que torna o mecanismo automático. No máximo você terá de fazer logoff e fazer logon com a conta de administrador para realizar o trabalho.


Pense que quando um vírus é executado no seu sistema, geralmente ele é executado por você, mesmo que acidentalmente. Então ele terá o mesmo nível de privilégio que a sua conta, que sendo restrita fará no máximo alterações em seu próprio perfil de usuário. Mesmo que você seja infectado é bem provável que excluindo a sua conta e criando uma nova resolva o problema.

2º - Anti vírus e software PIRATA

A dica do anti vírus é velha.Mas vale lembrar:
 - Use um bom anti vírus (AVG, Avast, Avira)
 - Eles se atualizam automaticamente, não se preocupe
 - Processe o anti vírus em qualquer arquivo que baixar da internet, e sempre em pendrives alheios

Esses 3 anti vírus citados são grátis para uso doméstico, e possuem versões corporativas pagas. Mas onde entra a questão do software pirata?
Infelizmente muitas pessoas usam versões "crackeadas" mesmo de anti vírus! Quer dizer, alguém mal intencionado conseguiu burlar a perícia do próprio anti vírus, e oferece uma versão independente. O mesmo acontece com inúmeros programas (AutoCAD, Adobe CS, Office, Nero) e Jogos, você pensa estar fazendo um bom negócio mas está abrindo a porta para o inimigo, já que o "crack" deste software pode conter código malicioso que você terá que "engolir" junto.

Então, evite software pirata ao máximo! Respeite o trabalho dos outros, e procure alternativas grátis e confiáveis. Principalmente em ambientes empresariais onde você está sujeito à fiscalização e será responsabilizado pelo comprometimento das informações.

3º - Atualizações automáticas do sistema

A triste realidade e que a grande maioria dos técnicos desativa as atualizações do sistema. Simplesmente por que a maioria das pessoas usam Windows não licenciado, e junto das atualizações do sistema vem a ferramenta de validação da cópia do Windows. Para evitar muito trabalho e que o freguês não se depare com a mensagem de Windows pirata, desativam as atualizações e cortam o "problema" pela raiz.
Saiba que todas as falhas de segurança são corrigidas com as atualizações,  o que as coloca em um nível de prioridade ainda maior que um anti vírus. Qualquer software malicioso explora uma falha no sistema, e essas falhas são corrigidas com as atualizações. Isso vale não só para o Windows mas para todos os softwares que você usa como: Firefox, Chrome, Adobe Reader, Office, Java, flash, etc... Trabalhar com o sistema desatualizado é como andar com um carro sem fazer revisões e esperar que tudo funcione perfeitamente bem para sempre.

De qualquer forma você pode simplesmente evitar o procedimento de validação, já que ele é opcional, removendo o programa da lista de atualizações automáticas. Antes de tudo configure o sistema para que confirme as atualizações antes mesmo de serem baixadas :

Configuração no Windows 7
No WIndows XP

 Logo em seguida o sistema procura pelas atualizações e mostra a lista de correções disponíveis. No Windows 7 é usada a de código KB971033, e no Windows XP KB905474. Na própria descrição delas você pode ver que se trata de Ferramenta de ativação do Windows ou algo do tipo, basta desmarcá-las, clicar com o botão direito e em OCULTAR. Pronto, deixe que o sistema instale todas as outras sem medo :-).

Assim o sistema fica muito mais seguro, sem falar que a Microsoft disponibiliza até mesmo o drivers mais recentes do seu hardware, e homologados por eles.
Além de deixar o seu sistema protegido de verdade ( e não vigiado, como no caso do anti vírus ) a Microsoft lança mensalmente a "Ferramenta de remoção de software mal intencionado", que finaliza a proteção do sistema, trabalhando como uma espécie de anti vírus.

Muitos dizem que o Linux é mais seguro que o Windows. Sem dúvida, mas repare que no ambiente do pinguim as coisas já funcionam desta maneira naturalmente.
 - Usuário administrador, só o root.
 - Software pirata praticamente não existe já que a maioria é software livre e proveniente de um repositório oficial.
 - O sistema é atualizado regularmente sem nenhuma "pedra no caminho".


Tomando estes 3 cuidados que são extremamente óbvios e simples, você tem um nível real de segurança e pode trabalhar de consciência limpa. Ma não se esqueça que segurança não para por aí...



Entendendo as VLAN's

$
0
0
A história

Antigamente as redes Ethernet eram a base de cabos coaxiais, um emendado no outro de máquina a máquina até o final do segmento onde se colocavam terminadores de sinal. O conjunto era chamado de domínio de colisão já que os frames tinham de disputar o tempo de transmissão (em um único cabo) com todos os outros, o que causava muitas colisões e naturalmente a rede trabalhava em half-duplex.



O truque usado pelas placas era o mecanismo do CSMA/CD para evitar as colisões. Com a chegada dos cabos de par trançado e os HUB's o problema não foi resolvido já que o HUB se limita a repetir todos os sinais em toas a portas, então na lógica a rede trabalhava do mesmo jeito. Usando cabos coaxiais ou hub's com cabos de par trançado toda a rede ainda era vista como um único domínio de colisões (onde os pacotes disputam o tempo de uso do meio de propagação - camada 1) e um único domínio de broadcast (onde os hosts podem trocar mensagens de broadcast endereçadas a FF:FF:FF:FF:FF:FF - camada 2).
Chegaram então as bridges, que eram dispositivos que tinham um conector coaxial e mais alguns conectores RJ45 trabalhando como um HUB. Mas o segredo das bridgesé que elas trabalhavam na camada 2, isolando os domínios de colisão.

Bridge Ethernet. Imagem disponível em hardware.com.br


 As bridges trabalhavam de forma um pouco mais inteligente. Ao invés de replicar as mensagens de um segmento de rede ao outro (coaxial e par trançado) elas montavam uma tabela relacionando os endereços MAC de cada segmento e só transmitindo o que era necessário para cada lado economizando colisões e congestionamento. Daí o conceito de "Ponte" ethernet.

Um bom artigo para entender a evolução pode ser visto AQUI


Em seguida temos os switchs. O swich trabalha de forma ainda melhor. Monta uma tabela relacionando os endereços MAC de cada porta e só encaminha os frames de acordo com o endereço do destinatário. Com a chegada dos switchs o termo domínio de colisão caiu em desuso, já que cada porta do aparelho representa um único domínio de colisão e tendo apenas um host "pendurado"à ela não existem colisões. O mesmo se aplica ao algorítimo CSMA/CD e as comunicações em Half-duplex, que só continuaram existindo em redes wireless, segmentos cascateados através de hubs ou em outros casos.

Hoje o padrão de uma rede cabeada é ter um switch centralizando as comunicações e toda a rede trabalha em Full-duplex. Cada host tem o sue próprio domínio de colisão, e toda a rede é um único domínio de broadcast.

Virtual LAN's

Isto nos leva a outra questão. Com redes muito maiores e switchs gerenciáveis, podemos configurá-los para separar os domínios de broadcast. Entra o conceito de "Virtual LAN's".

A ideia é separar segmentos de rede em 2 ou mais domínios de broadcast, mesmo que todas as máquinas estejam conectadas no mesmo switch, estarão "presas" em uma rede virtual onde só podem se comunicar diretamente com máquinas do mesmo domínio de broadcast.
Basicamente o administrador da rede tem de configurar o switch para que determinadas portas sejam entendidas como membros de VLAN's diferentes, e o tráfego de uma não se aplica a outra.

Imagine um Switch de 8 portas representando apenas uma VLAN (sem nenhuma configuração):




Mensagens destinadas à endereços de broadcast atingem todas as máquinas, já que só existe um domínio de broadcast. Em seguida 2 portas são configuradas como membros da VLAN 2:





Agora máquinas conectadas às portas 1 e 6 não têm comunicação com as outras. Note que esta configuração é feita apenas no switch e é totalmente transparente para os hosts conectados. Mesmo se você espetar outros switchs em portas relacionadas a VLAN's, tudo funciona normalmente. Imagine que agora ele trabalha como 2 switchs diferentes. Você pode continuar o processo e selecionar portas do switch para que trabalhem em VLAN's diferentes e ter vários domínios de broadcast na mesma rede física. Naturalmente o administrador vai implementar faixas de endereços IP diferentes para cada VLAN, deixando as coisas mais claras. Portas pertencentes a uma VLAN são chamadas portas de acesso (ou untagged members), onde os dispositivos finais são conectados e trabalham sem saber de nada.



Alguém poderia perguntar qual a diferença desta configuração (que atua na camada 2) para uma rede onde simplesmente os hosts são configurados em faixas de endereço IP distintas (fazendo VLAN's em camada 3) e não se comunicariam da mesma forma. Desta maneira ainda seria possível um engraçadinho alterar o seu endereço IP e obter acesso a outras máquinas de sub-redes diferentes, sem falar que quanto maior o domínio de broadcast, maior o número de máquinas que um atacante pode explorar com ARP spoofing por exemplo. O separação da rede por VLAN's ainda melhora o tráfego já que diminui os broadcast storms, que apesar de necessários podem gerar problemas diversos que seriam propagados por toda a rede.


Em seguida temos as portas de transporte, chamadas "Trunk port", que podem carregar tráfego de VLANs diferentes. A ideia é que tendo vários switchs gerenciáveis na rede, todos eles vão ter portas membros de VLAN's comuns. O trabalho das portas trunk é cascatear o tráfego, mas desta vez marcando os frames provenientes de cada VLAN com uma tag indicando o número da VLAN (por isso a maioria usa o termo "tagged port"). A marcação é feita respeitando o protocolo 802.1q, que é compatível com qualquer fabricante.
Se um frame de uma determinada VLAN, de acordo com o MAC, não pertence a nenhuma das portas daquele switch ele é encaminhado para a porta trunk encapsulado com o número correspondente da VLAN. Ao chegar no outro switch a porta também deve estar configurada como trunk, então ele fará a verificação da VLAN correspondente e escolher a porta onde está o dono da mensagem segundo a VLAN indicada, ou mesmo encaminhar para uma outra porta trunk. Assim podemos ter um cenário com vários switchs trabalhando com várias VLAN's como se houvesse um conjunto de switchs para cada VLAN.


Roteamento

Agora que temos várias sub-redes isoladas pela lógica do switch, como fazer para que essas sub-redes de comuniquem? Todos sabem que redes de faixas IP diferentes só se comunicam por roteamento. Então mesmo que eu tenha um único domínio de broadcast com várias faixas de endereçamento, é preciso um roteador para encaminhar os pacotes de uma rede a outra. A solução mais óbvia seria ter um roteador com tantas placas de rede quanto VLAN's existentes na rede, cada uma com um endereço da faixa correspondente. A pesar de funcionar seria uma grande desperdício de cabos, placas de rede e trabalho adicional.

A solução mais comum é usar um roteador com uma única porta configurada em modo trunk(VLAN tagged), chamada de "Routing on a stick". A partir disso o roteador receberá os pacotes e poderá identificar a VLAN de origem já que os frames vão vir marcados com o ID da VLAN. Nele serão criadas interfaces virtuais sobre a interface física e cada uma receberá um IP na faixa usada pela VLAN. Os frames serão desmarcados e despejados na interface correspondente a cada uma. Isso pode ser feito em roteadores mais robustos ou mesmo no Linux. O esquema fica da seguinte maneira:



Para simplificar mais ainda o esquema, entra em cena os switchs layer 3. Além de todas as funcionalidades de gerenciamento de um switch layer 2, eles são capazes de criar interfaces virtuais dentro de cada VLAN com endereços IP, usurpando a função do roteador.

Desta maneira temos várias sub-redes onde o roteador pode dar tratamento diferenciado e regras específicas para cada faixa de endereçamento. Os broadcast storms são diminuídos e poderíamos ter uma rede totalmente isolada por exemplo. Switchs gerenciáveis ainda são caros, mas com pelo menos um atuando como backbone da rede é possível tornar a rede mais segura.




Ambiente de testes com Vbox. Easy way

$
0
0
Se você é administrador de Redes, ou mesmo precisa de uma máquina para fazer um teste qualquer, certamente o Virtual Box é o melhor opção. Em um passe de mágica você tem uma ou mais máquinas à mão e pode começar o trabalho. Se você está estudando redes e servidores sempre terá uma máquina como cliente e outra como servidor, agora duas máquina virtuais. Um exemplo de rede bem simples, e extremamente comum é a rede interna do local e uma máquina com 2 placas de rede atuando como servidor de alguma coisa e compartilhando a conexão com a internet. Este cenário é facilmente simulado no Virtual Box. Basicamente o que precisamos fazer é criar 2 máquinas e uma delas com 2 placas de rede, mais alguns ajustes e temos o cenário pronto.

Se você ainda não tem o "Vbox" instalado na  sua máquina você pode baixar aqui. É importante lembrar que cada máquina virtual em funcionamento irá consumir a quantidade de memória que lhe foi dada do seu sistema, então se você tem uma máquina com 2GB de RAM por exemplo, considerando que o sistema operacional hospedeiro consuma 1GB, você pode criar 2 máquinas com 256MB de memória ou mesmo uma delas com 512MB. Você pode fazer os testes e pode depois aumentar ou diminuir a memória de cada máquina virtual conforme necessário, deixe sempre um "folga" para o sistema hospedeiro (máquina real).

Vamos supor que eu queria treinar a configuração de um servidor Proxy com Debian que compartilhe internet para uma máquina com Windows. Primeiro crie 2 máquinas virtuais:

Feitos os ajustes nas máquinas como desejado, o truque para simular uma pequena rede com saída para internet é a configuração das placas de rede das máquinas virtuais. A ideia é rede da seguinte maneira:



Uma rede virtual entre as máquinas virtuais, como em uma rede doméstica, e uma das máquinas com 2 placas de rede, sendo uma conectada à rede externa com acesso a internet. Por padrão o Vbox deixa as placas de rede configuradas no que eles chamam de NAT. A placa de rede virtual usa serviços do próprio Vbox, recebe IP via DHCP, e o Vbox utiliza de NAT para intermediar as conexões da máquina virtual com o "lado de fora". É uma técnica muito boa e deixa tudo transparente, no entanto para quem quer um ambiente o mais próximo do real possível pode deixar as coisas confusas.

Para configurar basta clicar com o botão direito na máquina virtual ir em configurações e no menu de Rede. Na máquina que atuará como cliente deixe apenas uma placa de rede e será configurada como "Rede interna" e na máquina que atuará como servidor, a primeira placa de rede estará no mesmo modo (Rede interna). Com isso já temos uma pequena rede isolada que funciona apenas entre as maquinas virtuais. Agora basta adicionar uma segunda placa de rede no servidor e configurá-la em modo Bridge com a sua placa de rede real.

Segunda placa de rede em "modo bridge"


Neste modo de operação a interface virtual é tão cliente da sua rede (real) como o seu PC hospedeiro. Ela receberá IP da sua rede e será como qualquer outra máquina nela. A sua interface real (eth0 no exemplo) está ligada em camada 2 com a interface da máquina virtual.

Você pode ainda adicionar outras máquinas dentro da sua rede virtual apenas configurando a interface em modo "Rede interna".

Agora basta instalar os sistemas operacionais e lembrar que as interfaces na rede interna estão isoladas como se houvesse um switch só entre elas. A máquina servidor tem uma outra interface como se conectada diretamente na sua rede simulando a conexão com o que seria o seu provedor de internet.
Mãos à obra. Você tem 2 computadores prontos para receberem as configurações de serviços de rede e uma servidor para compartilhar internet ou oferecer outros serviços à sua rede interna (virtual).

Removendo arquivos com segurança

$
0
0
Um arquivo nada mais é do que uma sequência de dados distribuída no disco. Para resolver a bagunça os arquivos são relacionados em uma tabela, este é o trabalho fundamental do sistema de arquivos. Quando você manda um arquivo para a lixeira ele é simplesmente movido da pasta de origem para uma pasta chamada lixeira. Quando excluímos um arquivo a sua referência na tabela é eliminada, deixando os blocos que ele ocupa "órfãos", prontos para serem preenchidos com qualquer outro conteúdo assim que possível. Imagine um livro que é removido do índice da biblioteca, mas continua na estante, mesmo que ninguém a princípio vá localizá-lo.
Por isso é relativamente simples recuperar um arquivo. Um software especial varre todo o disco procurando por sequências que façam sentido, revelando qualquer informação solta por ali. Quanto mais tempo decorrido após a exclusão, mais provável é que o sistema tenha reutilizado o espaço e "passado por cima" do conteúdo anterior. Uma boa ferramenta livre para o trabalho é o TestDisk.

Se você tem algum arquivo que não deseja que seja recuperado tão facilmente, você deve apagar este arquivo com segurança. A técnica é simples. Antes de apagar o arquivo (remover da tabela de alocação do sistema de arquivos) o documento é sobrescrito várias vezes com dados aleatórios, e em seguida removido.

 No Windows não há ferramenta nativa para isso. Você pode baixar o pacote do SysInternals Suite e usar o utilitário Sdelete. Se você não conhece o SysInternals leia este artigo. Copie o executável do Sdelete para a pasta "C:\Windows\system32" e você já pode usá-lo como um comando qualquer. Para apagar um arquivo use:

sdelete -p 5 arquivo.txt

Consulte opções adicionais com o parâmetro "/?".

sdelete /?



 O AVG Anti Vírus 2014 veio com a opção de "triturar" arquivos integrada no menu de contexto. Se você usa o AVG, mesmo o Free, você pode simplesmente clicar com o botão direito no arquivo e triturá-lo.



Resolvendo o problema no Linux ou um LiveCD

O Linux tem uma ferramenta nativa para o serviço, o shred. O uso é bem simples:

shred -n 5 arquivo.txt

Você pode comprovar a ação exibindo o conteúdo do arquivo logo em seguida. Verá que o conteúdo foi sobrescrito por dados ininteligíveis. A opção "-n 5" especifica a quantidade de vezes que o arquivo será sobrescrito.
Existe ainda a opção "-u" que remove o arquivo em seguida. O padrão é apenas "picotar" o arquivo sem apagá-lo, já que você poderia estar usando o mesmo comando em arquivos especiais como partições, que não podem ser apagados. Então para picotar e apagar o arquivo seria:

shred -u -n 5 arquivo.txt

Outro método interessante é dar boot no sistema com um live CD e apagar partições ou mesmo discos inteiros usando o shred. Imagine que você tem um HD com infirmações sigilosas da empresa que não será mais utilizado.

shred -n 5 /dev/sda

Lembre que ele percorrerá todo o disco, então se você definir um número muito alto de escritas pode levar muito tempo. Usando um live CD também é válido usar do dd para realizar a tarefa, e destruir o conteúdo de um disco. Por exemplo:

dd if=/dev/zero of=/dev/sda            # Preenche o disco com Zeros
dd if=/dev/random of=/dev/sda      # Preenche o disco com dados aleatórios

Outra opção interessante é usar os atributos para definir aquivos que devem ser apagados com segurança. Os atributos oferecem uma série de funcionalidade no sistema de arquivos, um dele é o atributo "s" (minúsculo) que informa que os blocos devem ser preenchidos com zeros antes que o arquivo seja apagado. Para definir o atributo "s" em um arquivo use o comando chattr. Alguns atributos só podem ser definidos pelo root, então considere dar uma lida na documentação antes de usar os recursos:

# chattr +s arquivo.txt        # Adiciona o atributo "s" ao arquivo
$ lsattr arquivo.txt              # exibe os atributos do arquivo


Por fim você deve lembrar que os sistemas de arquivos modernos podem possuir cópias dos dados temporariamente devido ao uso do journaling. Ou mesmo em locais onde há snapshots das alterações das pastas, backups automáticos, shadow copies, etc. Você pode consultar a documentação e este artigo AQUI para se orientar. O mais indicado mesmo é executar a limpeza em todo o HD (ou pendrive) no caso de prevenção de vazamento de informações. Mas se você está realmente preocupado com o conteúdo deste arquivo nunca pare de alimentar a sua paranoia.

Vírus no pendrive. Matando a cobra e mostrando o pau.

$
0
0
Em 2009 eu trabalhava em uma escola com 12 computadores, na época vírus provenientes de pendrive eram um problema sério. Tudo graças ao recurso de autorun do Windows XP, que de maneira muito ingênua executava qualquer programa indicado no arquivo autorun.inf de unidades removíveis. Em pouco tempo infecções por pendrives se tornaram um caos. O pendrive se tornou o simbolo de promiscuidade no mundo da informática.

Logo os mais preocupados com a questão descobriram a maneira correta de cortar o mal pela raiz desativando a funcionalidade de autorun no Windows XP via GPO. Qualquer unidade removível montada no sistema, antes que alguém pudesse impedir, o Windows fazia-lhe o favor de verificar a existência do famigerado arquivo autorun.inf, onde era indicado o programa (vírus) a ser executado imediatamente, o que não dava qualquer chance para o usuário.

Um arquivo autorun.inf geralmente tem um conteúdo como este:

[autorun]
open=virus.exe
icon=virus.exe,0
label=Run Virus

Por uma causa nobre o Windows criou todos estes problemas. Mas a funcionalidade foi aprimorada no Windows 7, e funciona de modo muito mais seguro. Neste artigo a Microsoft explica todos os recursos disponíveis usando os arquivos autorun.inf em unidades removíveis, caso você tenha interesse em entender ou mesmo em utilizar em algum software seu.

No Windows 7 você pode configurar facilmente várias opções de autorun no painel de controle acessando o item  "Reprodução automática", mas o bom mesmo é desmarcar a primeira opção "Usar Reprodução automática em todas as mídias e dispositivos".


Ele tem muito mais opções relacionadas à música e vídeos, e para executar um programa indicado pelo arquivo o usuário deve selecionar em um menu que aparece assim que o dispositivo é plugado. O padrão é "Abrir pasta para exibir arquivos":




Prevenindo no Windows XP

Para desativar a funcionalidade do autorun no Windows XP, vá em "Executar, digite gpedit.msc, e Enter". No console da GPO você pode procurar por "Modelos administrativos > Sistema > Desativar autoexecutar", marque a opção habilitado e em "Todas as unidades". Com isto o usuário tem uma chance de caçar o vírus antes que o próprio Windows abra as portas para ele. Veja a descrição completa da função no site oficial AQUI.

Assim o usuário ganha tempo, mas não resolve o problema. Se o pendrive estiver com o arquivo autorun.inf indicando o executável do vírus, ao clicar duas vezes no seu ícone em "Meu Computador" o sistema age da mesma maneira, executando o vírus. É preciso então fazer uma varredura cuidadosa na unidade antes de abri-la. Alguns antivírus o fazem bem, ou mesmo ferramentas de segurança próprias para pendrive. No entanto é bom entender como o problema funciona e fazer alguns procedimentos para evitar infecções futuras.

Por isso comecei e desenvolver o Pendrive Limpeitor Tabajara com a ideia de que se você tiver um bom script em mãos que faça o trabalho rápido e eficiente, pode poupar o processamento do seu antivírus e evitar problemas futuros.

Problemas comuns 


Com alguma experiência pude observar os seguintes sintomas das infecções e o que o script deve fazer par solucionar.

 - Criação do arquivo "autorun.inf" na unidade onde é indicado o executável do vírus. O script deve remover o arquivo e criar uma pastaautorun.inf com atributos S, H e R, para evitar que um novo arquivo seja criado no lugar futuramente.

 - Procurar arquivos executáveis no raiz da unidade e oferecer para excluir.

 - Varrer a unidade em busca de pastas ocultas onde pode estar o programa malicioso. É comum eles usarem do truque da lixeira para dificultar as coisas. Uma pasta oculta é criada, e dentro dela outra pasta com um arquivo "Desktop.ini" com um conteúdo que faz o sistema pensar que aquela é uma pasta de lixeira. O script tenta identificar estas pastas e excluir.


 - Resolver o problema dos atalhos e revelar as pastas ocultas

 O problema do atalhos

A moda hoje é o vírus ocultar todas as suas pastas e criar atalhos para ele, sem que você perceba  ao clicar no atalho o programa é executado e logo em seguida ele abre a pasta desejada. É importante fazer uma varredura por atalhos e "desocultar" (retirar os atributos H e S) todas as pastas no raiz da unidade.
Se você tem este problema dos atalhos com algum pendrive, pode revolver com 2 comandos:

 attrib -r -h -s /d /S X:\
del /f X:\*.lnk

Onde X: é a letra da unidade do seu pendrive ou disco. Tome muito cuidado para não fazer isso em unidades do sistema, então tenha certeza da letra da unidade. O problema de usar desse método é que pode demorar muito já que ele vai ser processado em todos os arquivos da unidade. Além de muito dispendioso, apenas revela as pastas e arquivos ocultos, para que sejam removidos manualmente.

 Você pode usar os seguintes comandos para revelar pastas e processar atalhos apenas no raiz da unidade poupando tempo. Lembre-se de substituir H: pela letra da sua unidade:

for /F "delims==" %X IN ('dir /b /a H:\') DO ( attrib -H -S -R "H:\%X" )

O comando acima revela todas as pastas e arquivos ocultos apenas no raiz, em seguida você pode analisar a unidade e apagar coisas suspeitas manualmente.

Outra opção é o comando abaixo. Ele relaciona todas as pastas e arquivos que tenham um atalho de mesmo nome, remove os atributos e apaga o atalho:

for /F "delims=." %X IN ('dir /b /a H:\*.lnk') DO ( if exist H:\%X ( attrib -H -S -R "H:\%X"& del /f /a /p H:\%X.lnk ))

Este recupera suas pastas de acordo com os nomes dos atalhos, mas outras pastas ocultas permanecem ocultas.

Um amigo meu desenvolveu um software similar que revela as pastas ocultas em apenas um clique!
Por ser um programa gráfico é muito mais amigável para leigos, ele ainda tem um vídeo explicando como fazer o procedimento. É o Folder Recovery. Você pode conferir nos links abaixo:

Video: http://www.youtube.com/watch?v=zXnOcfn1Zhs
Versão simplificada.(Vista/7) http://www.mediafire.com/?axu4524wncogs77 
Versão de tirar o vírus.(XP/Vista/7) http://www.mediafire.com/?8o6j9l68s2ed598

Entendendo os atributos

Atributos são recursos do sistema de arquivos (FAT ou NTFS), os arquivos podem ser facilmente marcados com atributos para implementar funcionalidades diversas no sistema operacional. Os atributos no Windows são:

H - Hide, arquivo ou pasta oculta
R - Read only. Somente Leitura
S - System, arquivo ou pasta do sistema
A - Atributo de arquivamento. Serve para operações de backup. (irrelevante neste caso)
I - Índice de pesquisa. Arquivos com este atributo não são indexados. (irrelevante neste caso)

Arquivos ou pastas com atributo de sistema também ficam ocultos, e para vê-los você deve desmarcar a opção  "Ocultar arquivos protegidos do sistema operacional"no menu de "Opções de pasta" no Painel de controle:


Você pode manipular os atributos de arquivos e pastas clicando com o botão direito e em propriedades. Em relação aos atributos I, e A clicando no botão "Avançado":


Outra alternativa é usar a linha de comando com o attrib. A sintaxe é bem simples:

attrib arquivo.txt                      # Exibe os atributos do arquivo
attrib +S arquivo.txt                 # Adiciona o atributo S no arquivo
attrib -H arquivo.txt                 # Remove o atributo H do arquivo
attrib +H +S +R arquivo.txt    # Adiciona os 3 atributos no arquivo

Toda pasta ou arquivo que um malware deseja esconder, invariavelmente serão aplicados os atributos H, R e S. O atributo S não pode ser manipulado diretamente pelo Explorer nas propriedades do arquivo, então você deve usar o comando attrib para adicionar ou remover o atributo:

attrib -S arquivo.txt


Métodos preventivos

Tendo o pendrive limpo você pode usar de alguns artifícios para prevenir infecções posteriores. Uma delas é criar uma pasta de nome AUTORUN.INF e aplicar os atributos nela para que não seja substituída por um vírus.

md autorun.inf & attrib +H +S +R autorun,inf

Se a unidade é formatada em NTFS, você pode remover as permissões da pasta para dificultar ainda mais a sua alteração.

Outro método mais radical é formatar a unidade em NTFS, criar uma pasta no raiz onde serão armazenados os seus arquivos legítimos e remover todas as permissões de alteração no raiz. Para isso o mecanismo de herança deve ser desabilitado na pasta criada, onde você poderá delegar permissões a vontade.

O "Pendrive Limpeitor Tabajara"

Com a ideia de fazer todo o processo automaticamente comecei a desenvolver um script que chamei de "Pendrive Limpeitor Tabajara", para agilizar na limpeza de pendrives de alunos e outras pessoas que eram espetados nas máquinas todos os dias. Ele tem evoluído bastante, tenta identificar atalhos com nomes de pastas na unidade, recuperar as pastas de mesmo nome dos atalhos que estiverem ocultas, remover o arquivo autorun.inf, detectar executáveis ocultos na unidade e por fim cria a pasta AUTORUN.INF que funciona como uma espécie de vacina.
Basta executar e digitar a letra da unidade selecionada, em seguida a varredura é feita e cada arquivo ou pasta detectado só é excluído com a confirmação do usuário.








No final, o máximo que pode sobrar são pastas que podem conter vírus, mas todas elas reveladas, e o usuário poderá excluir facilmente sabendo que não é uma pasta dele.
Tem sido muito eficiente, mas estou aberto a sugestões para melhorar, ou até mesmo migrar para uma linguagem compilada.

Veja o vídeo de demonstração aqui: http://goo.gl/BXysfg

Aparando as arestas com o Autoruns e Process Explorer

Se o usuário teve o pendrive infectado ou mesmo plugou o pendrive infectado na sua máquina é importante saber se o sistema não foi comprometido.
Para isso sempre uso estas duas ferramenta do Sysinternals Suite. Leia um artigo mais detalhado aqui.
É importante executar primeiro o "procexp" para ver se não há nenhum processo suspeito em execução, depois o "autoruns" lhe mostrará se não foi criada nenhuma entrada para que o vírus seja novamente executado na inicialização dos sistema. Ultimamente o vírus mais comum aparece como um JScript (extensão .js) que é executado pelo interpretador do Windows, o "wscript.exe". Veja o processo no Process Explorer:






Quanto a entrada de autorun gerada, tome cuidado, por ela pode ser criada apenas no perfil do usuário que foi infectado, principalmente se você usa várias contas de usuário. Este é mais um caso onde usar uma conta sem privilégio de administrador pode prevenir que o sistema todo seja comprometido, já que removendo o perfil do usuário infectado resolveria o problema posteriormente. Veja as dicas de segurança AQUI.


Conclusão

Assim que plugar pendrives ou unidades removíveis no seu PC, use imediatamente uma ferramenta como esta. É muito mais seguro que deixar o Anti vírus cuidar do serviço. Se você quer uma cópia do Tabajara, por favor mande um email para joaolucasmacedo AT gmail.com :-)


Ajustes no terminal do Debian.

$
0
0
Não me perguntem por que, mas no Debian algumas funcionalidades são desabilitadas por padrão na linha de comando. Uma espiada nos scripts de configuração do bash e verá que pode deixar o ambiente um pouco mais agradável.

O bash tem alguns scripts que são executados imediatamente no login do usuário, que são:


/etc/profile
/etc/bash.bashrc

E o perfil do usário que é armazenado na sua pasta home:
~/profile
~/.bashrc

Os 2 primeiros são os arquivos principais, valem para todos os usuários. O arquivo /etc/profile estabelece algumas configurações e em seguida "invoca" o /etc/bash.bashrc. Repare, por exemplo que nas primeiras linhas do /etc/profile é estabelecido o path do sistema, se o UID do usuário for 0 (root) ele tem umas pastas a mais.

if [ "`id -u`" -eq 0 ]; then
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
    PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

export PATH

 Em seguida ele invoca o arquivo "/etc/bash.bashrc", e todos os arquivo terminados com sh dentro da pasta "/etc/profile.d/", onde você pode criar arquivos de configuração a vontade.

No arquivo "/etc/bash.bashrc" você deve habilitar o bash completion, descomentando as linhas referentes à ele. Estranhamente o Debian é instalado com ele desabilitado. O bash completion é talvez o melhor recurso do shell. Ele faz a mágica da tecla TAB. Por exemplo, não é necessário digitar
"apt-get install isc-dhcp-server", pressionando o TAB ele completa os comandos e mostra os pacotes possiveis. Então é algo como "apt-g<TAB> i<TAB> isc<TAB>s<TAB>".

 Bom, acho que todos conhecem e abusam da funcionalidade, mas esta é uma daquelas coisas que é muito mais complicado explicar do que fazer, então mãos à obra.

Procure pelas seguintes linhas no arquivo e remova as "#":

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
         . /etc/bash_completion
fi

Com isso o bash completion estará habilitado para todos os usuários, para que a alteração tenha efeito é necessário fazer logout e login novamente.

Repare que o bash completion é tão "inteligente" que ele ele analisa o contexto do sistema para mostrar as possibilidades de complementação dos comandos. Por exemplo, se você não tem o pacote htop instalado e digitar "apt-get remove h<TAB><TAB>" ele não colocará o htop na lista pelo simples fato de ser um pacote que comece com H. Outro exemplo são os módulos. Ao digitar "modprobe <TAB><TAB>" ele mostrará todos os módulos disponíveis, mas se for para remover, "modprobe -r <TAB><TAB>" ele mostra apenas os módulos carregados.

Após executar o perfil global, bash executa o arquivo na sua pasta home, o "~/.profile", que executa o "~/.bashrc" em seguida. Outra coisa estranha é que o arquivo "~/.bashrc" do root é muito mais simples que o dos outros usuários. Como root abra os arquivos "~/.bashrc" e o arquivo "/etc/skell/.bashrc" e verá que o segundo ( que é a matriz para os usuários quando criados ) é bem diferente.
Eu gosto de renomear o arquivo original do root e copiar o segundo:

# mv ~/.bashrc ~/.bashrc.OLD
# cp /etc/skell/.bashrc ~/.bashrc

Dando uma olhada no "/etc/skell/.bashrc" você encontra algumas coisas interessantes, como alguns aliasesúteis, prompt colorido e forçar alguns outros comandos a usarem cores também, o que é muito útil. É o caso do grep por exemplo, os termos ficam em destaque na saída do comando.
Voltando ao aquivo descomente as seguintes linhas:

...
#force_color_prompt=yes
...
if [ -x /usr/bin/dircolors ]; then
       test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
       alias ls='ls --color=auto'
       #alias dir='dir --color=auto'
       #alias vdir='vdir --color=auto'

        #alias grep='grep --color=auto'
       #alias fgrep='fgrep --color=auto'
       #alias egrep='egrep --color=auto'
fi

# some more aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

Você pode adicionar mais alguma coisa que goste. Eu particularmente sempre ponho:

alias cls=clear
alias df='df -h'
alias du='du -h'
alias free='free -m'

Desta forma, todo usuário criado a partir de então vai copiar o arquivo pronto na pasta "/etc/skell/" para o seu perfil. Para usuários já existentes, você pode abrir o arquivo "~/.bashrc" de cada um e editar, ou mesmo copiar a matriz para todos.

Repare que agora o shell fica mais agradável à cores, e você ficará até mesmo mal acostumado com o bash completion.

Dica rápida - Renomear interfaces de rede

$
0
0
Se por um motivo qualquer você não gostou dos nomes que o sistema atribuiu às interfaces de rede no Linux você pode rapidamente alterar os nomes editando um arquivo do udev.

Por exemplo, você trocou uma placa de rede na máquina e o nome veio como eth2, ou eth3, e você quer que fique eth0.

Antes de tudo identifique o endereço MAC das placas de rede com o ifconfig:

#  ifconfig ethX | grep HW

 Lembre-se de substituir o X pelo número da sua interface.
Edite o arquivo "/etc/udev/rules.d/70-persistent-net.rules".

#  nano /etc/udev/rules.d/70-persistent-net.rules

Lá estão os nomes da interfaces uma em cada linha, com o endereço MAC de cada placa no "ATTR{address}=="ab:cd:ef:gh:ij:kl"". Procure pelo parâmetro "NAME="ethX", você deve comentar linhas de interfaces antigas caso encontre alguma.

Reinicie o sistema:

#  init 6

E pronto!


Script para configurar Proxy.

$
0
0
É muito comum em uma rede grande, onde cada usuário tem a sua conta, ter que configurar o proxy de um por um. Em uma rede grande você simplesmente tem que fazer isso de máquina em máquina e para cada conta de usuário. É um trabalho ingrato, mas você pode simplesmente orientar o usuário por telefone, passo a passo, de como fazer a configuração caso precise. Mas por que não automatizar?

Faça um pequeno script com a sua configuração e poupe alguns instantes de trabalho. Crie um arquivo no bloco de notas com o seguinte conteúdo:

@echo off
rem Configurar proxy

reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d 192.168.88.150:3128 /f
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /d 1 /f
echo.
echo Servidor Proxy Padrão definido


E salve o arquivo como o nome "SetProxy.cmd". Copie o arquivo para a pasta System32 para que possa ser executado como um comando qualquer. Lembre-se de substituir o endereço pelo endereço do seu servidor com a porta.

Você pode criar um atalho para o script em um lugar fácil dos usuários encontrarem, ou mesmo pedir para executar procurando na pesquisa do Windows.

Deixando o script mais robusto

Se você odeia fazer alterações em configurações com o mouse, e precisa alterar estas configurações frequentemente, você pode complicar o script para que ele defina o endereço do servidor com um argumento, ou mesmo que habilite ou não o uso do servidor. Veja o código abaixo:

@echo off
rem Configurar proxy

set Arg1=%1
set Arg2=%2
if defined Arg1 goto %Arg1%

rem ---- Define a configuração padrão
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d 192.168.88.150:3128 /f
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /d 1 /f
echo.
echo Servidor Proxy Padrão definido
goto fim

rem  ----- Define segundo o IP informado no argumento
:/IP
:IP
if not defined Arg2 goto ERRO
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d %Arg2% /f
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /d 1 /f
echo.
goto fim

rem ----- Desativa o uso do proxy
:/disable
:disable
:/off
:off
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /d 0 /f
echo.
echo Uso de servidor Proxy desabilitado
goto fim

rem ----- Ativa o uso do proxy
:/enable
:enable
:/on
:on
reg add "hkey_current_user\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /d 1 /f
echo.
echo Uso de servidor Proxy habilitado
goto fim

:--help
:--?
:help
:/h
:/help
:?
:-?
echo.
echo  Uso do SetProxy
echo          Setproxy - Definie o servidor padrão
echo         "SetProxy IP <IP do servidor>:<porta> " - Define o IP e porta do proxy
echo          SetProxy off - Desabilita o proxy
echo.
echo Exemplo: SetProxy IP 192.168.88.1:8080
echo.
goto fim

:ERRO
echo.
echo    Você deve especificar o endereço do servidor para a opção IP
echo "SetProxy IP <IP do servidor>:<porta>" - Define o IP e porta do proxy
echo.
echo Exemplo: SetProxy IP 192.168.88.1:8080
echo.
goto fim

:fim


Veja que agora você pode executar o programa usando o argumento IP <IP do servidor>:<porta>, ou os argumentos "on" ou "off" para habilitar ou desabilitar. Qualquer argumento inválido o o programa é encerrado sem qualquer alteração, e se usado sem argumentos a configuração padrão é carregada.

SetProxy ?   ---- Exibe o help
SetProxy IP 10.0.0.250:8080 ---- Configura o proxy com o endereço fornecido.
SetProxy ON    -----  Habilita o uso do proxy
SetProxy OFF    -----  Desabilita o uso do proxy

Com este script disponível em cada máquina o trabalho poderá ficar muito mais fácil. Você terá, é claro, que copiá-lo para todas as máquinas, mas nada que não seja resolvido via GPO com outro script....

Bloqueando sites indesejados - na gambiarra

$
0
0
O truque do arquivo hosts é bem velho. Você pode relacionar endereços IP com nomes fixos no arquivo, ou mesmo indicar um IP falso para um determinado nome ( por exemplo facebook.com ).
A ideia de usar este método, muito deselegante por sinal, é que em alguns casos você tem redes onde não há um servidor proxy ou algo do tipo, o o pessoal quer bloquear alguns sites para que os usuários não desviem do trabalho, mas apenas em algumas máquinas. Pequenos escritórios ou escolas são bons exemplos. Acaba sendo uma solução rápida e eficaz.

O arquivo deve indicar o endereço IP e o nome DNS da maquina linha por linha. Para cada nome DNS usado o sistema consulta o arquivo hosts antes do servidor DNS, então você pode envenenar o arquivo com entradas falsas. Provavelmente o seu Anti vírus vai reclamar, por isso preste atenção nele durante o procedimento.

O endereço do arquivo é o "C:\Windows\System32\drivers\etc\hosts". Abra o arquivo no bloco de notas e comece a escrever. Veja abaixo como bloquear o fcebook:

127.0.0.1     fb.com
127.0.0.1     www.fb.com
127.0.0.1     facebook.com
127.0.0.1     www.facebook.com
127.0.0.1     pt-br.facebook.com
127.0.0.1     facebook.com.br
127.0.0.1     www.facebook.com.br
127.0.0.1     pt-br.facebook.com

Salve e pronto. Veja que devem ser colocadas entradas com variações do domínio do site.

Você pode fazer um script se você usar isso em vários locais ou em várias máquinas. Fiz um exemplo de um onde é aberto um arquivo no qual você pode digitar os domínios sem se preocupar em digitar os endereços. Em seguida ele gera as entradas corretamente e salva no arquivo hosts:

@echo off
echo.
if not exist "%Userprofile%\Bloqueados.txt" echo. > "%Userprofile%\Bloqueados.txt"

echo  Digite em linha por linha neste arquivo os endereços que deseja bloquear.
echo Salve e feixe o bloco de notas.
echo.
echo.
set /p R=         Tecle para abrir...

notepad "%Userprofile%\Bloqueados.txt"

echo.
echo.
echo  Salvando relacao anterior....
type %Systemroot%\System32\Drivers\etc\hosts > %Systemroot%\System32\Drivers\etc\hosts.old
echo.
echo         Carregando dominios bloqueados....
echo. > %Systemroot%\System32\Drivers\etc\hosts
echo 127.0.0.1    localhost >> %Systemroot%\System32\Drivers\etc\hosts

for /f %%B IN ( ' type "%Userprofile%\Bloqueados.txt"' ) DO ( echo 127.0.0.1    %%B >> %Systemroot%\System32\Drivers\etc\hosts )
 

type %Systemroot%\System32\Drivers\etc\hosts

echo.
echo.
pause


Assim que executado ele verifica a existência de um arquivo "Bloqueados.txt" no perfil do usuário, que pode ser copiado previamente, em seguida abre no bloco de notas para edição. Assim que salvo, ele carrega as entradas no arquivo hosts. Eu chamei o script de Bloq.cmd, e sempre copio para a pasta system32, é claro.

Sudo no Windows

$
0
0
O bom entendedor usuário de Linux já percebeu a ideia do post. Um comando para executar tarefas como administrador.

Mas para que isso? Para evitar a fadiga...

Primeiro, eu uso conta de usuário limitada, então é comum ter que executar alguma coisa com privilégios.
Segundo, eu odeio mouse. Só de ter que achar a coisa no explorer, depois clicar com o botão direito e em "Executar como Administrador", já é muito trabalho para mim. Faço praticamente tudo pelo Executar ou pelo cmd. A medida que uso a janela do Executar a lista fica mais completa e rápido para eu achar o que quero no histórico. Basta um "Windows +R" e mais uma ou 2 teclas e ENTER!

Tudo bem, poderia abrir o executar o digitar "runas /User:Administrador <COMANDO>" e pronto, basta então colocar a senha. Só que Não! Comando muito longo, e seria sempre repetido. Por que não apenas "sudo <comando>" ? Mais rápido.

Para isso crie um arquivo "sudo.cmd" e salve na pasta system32 com o seguinte conteúdo:

@echo off
rem --- Script para tarefas como usuário Administrador
runas /user:%computername%\Administrador %1

Substitua o nome do administrador caso o seu seja diferente, ou coloque antes o nome do domínio se for uma rede com domínio.

Exemplo: Surge um problema e você quer executar o gerenciador de tarefas para ver todos os processos sem restrições:

sudo taskmgr

Simples assim.

Configurando portas VLAN access no Mikrotik RouterOS

$
0
0
Existe muita documentação explicando como "criar" VLAN's no Mikrotik, no entanto a grande maioria explica como criar interfaces VLAN, mas não diferencia portas de acesso de portas de transporte (trunk). Uma interface VLAN (vlan interface) atrelada à uma interface física está mais próximo de uma porta de transporte que uma uma VLAN como um todo.
Um porta de acesso é uma porta membro de uma VLAN (domínio de broadcast) onde os pacotes não saem com a marcação 802.1q, já os pacotes em portas de transporte recebem a marcação na saída, que é o caso das "VLAN interfaces" no RouterOS.

Falando em domínios de broadcast, no RouterOS você deve criar "bridges", onde cada porta de acesso da VLAN será inserida. As interfaces VLAN (Vlan interface) serão criadas sobre as portas de transporte, de onde os pacotes vão sair com a marcação (802.1q) da VLAN de origem, em seguida as interfaces VLAN são inseridas na bridge da sua VLAN.

Se quer saber um pouco mais sobre VLAN's acesse este artigo AQUI.

Neste exemplo estou usando um RB2011 UAS 2Hnd IN, onde eu tenho 10 portas e pretendo criar 2 Vlan's. A VLAN 10 com as portas ether7 e ether8, e a VLAN 20 com as portas ether9 e ether10.
A porta ether6 será a porta de transporte.

Primeiro criamos as 2 bridges, uma para cada VLAN (br-vlan10 e br-vlan20):






Em seguida adicione as portas ether7 e ether8 à br-vlan10 e as portas ether9 e ether10 à br-vlan20.


 Desta maneira já temos 2 VLANS de verdade, Basta agora criar as interfaces VLAN na porta de transporte e depois inseri-las na suas respectiva bridge.

Criando 2 interfaces VLAN na porta ehter6:





Coloque cada interface vlan dentro da sua bridge. A coisa fica mais ou menos assim:



Veja que as VLANS são definidas pelas portas dentro de uma bridge, e os pacotes egressos das "vlan interfaces" serão marcados com o TAG da VLAN e sairão pela ether6, que é a porta de transporte, onde você provavelmente terá um switch plugado.

Quem vem do mundo Cisco e cia, pode ficar confuso já que no IOS você define qual porta é membro de qual VLAN na configuração da própria porta. A configuração é muito mais simples, mas lembre-se que o RouterOS é basicamente o Linux, e que a RouterBoard não é exatamente um switch, o que lhe dá muito mais flexibilidade.

Problema

Nesta Routerboard que uso as portas 6 a 10 vem com uma configuração ainda mais estranha. Ao inserir as portas nas bridges das VLAN's você por se deparar com o seguinte erro:


Acontece que as portas ether7 em diante vem configuradas como "Slave" da porta ether6, que na prática é o mesmo que dizer que a porta ether6 e todas as suas "escravas" são um switch (uma bridge). Você deve primeiramente remover a configuração "Master Port" dessas portas, para que fiquem "livres", usando a opção "none":


A explicação para isso pode deixar as coisas ainda mais confusas, e fica para outro post. Na documentação da Mikrotik, esta configuração usa recursos diretos da CPU do switch - ASIC (application specific integrated circuit) - e oferece um desempenho maior na camada2, poupando processamento da CPU principal.


O RouterOS é um sistema completo e poderoso, mas se você não pisa firme nos conceitos de redes e camada 2 pode tropeçar bastante até entender a coisa.




Routing on a stick com Linux

$
0
0

Routing on a stické a técnica usada para "rotear" tráfego inter VLAN's usando um único roteador conectado com um único cabo a uma única porta de transporte (porta trunk ou VLAN tagged). Um roteador deve ter um pé em cada rede que ele encaminha tráfego, mas se ele tem apenas uma porta de rede podemos criar interfaces virtuais e atribuir cada uma à uma VLAN usando o encapsulamento 802.1q. Um roteador pode ser, é claro, um pc modesto com uma distro Linux qualquer instalada. Primeiro basta que a porta do switch esteja configurada como trunk, usando o encapsulamento 802.1q, marcando os frames com o ID da VLAN de origem. A interface do roteador recebe os frames e atribui a cada interface virtual segundo a respectiva VLAN. Veja a imagem abaixo:



Veja que existem 3 VLAN's no switch, uma para cada porta. O roteador está conectado em uma única porta de onde tem acesso a todas as VLAN's, o tráfego de uma e outra é diferenciado pelo protocolo 802.1q.
Se quiser entender mais sobre VLAN's consulteeste artigo.

Neste guia vou criar 2 VLAN interfaces sobre uma interface real. Com as interfaces criadas você pode referenciá-las para manipular qualquer configuração no sistema, como regras de firewall, roteamento, etc...

Sem mais para teoria vamos à prática.

Criando as interfaces

Antes de tudo instale o pacote "vlan". No Debian e derivados seria:

apt-get install vlan

Em seguida carregue o módulo "8021q", e coloque uma linha para ele no arquivo "/etc/modules", para que seja carregado sempre:

# modprobe 8021q
# echo 8021q >> /etc/modules

Com o módulo carregado pelo kernel você pode exibir as configurações das VLAN interfaces no arquivo "/proc/net/vlan/config". E o comando para manipular as interfaces é o "vconfig":

cat /proc/net/vlan/config
vconfig --help

Existem algumas opões quanto à nomenclatura das interfaces, mas você pode alterar usando o "vconfig set_name_type". Por exemplo, as interfaces da vlan 30 podem ser nomeadas como vlan0030 ou vlan30 ou eth0.30. Consulte o help e veja a nomenclatura atual no arquivo "/proc/net/vlan/config".


Para adicionar uma VLAN interface com VLAN ID 45 na interface eth0 seria:

# vconfig add eth0 45

Veja se a interface foi criada verificando o arquivo "/proc/net/vlan/config". Uma interface será criada com o nome eth0.45 ou vlan45, dependendo do "name-type" definido.
Para remover uma VLAN interface:

# vconfig rem  eth0.45

Você deve declarar as configurações da interface no arquivo "/etc/network/interfaces" normalmente, exatamente como as interfaces reais, mas com apenas um parâmetro a mais, o que identifica a interface física da vlan:

auto eth0.45
iface eth0.45 inet static
address 192.168.45.1
netmask 255.255.255.0
network 192.168.45.0
broadcast 192.168.45.255
vlan_raw_device eth0

auto eth0.50
iface eth0.50 inet static
address 192.168.50.1
netmask 255.255.255.0
network 192.168.50.0
broadcast 192.168.50.255
vlan_raw_device eth0 
 
Veja que no exemplo defini 2 VLANs na interface eth0, a 45 e a 50.
Agora você pode montar as configurações da máquina baseadas nas interfaces das VLANs. Por exemplo, 
impedir que o tráfego de uma VLAN seja encaminhado para outra:
 
# iptables -A FORWARD -i eth0.45 -o eth0.50 -j REJECT 
# iptables -A FORWARD -i eth0.50 -o eth0.45 -j REJECT 
 
Ou definir regras diferentes para uma VLAN no squid:
 
acl vlan45 src 192.168.45.0/24
acl vlan50 src 192.168.50.0/24
acl youtube dstdomain youtube.com
http_access deny vlan50 youtube
 
Configuração do Switch
 
Para que o tráfego chegue na interface da VLAN correta, os frames devem vir com a marcação 802.1q. 
Para isto a porta do switch deve estar configurada corretamente como trunk e permitindo as VLAN's é claro.
Em um switch Cisco a configuração seria:
switch(config-if) switchport mode trunk
switch(config-if) switchport trunk allow vlan all
Ou em um switch HP/3com:
port link-type trunk
port trunk permit vlan all
Se você usa o RouterOS a coisa pode ser mais confusa, confira aqui: goo.gl/Lw4qMO

Power Line Comunication - Um jeito fácil de expandir a rede

$
0
0

O problema de muitas redes hoje é a cobertura do sinal Wi-fi. O provedor instala a CPE em um local qualquer na casa, ou empresa, e logo ao lado colocamos um roteador wi-fi. Pronto. Na maioria dos casos este não é o local ideal para o ponto de acesso wireless, pode estar baixo demais, muitos obstáculos por perto, muito distante de outros cômodos, etc.
Antes de mais nada, ideal mesmo é fazer um planejamento da sua rede e da cobertura do sinal, verificar os pontos estratégicos para posicionar os AP's e levar os cabos para cara um. Em muitos casos posicionar um único AP em um local central, e alto, resolverá o problema.
Resta os locais onde o sinal simplesmente não chega, ou chega extremamente atenuado. Você ainda tem algumas alternativas, mas elas podem sair muito onerosas ou complexas de fazer:

  1. Levar um cabo do roteador principal até o local desejado e conectar um PC ou outro roteador. Em alguns casos é simplesmente inviável ou caro demais.
  2. Usar um repetidor wireless. Esta é uma solução bem fácil e barata, mas quem usa sabe a dor de cabeça que é. O repetidor aumenta a cobertura do sinal mas ao mesmo tempo polui (e muito) o espectro. Sem falar que os hosts associados ao repetidor terão uma latência de acesso muito maior. Eu particularmente detesto.
Adaptadores PLC TP-Link

Uma outra opção é PLC(Power Line Comunication). Os adaptadores PLC, ou Powerline se preferir, utilizam o cabeamento elétrico do prédio para transmitir os dados, usando uma frequência diferente da rede elétrica. A ideia é que a passagem de dados pela fiação substitua o uso de cabos entre os pontos de conectividade. Os adaptadores Powerline atuais trabalham com a velocidade de 200Mbps e prometem estabelecer enlaces entre 100m a 300m de fios (alguns modelos trabalham à 500Mbps), o que garante uma boa largura de banda para a grande maioria dos casos. Eles também são "plug and play", basta espetá-los nas tomadas e conectar os cabos. Os dados são transmitidos com criptografia AES garantindo uma boa segurança, por outro lado vou listar algumas considerações sobre o uso de enlaces PLC:
  • A tecnologia trabalha em Half-duplex, o que já coloca uma certa limitação se você quer um desempenho muito alto
  • A taxa útil de transmissão pode variar drasticamente dependendo da qualidade do cabeamento elétrico e outros equipamentos que podem gerar ruido na rede, sem falar na ausência de aterramento. Não espere conseguir mais que 50% de eficiência.
  • O sinal só chega até o transformador de tensão, por isso fica "preso" no mesmo circuito elétrico.
  • O processamento do sinal e a propagação levam a uma latência média de 6ms ou mais entre os pontos.
  • É recomendado plugar os adaptadores diretamente na tomada, evitando extensões ou até mesmo filtros de linha, por conta dos varistores. Estabilizador nem pensar. É claro que são apenas recomendações, mas é bom saber e evitar pontos de degradação do sinal.
  • Outra questão é o preço. Os adaptadores Powerline não são muito baratos, o que pode lhe fazer repensar a ideia do cabo.


Eles são vendidos em pares ou trios, mas você pode comprar mais adaptadores e adicionar à rede. No final das contas você torna facilmente qualquer tomada da casa em um ponto de dados, mas lembre-se que a largura de banda será cada vez mais reduzida com a quantidade de tráfego, e evite usar adaptadores de fabricantes diferentes para não ter problemas de incompatibilidade. Alguns modelos vêm com mais de uma porta Ethernet por adaptador, ou mesmo com Wi-fi integrado, mas o preço é ainda mais cruel.
Levando tudo isso em consideração, basta plugar cada um em uma tomada, e levar o cabo de rede ao PC ou roteador.



Pense que eles estabelecem uma comunicação em camada 2 com o resto da rede, depois você decide como vai fazer o resto. Abaixo vou deixar de exemplo alguns esquemas possíveis de uso do PLC:


O mais simples é um PC que está longe da sua rede, ou não tem adaptador wireless. O Poweline leva o sinal até ele pela rede elétrica.



Você pode ainda adicionar um switch e colocar mais PCs na rede. Não espere o mesmo desempenho que uma rede Ethernet comum.


Por fim, você pode adicionar um outro access point (ou roteador wireless, como queira chamar). 

Este terceiro exemplo é muito interessante. Um roteador doméstico padrão tem 4 portas LAN e Wi-fi integrado, o que lhe permite atender gregos e troianos. Com mais um AP você pode criar uma outra rede com SSID diferente, ou o mesmo SSID e senha que o roteador principal (fazendo uma rede Roaming) deixando as coisas transparentes para os dispositivos que se conectam à rede sem fios.

Script de backup (para sistemas que não têm)

$
0
0

90% do meu trabalho é suporte. Dou suporte à usuários, manutenção de PCs e sistemas operacionais, etc. E, é claro, sempre em pequenas e médias empresas onde há sistemas de gestão mais simples, e tudo fica a cargo do usuário, inclusive o backup. Na maioria dos casos o "servidor" é um PC qualquer da empresa, o que faz da questão um tanto delicada.
Deixar o usuário a cargo do backup é quase insano, ainda mais em computadores comuns onde os usuários fazem as tarefas comuns. Sem falar que muitos desses sistemas simplesmente não têm ferramenta de backup! O backup é feito copiando manualmente uma pasta ou os arquivos do banco de dados.

Alguns oferecem um script de backup que pode ser agendado como tarefa do Windows, outros não. É aqui onde quero chegar. Andei trabalhando com alguns softwares que o desenvolvedor não dá qualquer suporte ao backup e os usuários acabaram fazendo bagunça na hora de copiar os arquivos. Vou dar um exemplo de script de backup de uma pasta, o qual o usuário pode fazer um backup seguro com apenas um clique (e restaurá-lo da mesma forma) e você pode programar o Windows para executar em determinado horário.

Neste exemplo, como na maioria dos sistemas, será copiada toda a pasta para um arquivo zip nomeado com a data e o horário. Você deve fazer a cópia para pelo menos 2 locais em discos diferentes e de preferência agendar a tarefa em um horário de nenhum ou pouco movimento. Depois um segundo script será criado de forma que basta arrastar o arquivo zip para ele e o backup é restaurado.

Veja o exemplo abaixo, copie no bloco de notas e salve com extensão .CMD:

@echo off
color F0
title Backup pasta do Sistema
rem Definindo variáveis de data e horário para o nome do arquivo
set year=%date:~-4,4%
set month=%date:~-10,2%
set day=%date:~-7,2%
set hour=%time:~-11,2%
set hour=%hour: =0%
set min=%time:~-8,2%

rem Definindo Endereços das pastas e arquivos
set PastaSistema=C:\Sistema
set PastaTemp=%USERPROFILE%\Temp-BKP
set PastaDestino=%USERPROFILE%\BKP-Sistema
set PastaDestino2=\\127.0.0.1\Compartilhada

set NomeArqZip=Sistema-%year%.%month%.%day%.%hour%%min%.zip

rem Verificando instalação do 7zip
set App7zipPath="%ProgramFiles(x86)%\7-Zip\7z.exe"
if not exist %App7zipPath% set App7zipPath="%ProgramFiles%\7-Zip\7z.exe"
if not exist %App7zipPath% goto NaoInstalado

rem Verificando existencia de pastas
if not exist %PastaTemp% mkdir %PastaTemp%
if not exist %PastaDestino% mkdir %PastaDestino%
if not exist %PastaSistema% goto Fim

xcopy /E /H %PastaSistema%\* %PastaTemp%\

echo.
echo -----------
echo Copiando %PastaSistema% para %PastaDestino%\
echo -----------
echo.
%App7zipPath% a %PastaDestino%\%NomeArqZip% -r %PastaTemp%\*
%App7zipPath% a %PastaDestino2%\%NomeArqZip% -r %PastaTemp%\*
echo.
echo -----------
echo %PastaSistema%\ Copiada para %PastaDestino%\%NomeArqZip% 
echo -----------
echo.

goto Fim

:NaoInstalado
 echo.
echo Aplicativo 7zip não instalado - Acesse o site oficial em:
echo  http://www.7-zip.org/

:Fim
del /a /s /f /q "%PastaTemp%\*"
rmdir /s /q "%PastaTemp%\"
echo.
echo.
echo FIM !
echo.
echo.
pause

Você deve substituir os endereços das variáveis pelas respectivas pastas do sistema e do backup. Os arquivos são copiados para uma pasta temporária e em seguida é criado o arquivo de destino. Ainda há uma segunda pasta de destino (variável PastaDestino2) por segurança. Coloquei como exemplo uma pasta compartilhada.

Com um clique duplo o backup é feito. Você pode agendar uma tarefa no Windows para fazer automaticamente. Continuando, um segundo script deve ser colocado na pasta onde ficam os backups para poder restaurá-los de maneira simples, apenas arrastando o arquivo ZIP para o script. Veja o conteúdo abaixo o salve na pasta dos backups com o nome "Arraste aqui para Restaurar o Backup":

@echo off
color F0
rem definindo path do 7zip
set App7zipPath="%ProgramFiles(x86)%\7-Zip\7z.exe"
if not exist %App7zipPath% set App7zipPath="%ProgramFiles%\7-Zip\7z.exe"
if not exist %App7zipPath% goto NaoInstalado

rem Tratando argumento
set Endereco=%1
if not defined Endereco ( echo. & echo "Arraste o arquivo para este progama"& echo. & pause & exit )

set PastaSistema=c:\Sistema
title Restaurando %1 para %PastaSistema%\

rem Restaurar arquivo indicado para a pasta do sistema
echo.
echo -----------
echo Restaurando %1 para %PastaSistema%\
echo -----------
echo.
%App7zipPath% X -aoa %1 -o%PastaSistema%\
echo.
echo -----------
echo FIM !!!
echo -----------
echo.

rem Fim
:Fim
echo.
echo.
pause
exit

rem 7zip Não encontrado
:NaoInstalado
echo.
echo ---------- 
echo.
echo 7zip nao instalado - Baixe em:
echo  http://www.7-zip.org/
echo.
echo ----------
pause
goto Fim

Novamente, altere apenas a variável "PastaSistema" e o script de restauração está pronto. Basta arrastar o arquivo ZIP para ele e pronto. Veja a imagem:





IPv6 - Saindo do armário

$
0
0
IPv6 é a nova versão do protocolo IP, que de novo não tem nada, pois a RFC do protocolo data de 1998! O problema é que houve uma grande procrastinação do IPv4 com as técnicas de mitigação do esgotamento de endereços. O IPv6 elimina o problema da falta de endereços válidos e uso de NAT em redes locais, entre outras novidades. Com 128 bits para endereçamento não faltarão endereços por toda via láctea.
Boa parte da Internet já funciona em IPv6 e a grande maioria dos dispositivos novos vêm com ele habilitado por padrão. Você já está usando IPv6 e e talvez não saiba...
Ele está lá na sua rede, os hosts tentam fechar tuneis IPv6 para atravessar o seu firewall, fazem autoconfiguração e se comunicam por IPv6, tudo debaixo do seu nariz. Então saia do armário e comece a estudar o assunto antes que seja tarde. :-)
Quando se toca no assunto o pessoal fala de lado, olha pro chão. Alguns dizem que é moleza, que basta sair do decimal e estudar números hexadecimais, ou que vai demorar muito até ser implantado. Nada mais ingênuo. O IPv6 é um protocolo totalmente novo e tem muitas diferenças do antecessor. Os endereços IPv4 estão dando os últimos suspiros, e a medida que a rede cresce o uso de NAT deixa tudo exponencialmente mais complexo e caro.


Não pretendo apresentar os detalhes do formato dos novos endereços e como manipulá-los. Esta é a parte mais fácil e você pode achar em qualquer site com documentação básica sobre IPv6. Dê uma olhada em http://ipv6.br e procure pelo curso e-learning.

Para começar veja algumas características importantes:
  • No IPv6 todas as interfaces recebem vários endereços de acordo com o escopo. Vide os tipos de endereços a seguir.
  • O conceito de máscara e a notação CIDR permanece, mas a recomendação é que todos os enlaces utilizem prefixos /64.
  • O novo endereço de loopbacké::1/128.
  • Não há endereços de rede ou broadcast, nem mesmo o conceito de broadcast, este agora na forma de endereços multicast.
  • Autoconfiguração(stateless) aprimorada. Os endereços podem ser aprendidos automaticamente por "router advertisement", assim como default gateway e servidores DNS, sendo o DHCPv6 opcional.
  • Protocolo ARP foi substituído pelo ICMPv6(neigbour discovery), que agora carrega funções indispensáveis para o funcionamento da rede.
Os endereços IPv6 são divididos basicamente nas faixas:
 - Link-local address : FE80:: /10 - Endereços não roteáveis que valem apenas no enlace. Análogos aos endereços IPv4 169.254.0.0/16.
 - Unique Local address (ULA): FC00:: /7 - Endereços análogos aos endereços IPv4 privados e podem ser usados em redes privadas livremente.
 - Global unicast: 2000::/3 - Endereços globais únicos reservados para a internet.

Você pode quebrar o gelo com um simples IPCONFIG/IFCONFIG e verá que já existe um endereço de escopo "Link-local" atribuído à sua interface na faixa "fe80::/10. Geralmente este endereço é gerado com base no seu endereço MAC, sendo os últimos 64 bits do endereço correspondentes à ele no formato EUI 64:



Repare que na primeira imagem tenho 2 endereços IPv6, um de escopo global e outro Link-local, mas que terminam iguais. Ambos gerados a partir do MAC da interface. Esta implementação pode variar dependendo do sistema operacional.
Naturalmente você pode fazer testes dentro da sua rede acessando outros hosts pelos endereços IPv6 de Link-local, a começar pelo PING:

  • No Linux com o comando "ping6":  $ ping6 fe80::20f:eaff:feae:9044
  • No Windows usando o parâmetro "-6":  > ping -6 fe80::20f:eaff:feae:9044

Você pode acessar compartilhamentos no Windows por IPv6 também, mas é um pouco mais complicado. Como os ":" do endereço tornariam o formato UNC inválido você deve substituí-los por traços e adicionar o sufixo ".ipv6-literal.net". Veja os exemplos abaixo:

Acesso pelo endereço de Loopback (::1)
Usando o endereço Link-local
O protocolo ARP foi totalmente substituído pelo ICMPv6 com o protocolo de descoberta de vizinhança(NDP - Neighbour discover protocol). Então o que seria equivalente à um "arp -a" agora é:

  • No Windows pelo "netsh": > netsh interface ipv6 show neighbors
  • No Linux: $ ip neigh
netsh interface ipv6 show neighbors

ip neigh
Uma notícia boa é que para o DNS não muda praticamente nada. Para cada consulta IPv4 ao DNS é solicitado um registro tipo "A" e para IPv6 registros tipo "AAAA". Não importa se o seu servidor DNS tem suporte ao IPv6 ou não. Você pode fazer o teste com qualquer domínio usando o comando "NSLookUp"(vale para Windows e Linux) especificando o tipo de "query" com a seguinte sintaxe:

>  nslookup [-querytype=<Tipo de registro>] <domínio> [Servidor DNS]

Exemplo:  nslookup -querytype=AAAA www.globo.com 8.8.8.8


No Linux, além do nslookup(e o dig), temos o comando "host" que pode trazer resultados mais completos:


Repare que o host "ipv6.google.com" tem apenas endereços IPv6 e obviamente apenas registros tipo "AAAA". Sendo assim você pode continuar usando seus servidores DNS de costume para navegar pela Internet IPv6. 

O próximo passo é conseguir transito IPv6. O problema começa quando a maioria dos provedores não ofereço IPv6 aos clientes. As vezes ainda não implementaram na rede ou as CPE's dos assinantes não oferece suporte. A saída mais fácil para estes casos é fazer um túnel com um provedor TunnelBroker. Exemplos são o Freenet 6 e o Hurricane Eletric.
Os links acima têm tutoriais completos. No meu exemplo escolhi o Hurricane por ser mais simples e usar recursos nativos para qualquer sistema operacional(no site da HE tem tutoriais para todos eles), no caso RouterOS. Em seguida, com o túnel fechado no gateway da rede, os hosts serão configurados automaticamente por "router advertisement" e terão conectividade IPv6 de forma rápida.
Basicamente o que deve ser feito é:
  1. Estabelecer o túnel. Lembando que o pacote IPv6 deve estar instalado no RouterOS.
  2. Configurar um endereço de escopo global para a interface de rede interna do roteador no bloco atribuído pelo provedor do túnel.
  3. "Setar" o router advertisement para que os hosts da rede aprendam os endereços segundo o prefixo anunciado.
Feito o cadastro na HE você pode criar a interface do túnel com o seu endereço IPv4 público e o endereço do servidor fornecido:


Vá em "IPv6 > Addresses" e configure o endereço IPv6 da interface do túnel com o endereço fornecido em "Client IPv6 address":


E adicione uma rota default IPv6 com o endereço em "Server IPv6 Address":


Por fim atribua um endereço do bloco "Routed /64"(vide a tabela "Routed IPv6 Prefixes" fornecida no site nas configurações do túnel) para a interface da sua rede interna habilitando o parâmetro "advertise"(para que os outros hosts aprendam a configuração). Este é o bloco designado para a sua rede. São endereços "Global unicast", por isso únicos no mundo. Sua rede será acessível por esta faixa e cada host terá um endereço "válido", eliminando o NAT.


Acesse qualquer host na rede e verá que rapidamente eles terão endereços na faixa anunciada pelo gateway. Faça um teste no site www.test-ipv6.com. Tendo acesso IPv6 você pode começar a praticar o novo protocolo e fazer a configuração do seu firewall e demais serviços.
O único problema de fazer acessos por túnel é o delay. No meu caso o túnel é fechado com um servidor em Maiami, então todo o meu tráfego v6 faz uma grande volta na América antes de chegar aos destinos, sendo em média 230ms a mais!



Tutorial DNS - Parte 1 - Introdução

$
0
0
DNS(Domain name System) é um serviço criado para resolver os nomes na Internet, "traduzi-los" para endereços IP, e vice versa. Por exemplo o endereço "www.Exemplo.com.br" deve corresponder à um determinado endereço IP. Isso facilita a vida do usuário, na verdade a Internet seria impossível sem este serviço muito simples.


 Um pouquinho de história


Nos primórdios da Internet era muito fácil se lembrar dos endereços IP de outros servidores já que havia muito poucos hosts na rede. Conforme a rede cresceu este trabalho se tornou cada vez mais dispendioso. A solução seguinte foi criar um arquivo de texto chamado "hosts" onde era colocado todos os nomes conhecidos e os respectivos endereços IP. Este arquivo era atualizado periodicamente com um número de versão para controle. A cada acesso a aplicação poderia checar o arquivo para saber qual o endereço IP correspondente ao host. Naturalmente isto também ficou absolutamente insustentável com o crescimento da rede. Então foi criado um serviço próprio para o mapeamento dos nomes em um sistema distribuído em várias zonas e domínios diferentes, o DNS.

O arquivo hosts


O arquivo hosts até hoje é usado. Na verdade ele é o primeiro a ser consultado quando digitamos um nome de domínio qualquer para acessar qualquer coisa na rede. No Windows o seu endereço é "C:\Windows\System32\Drivers\etc\hosts" e no Linux, e familiares, "/etc/hosts". Você pode abrir o arquivo e dar uma olhada. Ele quase sempre está vazio ou apenas com linhas comentadas. É possível adicionar entradas manualmente nele, para o bem ou para o mal, como descrito neste artigo aqui.

Os Root Servers


O protocolo DNS funciona mapeando zonas de cima para baixo. Cada servidor pode ser o dono, chamado servidor Autoritativo, de uma ou mais zonas. Em primeiro lugar existem os root servers, que são os servidores raiz do sistema. Ele são responsáveis pela zona primária que é referenciada com um ponto, ou melhor Root Zone. São 13 no total e cada um recebe uma letra como nome, de A até M. Eles são administrados pela IANA e distribuídos pelo globo. No site oficialé possível ver um mapa de onde eles estão localizados. Cada servidor pode ter várias cópias. No Brasil, por exemplo, temos vários exemplares do J e do L.


Você pode se perguntar o porque de ter "clones" dos root servers pelo mundo e não novos servidores até completar o alfabeto. A questão é que a cada novo servidor, seu endereço deveria ser divulgado para todos os outros no mundo. Sem falar que um único root "B", por exemplo, estando apenas em uma localidade poderia receber muito tráfego. Eles são "clonados" para manter coerência dos 13 nomes históricos e balancear o tráfego global. Seus endereços são configurados em anycast, de forma que se você precisa do root "C", chegará sempre ao mais próximo.

O trabalho dos root servers, sendo donos da zona raiz, é delegar autoridade à outros servidores das zonas do topo, chamadas Top Level Domains(TLDs). Dentro das TLDs podemos ter várias categorias como os códigos de países. Brasil com o ".br", Japão com ".jp" e assim por diante, além de outros domínios genéricos como ".com", ".gov" e ".net", etc. Repare que todo o funcionamento da Internet depende desses domínios e do trabalho dos root servers. Todo servidor DNS deve saber de cor os endereços dos root servers para iniciarem as pesquisas.
Uma questão bem atual na governança da Interneté justamente a liberação de novos TLDs. Países mais conservadores tentem à proibir domínios ".xxx" por exemplo, e outras discussões como alocação de TLDs para grandes empresas como Google e Audi. Veja na lista que várias empresas já reservaram domínios com seus nomes ou mesmo de seus produtos. A zona ".br"é de responsabilidade do Comitê gestor da Internet no Brasil e administrada pelo Nic.Br. Isto significa, basicamente, que todo domínio ".br" deve ser registrado lá.
Para ficar mais claro você pode fazer uma consulta DNS rápida para entender. Use o comando "nslookup -type=NS br.". Traduzindo você está perguntando para o seu servidor DNS quem é o NS(name server) da zona "br."(com ponto no final). Ele vai te responder com os nomes dos servidores responsáveis do Brasil.

Repare que na imagem acima, nas primeiras linhas, que quem me responde é o servidor do Google, e com o aviso "Não é resposta de autorização". Na tradução tosca do Windows, isto significa que este servidor do Google está te respondendo mas ele não é o dono da zona. Você pode perguntar diretamente para os donos e receber uma resposta autoritativa, basta adicionar o endereço de um dos servidores logo no final do comando:
Repare que quem responde é o próprio servidor dono da zona, e não há mensagem de "Não é resposta de autorização".

Servidores Autoritativos


Um servidor DNS pode ser o autoritativo de uma determinada zona. Isto significa que o servidor responsável pela zona superior lhe delegou esta autoridade. Por exemplo a empresa ABC para registrar o domínio "ABC.com.br" precisa requerer o registro da zona com a autoridade do domínio superior e indicar quais serão os servidores autoritativos da zona "ABC.com.br". Uma vez configurado o administrador pode criar os hosts dentro desta zona no arquivo do servidor autoritativo, como "www", "blog", "mail" ou "loja". Cada registro desse vai corresponder ao endereço IP do servidor que hospeda o serviço.
Por exemplo:
mail.abc.com.br  192.0.2.25     #Servidor de email
www.abc.com.br   198.51.100.42  #Servidor web
blog.abc.com.br  203.0.113.89   #Servidor do blog

  Servidores Recursivos


Os servidores chamados recursivos não respondem apenas por suas próprias zonas(se houver), mas fazem a pesquisa recursivamente em toda árvore de domínios até chegar na resposta e entregar ao usuário, sobre qualquer nome. Tudo que ele precisa saber são os endereços dos root servers, o resto flui naturalmente. É o caso dos servidores públicos do Google ou OpenDNS, que qualquer pessoa pode usar. A ideia é distribuir o volume das consultas nos servidores autoritativos já que em uma rede, ou região, vários usuários vão fazer as mesmas perguntas várias vezes. Um servidor recursivo armazena em cache cada resposta que obtém para entregar mais rápido quando solicitado novamente sobre os mesmos nomes e não ter de fazer o processo todo de novo. Geralmente usamos os DNS recursivos do nosso provedor de acesso ou mesmo através do nosso roteador doméstico, que pode fazer o mesmo papel.

Servidores autoritativos podem fazer o trabalho recursivo também e vice versa. Mas geralmente os servidores autoritativos na Internet são somente autoritativos. Isto é, respondem apenas o sobre os hosts e subdomínios dentro de sua zona.

Para fazer um teste rápido, pergunte ao servidor DNS de "globo.com" sobre o endereço IP de "www.facebook.com", e receberá uma resposta negativa de "Query refused". Mas se você perguntar sobre o "g1.globo.com", que é um host dentro de sua zona, responderá normalmente com máxima autoridade:
   nslookup www.facebook.com ns01.globo.com 
#Pergunta para ns01.globo.com quem é www.facebook.com


   nslookup g1.globo.com ns01.globo.com
#Pergunta para ns01.globo.com quem é g1.globo.com

Um servidor atuando como recursivo também pode ser o autoritativo de uma ou mais zonas sem problema algum. Por fim, veja a animação abaixo de uma pesquisa solicitada por um cliente sobre o nome "www.exemplo.com.br" ao seu servidor recursivo:

  
Quando um cliente recebe uma resposta sobre determinado nome ele também armazena em um cache temporariamente, para que não volte a perguntar ninguém sobre os mesmos nomes por um tempo. Você pode checar o cache DNS do seu computador com o comando:
 ipconfig /DisplayDNS
Ou mesmo limpá-lo:
ipconfig /FlushDNS
A resolução de nomes em geral funciona assim:

Tutorial DNS - Parte 2 - Detalhes mais técnicos

$
0
0
Na primeira parte deste tutorial falei sobre os fundamentos básicos do serviço de DNS. Os servidores podem ser autoritativos, sendo "donos" de uma ou mais zonas, e/ou recursivos, respondendo consultas por domínios diversos.Na sequência temos mais alguns detalhes do seu funcionamento.

GLUE Records

Quando um servidor recursivo está fazendo uma consulta ele pode se deparar com um pequeno problema. Tomemos o exemplo em que o usuário quer saber o endereço IP de "joaolucasmacedo.blogspot.com.br". Se ele já não tem este registro salvo em cache ele vai começar a pesquisa perguntando à algum servidor raiz pelo nome. Como eles não podem responder diretamente pela zona "blogspot.com.br" vão indicar pelo menos os servidores responsáveis pela zona ".br", que são "A.dns.br", "B.dns.br", "C.dns.br", até o "E.dns.br". Em seguida o recursivo vai perguntar à um destes pela zona blogspot.com.br.
Mas existe um pequeno detalhe. Qual o endereço IP de "A.dns.br" por exemplo? Para continuar a pesquisa ele terá que fazer outra pesquisa pelo nome "A.dns.br", para saber seu endereço IP, para conseguir perguntar sobre a zona "blogspot.com.br". Então ele perguntará ao root sobre "A.dns.br", e receberá a mesma resposta:
 - Olha, eu não sei quem é "A.dns.br", mas pergunte ao dono da zona ".br", que é "A.dns.br".

Vejamos um possível "diálogo" entre eles:
Recursivo: Quem é "joaolucasmacedo.blogspot.com.br?
Root server: Não sei, mas pergunte ao dono da zona ".br". É o "A.dns.br".
Recursivo: Quem é "A.dns.br"?
Root server: Não sei, mas pergunte ao dono da zona ".br". É o "A.dns.br".
Recursivo: Quem é "A.dns.br"?
Root server: Não sei, mas pergunte ao dono da zona ".br". É o "A.dns.br".
( ... )
 O processo não teria fim. Você não sabe o endereço IP de um servidor de uma zona, e este servidor é um host dentro da própria zona, à exemplo de A.dns.br, que é um host dentro da própria zona em que ele tem autoridade.
Por isso quando uma sub-zona é delegada à um outro servidor também devem ser registrados os seus endereços IP. Cada servidor autoritativo, quando informa sobre outro servidor de nomes autoritativo de uma zona abaixo dele, já responde com o nome do dito cujo e seu respectivo endereço IP.
 - Olha, não sei que é "joaolucasmacedo.blogspot.com.br", mas pergunte ao dono da zona ".br". É o "A.dns.br" que tem o IP 200.160.0.10 .
Isto é chamado de GLUE record. Sem este detalhe o processo seria impossível. Por isso mesmo os servidores já devem saber "de fábrica" os endereços IP dos root servers.

Você pose simular uma pesquisa recursiva usando o comando NSLOOKUP, percorrendo a árvore de domínios e encontrando os servidores autoritativos de cada sub-zona.
Exemplo:  nslookup joaolucasmacedo.blogspot.com.br j.root-servers.net
Perguntando ao root server J sobre "joaolucasmacedo.blogspot.com.br"
Naturalmente ele não me dá a resposta, mas uma dica("Saved by"), informando os servidores da zona ".br" e seus respectivos endereços IP(GLUE records). Em seguida você pode fazer a pergunta para qualquer um dos servidores indicados:
nslookup joaolucasmacedo.blogspot.com.br a.dns.br
Perguntando à "a.dns.br" sobre "joaolucasmacedo.blogspot.com.br"
Da mesma maneira ele não me responde diretamente mas dá a dica para os donos da zona.
"Olha, segundo meus registros, esta zona "blogspot.com.br"é dos servidores abaixo. Pergunte à eles .'-)."
Repare que não há GLUES neste caso, já que a zona dos servidores indicados está fora do escopo da zona dos servidores ".br". Estes serão informados pelos servidores da zona ".com". Caso necessário outra pesquisa análoga será feita até descobrir os endereços IP dos servidores do Google informados na figura acima.
Por fim, agora que sabemos quem é a autoridade máxima da zona "blogspot.com.br", podemos perguntar diretamente à ele o endereço IP de "joaolucasmacedo.blogspot.com.br". Escolha qualquer um dos servidores indicados e execute o comando:
nslookup joaolucasmacedo.blogspot.com.br ns3.google.com
Veja que temos algumas informações interessantes. Ele informa 2 endereços, um IPv6 e outro IPv4. E ainda, que na verdade, "joaolucasmacedo.blogspot.com.br"é um ALIAS(apelido, codinome, alcunha) para o host "blogspot.l.googleusercontent.com". Os detalhes dos tipos de registros serão explicados nos próximos artigos.

A porta 53

Como vimos, o serviço de DNS é extremamente simples, mas gera várias requisições recursivamente gerando um tráfego considerável. Por isso o sistema é distribuído em várias camadas e utilizamos servidores fazendo cache. É mais inteligente que as solicitações sejam feitas por pacotes UDP para agilizar o processo. Cada solicitação DNS é feita saindo de uma porta qualquer(acima de 1023) direcionada à porta 53/UDP do servidor. Naturalmente, servidor responde com pacotes originados na porta 53 destinados à porta de origem do cliente. Se a resposta do servidor ultrapassar o tamanho de um pacote UDP, um flag no cabeçalho DNS é definido para que o cliente saiba que é uma resposta truncada, e que vem mais pela frente.
A porta 53/TCP também é usada, mas geralmente entre servidores DNS para sincronizar as informações de zonas. Por exemplo um servidor mestre atualizando os registros no escravo.
Outra alternativa, não muito comum, é usar conexões TCP para consultas de clientes. Acaba não sendo muito utilizado na prática por consumir ainda mais recursos do servidor, mas é uma coisa que vem sendo repensada ultimamente porque as respostas com endereços IPv6 tornam-se maiores, como aquelas usando DNS-SEC, que vêm com chaves de segurança.
É comum os administradores de rede bloquearem a saída de pacotes à porta 53 para impedir que os clientes da rede usem outros servidores que não os desejados. Da mesma forma filtrarem tráfego na porta 53/TCP para impedir sincronização entre servidores DNS que não os da estrutura da empresa.

Servidores Master e Slave

 Você deve ter reparado que para cada zona existem vários servidores autoritativos. Um deles é tido como "Master" e outro(s) como "Slave"(escravo). As zonas são declaradas e configuradas normalmente em um servidor mestre, em seguida a declaração é feita nos escravos. Os escravos são informados de que, nesta condição, a configuração é obtida do servidor mestre para cada zona que ele atua como slave. Cada alteração feita é sincronizada entre eles para garantir redundância e balanceamento. Esta operação é feita na porta 53/TCP. Sendo slave o servidor precisa apenas ser informado do endereço IP do seu mestre, e para quem faz solicitações à ele as respostas são dadas normalmente de forma autoritativa.
Veja um trecho o arquivo de configuração do Bind de um servidor slave:
zone "examplo.com.br" { 
 type slave; 
 masters { 198.51.100.1; }; 
};
A zona é declarada com o endereço IP do servidor meste.

Zonas reversas

Outra funcionalidade do serviço de DNS é fazer o inverso, traduzir endereços IP para nomes de domínio. Se o cliente já sabe o endereço IP, mas quer ter certeza de que determinado nome está associado àquele endereço pode fazer a pesquisa reversa. Isto é de suma importância para servidores de email por exemplo. Se ele recebe um email do servidor de endereço IP 192.0.2.55 dizendo ser uma mensagem de "obama@whitehouse.gov", ele precisa ter certeza de que este endereço IP realmente pertence ao servidor de email do domínio "whitehouse.gov", caso contrário a mensagem é caracterizada como SPAM.
Primeiramente o endereço IP é colocado de forma invertida e adicionado a zona "in-addr.arpa", assim: "55.2.0.192.in-addr.arpa".
Esta zona "in-addr.arpa"é especial e específica pare resoluções reversas. A pesquisa é feita da mesma maneira que uma pesquisa normal.
Se as zonas dos nomes de domínio são delegadas a partir dos servidores raiz, os endereços IP são delegados a partir dos registros regionais de internet(RIRs). Cada bloco de endereços IP é atribuído à um registro(como o Lacnic), os registros regionais atribuem sub-blocos à empresas(sistemas autônomos) ou à registros nacionais, como o Nic.br. Por exemplo o endereço IP 200.160.0.10, que é do servidor "A.dns.br", é derivado do bloco 200. Então a zona "200.in-addr.arpa"é delegada aos servidores reversos do Lacnic.
Para tirar a prova pergunte à um root server sobre o servidor de nomes(NS) da zona "in-addr.arpa":
nslookup -type=NS in-addr.arpa a.root-servers.net
Tendo agora os endereços dos servidores raiz da zona reversa("in-addr.arpa") podemos perguntar à eles sobre o autoritativo da zona "200.in-addr.arpa", e ao responsável desta zona qual é o autoritativo da zona "160.200.in-addr.arpa", e assim por diante até chegar no servidor reverso que contém a informação direta do host solicitado e seu endereço IP. Tudo depende de que os sistemas autônomos responsáveis por determinados blocos de endereços IP deleguem aos servidores DNS recursivos as zonas reversas adequadamente.
A tarefa de "amarrar" cada bloco de endereços IP aos usuários dele, e cada endereço à um host dentro da sua rede é bem cuidadosa e foge do escopo deste artigo. Não é necessário alongar muito mais por aqui. Primeiro porque os blocos de endereços IPv4 são extremamente fragmentados, o que pode causar confusão. Em segundo lugar, nem todos os endereços IP são mapeados com nomes DNS. Seria uma tarefa irracional e desnecessária, sem falar sobre os endereços IPv6 que são virtualmente infinitos. A zona reversa para IPv6 é a "ip6.arpa".
Abaixo apresento uma figura com 2 consultas DNS reversas sobre o host "a.dns.br":
Para consultas do tipo reversa você pode usar o parâmetro "-type=PTR" seguida do nome em zona reversa.
E ainda outra imagem com a consulta reversa para o IPv6 do mesmo host:

Caso não tenha ficado claro para você, apresento o esquema de forma enumerada usando o primeiro exemplo do endereço IP 192.0.2.55:
1) O DNS recursivo inverte o IP e adiciona o sufixo ".in-addr.arpa", tornando 192.0.2.55 em "55.2.0.192.in-addr.arpa".
2) O DNS recursivo solicita à um root server o registro reverso(PTR).
O root server envia o endereço do autoritativo de conta da zona do bloco classe A 192("192.in-addr.arpa"). Geralmente o DNS de um RIR(Registro Internet regional).
3) o DNS recursivo pergunta ao DNS do RIR pele registro reverso "55.2.0.192.in-addr.arpa". O servidor do RIR vai enviar os dados do autoritativo da organização que recebeu os sub-blocos. Geralmente o provedor de acesso ou conteúdo.
4) O DNS recursivo pergunta ao servidor do provedor pelo registro PTR de "55.2.0.192.in-addr.arpa".
O servidor do provedor vai finalmente informar o nome. Ou então, caso os IPs estiverem alocados para um cliente, informará os servidores DNS reversos deste cliente.
5) Finalmente o DNS recursivo pergunta ao servidor DNS da organização sobre o nome de "55.2.0.192.in-addr.arpa". Então o servidor da organização responsável pelo bloco de endereços IP responde com o nome adequado.

O Whois

Whois é um serviço complementar ao DNS que fornece informações de contato sobre domínios registrados na Internet. Ele trabalha similar ao DNS, mas na porta 43, e com uma hierarquia de servidores começando pela IANA. O serviço de whois serve para que saibamos quem, ou qual empresa, registou determinado domínio e quais as informações para entrarem em contato com eles, e ainda os servidores DNS autoritativos da zona. Você pode usar o serviço de whois via web em algum site que o ofereça, como no Registro.br, ou mesmo executando o comando whois no Linux. No Windows não há comando nativo, mas podemos usar o executável do Sysinternals Suite, disponível aqui:
Ele informa a empresa responsável pelo domínio e informações de contato como email do administrador, servidores DNS e até o CNPJ.
Muito se discute sobre a questão da privacidade, cada país de acordo com a sua zona(.BR por exemplo) tem políticas para as informações que devem ser disponibilizadas no serviço.

Tutorial DNS - Parte 3 - Resource records

$
0
0
A segunda parte desta série apresentou alguns detalhes mais técnicos sobre a mecânica do serviço de DNS. Para completar vamos entender os tipos de registros DNS e suas aplicações.

Resourse records

O serviço de DNS é composto por um conjunto de tipos de registros chamados "Resourse records". Cada um possui um código numérico que é transmitido no cabeçalho do pacote DNS. Um usuário ou um recursivo fazendo uma pesquisa pode querer saber vários tipos de informações diferentes sobre um host ou uma zona, como por exemplo seu endereço IPv6, IPv4, ou quem é o autoritativo daquela zona.
Outro exemplo didático são os servidores de email. Quando enviamos um email para ´"fulano@blogger.com" o nome do endereço de email sugere um usuário "fulano" dentro de um domínio. Você poderia pensar, a princípio, que a mensagem seria enviada ao servidor "blogger.com" ou algo do tipo, mas na grande maioria das vezes não é nem de longe assim. É necessário perguntar para o dono(servidor autoritativo) da zona "blogger.com" quem é o "Mail exchanger"(servidor de email) daquela zona. Este "Mail exchanger" quase sempre é um servidor completamente fora daquela zona, que pode ser hospedado em outro grupo de serviços na Internet.
Vejamos os principais tipos de registros DNS:

SOA - ID 6

SOA significa "start of authority". É o cabeçalho principal de uma zona. Nele é informado o servidor autoritativo primário da zona, email de contato do administrador e informações de tempo de vida aplicável nas pesquisas.

A e AAAA - IDs 1 e 28 - Endereço IPv4 e IPv6

Estes são os registros principais do sistema. Um registro tipo A informa o(s) endereço(s) IPv4 do host, da mesma maneira o AAAA(quad A) para IPv6. O DNS é sempre comparado à um catálogo telefônico, você pesquisa por um nome e ele informa seu endereço numérico. Este procedimento é feito exatamente usando os registros tipo A e AAAA. Veja o exemplo abaixo:
Zona: empresa.com.br.
www A 192.0.2.50     #End. IPv4 do host "www.empresa.com.br"
www AAAA 2001:db8:faca::50   #End. IPv6 de "www.empresa.com.br"
mail A 192.0.2.82     #End. IPv4 de "mail.empresa.com.br"
mail AAAA 2001:db8:faca::82  #End. IPv6 de"mail.empresa.com.br"
smtp CNAME mail.empresa.com.br. #"smtp.empresa.com.br"é um apelido do host "mail.empresa.com.br"

CANAME - ID 5 - Alias, apelido, alcunha

É possível dar apelidos à hosts no DNS. Por exemplo posso dizer que "smtp.exemplo.com"é um apelido para o host "email.exemplo.com.br" sem problema algum. O primeiro é apenas um alias para um outro host que não necessariamente está na mesma zona DNS. Você diz qual o apelido e à quem ele pertence indicando o seu FQDN. Veja o exemplo do Gmail:
O host "www.gmail.com" na verdade é um alias para "googlemail.l.google.com". Repare que são domínios diferentes.

MX - ID 15 - Mail exchanger ou servidor de email

Um outro registro importante é o MX, que indica os servidores de email que respondem por determinada zona. Naturalmente isto dá uma camada de flexibilidade na estrutura DNS, o seu servidor de email não precisa nem mesmo ser um host na sua estrutura, pode ser totalmente terceirizado. Por exemplo quando enviamos um email para "fulano@globo.com", para que a mensagem seja entregue, o remetente pergunta quem é o servidor de email responsável pelo domínio "globo.com", que na verdade são servidores da locaweb. Veja:

NS - ID 2 - Name Server

Este registro indica quem é o NS(Servidor de nomes) responsável pela zona. Quando você registra um domínio ".br", por exemplo, e indica os seus servidores DNS autoritativos, o que acontece é que no arquivo da zona ".br" os seus servidores são registrados como NS da sua zona. Veja mais um teste com o nslookup perguntando à um servidor da zona ".br" sobre o NS de "planalto.gov.br":
Estes são os "donos" da zona "planalto.gov.br", e seus respectivos endereços IP são dados como GLUE records.

Você pode ver uma lista detalhada dos resourse records no artigo da Wikipedia.

A ferramenta NSlookup

Como vê nas imagens acima, você pode sempre fazer os testes usando o comando NSLOOKUP e especificando o tipo de record que deseja, com a seguinte sintaxe:

nslookup -type="Tipo de registro""nome do host/Domínio" [Servidor DNS]

Repare que o ultimo parâmetro é opcional. Se você não especificar qual servidor DNS vai perguntar será usado o indicado na configuração do computador.
Exemplo, vamos perguntar para o servidor autoritativo da zona ".COM.BR" quem são os autoritativos da sub-zona "GLOBO.COM.BR":
 
 Ele me devolve os nomes dos servidores e seus respectivos endereços IP(Glue Records).
Em outro exemplo pergunto ao servidor do OpenDNS qual é o endereço IPv6 de "www.facebook.com.br".

Novamente temos um caso de alias. O nome solicitado é um apelido do host de FQDN "star-mini.c10r.facebook.com".
O NSLOOKUP é nativo em Windows e Linux. Existem também os comandos "host" e "dig", nativos no pinguim.

Transição para o IPv6 - Happy eyeballs e DNS64

Como vivemos numa época de transição para o novo protocolo algumas coisas devem ser feitas para amenizar o choque. Uma delas é o algorítimo "Happy eyeballs". Quando um cliente solicita o endereço IP de um host e recebe ambos endereços(IPv4 e IPv6), e este host também tiver conectividade IPv4 e IPv6(dual stack), o algorítimo vai determinar qual conexão é mais vantajosa, para o cliente obter uma melhor experiência.
Por outro lado temos o DNS64, que é um serviço para usuários exclusivos de IPv6 se comunicarem com hosts IPv4, usado em conjunto com o NAT64. Veja este vídeo. Basicamente o que ele faz é gerar endereços IPv6 no formato do NAT64(prefixo 64:ff9b::/96) para hosts que tenham apenas endereços IPv4. A segunda parte do processo é feita pelo gateway NAT64, deixando tudo transparente para os clientes IPv6. Esta técnica já é amplamente usada em operadoras móveis fora do Brasil, onde a escassez de IPv4 é bem maior. O Google também oferece um serviço de DNS64 público, veja aqui.


Faltou falar sobre registros PTR para resoluções reversas. Esta parte merece um outro texto mais completo apenas sobre DNS reverso. Fica para uma outra oportunidade.

Frame Rewrite - Desenhando para entender.

$
0
0
Um conceito um pouco confuso as vezes, para quem é iniciante, é o de "frame rewrite". Explico.
 Quando um host envia um pacote para um host em uma rede remota, naturalmente o pacote vai ser encaminhado para o roteador. Mas como é possível enviar um pacote para um host/Roteador sem que seja para ele exatamente?
Você pode cair na engano de achar que o roteador vai adivinhar para onde este pacote deve ir, ou que existe um outro campo no cabeçalho IP para tratar disso. Alguns chegam a pensar que ao enviar um pacote para um host fora da sua rede o processo do ARP corre normalmente, e ficam confusos ao perceber que eles não aparecem na tabela ARP.
Pode parecer muito bobo, mas é uma dúvida comum e uma coisa que não fica muito clara para iniciantes.
Quando é necessário montar um pacote para um endereço que está fora da sua rede, para ser bem óbvio, no campo "IP de destino" vai ser colocado exatamente o IP de destino. Já no campo MAC de destino será colocado simplesmente o MAC do roteador definido na sua configuração.
Se tudo ocorrer bem, o switch vai encaminhar este frame para o roteador, por causa do MAC, e o roteador, ao recebê-lo, analisando o IP de destino, verá que se trata de um pacote para um outro nó, e que deve ser encaminhado. O conceito de frame rewrite entra exatamente aqui.

Ao receber o frame o roteador vai descartar o cabeçalho de camada 2. Em seguida analisa a tabela de roteamento e decide por qual interface este pacote deve sair. Por fim, um novo cabeçalho de camada 2 será feito para o pacote, contendo o MAC de origem da interface pela qual saiu, e o MAC de destino do próximo nó(pode ser o próprio destino ou um outro roteador).
Veja que, do ponto de vista da camada 2, o host se comunica apenas com o roteador, não tendo o menor sentido saber o MAC address do host remoto.
Viewing all 34 articles
Browse latest View live