terça-feira, 23 de janeiro de 2018

Configurando um servidor DHCP


Hoje em dia, quase todas as redes utilizam algum tipo de servidor DHCP. Em geral, eles são ativados automaticamente ao compartilhar a conexão ou junto com algum outro serviço, de forma que você acaba não aprendendo muita cois# service dhcpd restart
 
Com o servidor DHCP configurado, você pode testar a configuração em um dos clientes Linux, configurando a rede usando o "dhclient", seguido da interface a ser configurada. Ele mostra toda a negociação entre o servidor e o cliente, o que permite que você verifique se o servidor está usando a configuração definida por você:

a sobre a sua configuração.

De um modo geral, o trabalho de um servidor DHCP é bastante simples. Ele responde aos pacotes de broadcast das estações, enviando um pacote com um dos endereços IP disponíveis e os demais dados da rede. Os pacotes de broadcast são endereçados ao endereço "255.255.255.255" e são retransmitidos pelo switch da rede para todas as portas, diferente dos pacotes endereçados a um endereço específico, que são transmitidos apenas na porta relacionada a ele.

Periodicamente o servidor DHCP verifica se as estações ainda estão lá, exigindo uma renovação do "aluguel" do endereço IP (opção "lease time"). Isso permite que os endereços IP sejam gastos apenas com quem realmente estiver online, evitando que os endereços disponíveis se esgotem.

O servidor DHCP mais usado no Linux é o ISC DHCP, desenvolvido pela Internet Systems Consortium, uma organização sem fins lucrativos dedicada a desenvolver serviços de infra-estrutura usados na Internet, incluindo o Bind e o NTPD. Caso esteja curioso, a página com o código fonte é a: http://www.isc.org/sw/dhcp/.

Nas distribuições derivadas do Debian, o pacote correspondente ao servidor DHCP se chama "dhcp3-server" e pode ser instalado via apt-get:

# apt-get install dhcp3-server

Com o pacote instalado, você pode ativar e desativar o serviço usando os comandos:

# /etc/init.d/dhcp3-server start
# /etc/init.d/dhcp3-server stop

Como você pode imaginar, o "3" corresponde à versão do software. 

Eventualmente ele será substituído pelo "dhcp4-server", o que resultará também na mudança do nome da pasta onde fica o arquivo e do script de inicialização referente ao serviço.

No Fedora e no CentOS, o pacote se chama simplesmente "dhcp" e pode ser instalado usando o yum:

# yum install dhcp

Embora o pacote se chame apenas "dhcp", o script referente ao serviço se chama "dhcpd", de forma que os comandos para iniciar e parar o serviço são:

# service dhcpd start
# service dhcpd stop

Diferente do Debian, o serviço não será configurado para ser inicializado durante o boot depois de instalado. Você precisa ativá-lo manualmente usando o comando "chkconfig":

# chkconfig dhcpd on

O arquivo de configuração é o "dhcpd.conf". Nas distribuições derivadas do Debian, o caminho completo para ele é "/etc/dhcp3/dhcpd.conf", enquanto no Fedora e no CentOS é apenas "/etc/dhcpd.conf", ou seja, um diretório acima.

Apesar dessas diferenças estéticas, o que interessa mesmo é a configuração do arquivo e esta sim é igual, independentemente da distribuição. Este é um exemplo de arquivo de configuração básico:

# /etc/dhcp3/dhcpd.conf
ddns-update-style none;default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.199;
option routers 192.168.1.1;
option domain-name-servers 208.67.222.222,208.67.220.220;
option broadcast-address 192.168.1.255;
}

A opção " default-lease-time" controla o tempo de renovação dos endereços IP. O "600" indica que o servidor verifica a cada dez minutos se as estações ainda estão ativas. Se você tiver mais endereços IP do que máquinas, os endereços IP das estações raramente vão precisar mudar. Mas, no caso de uma rede congestionada, o "max-lease-time" determina o tempo máximo que uma estação pode usar um determinado endereço IP. Isso foi planejado para ambientes onde haja escassez de endereços IP, como, por exemplo, em um provedor de acesso, onde sempre existem mais clientes do que endereços IP disponíveis e se trabalha contando que nem todos vão ficar conectados simultaneamente. Em condições normais, essas duas opções não são muito importantes. 

O que interessa mesmo é o bloco que vai logo abaixo, onde ficam as configurações da rede.

A opção "range" determina a faixa de endereços IP que será usada  pelo servidor. Se você utiliza a faixa de endereços 192.168.1.1 até 192.168.1.254, por exemplo, pode reservar os endereços de 192.168.1.1 a 192.168.1.100 para estações configuradas com IP fixo e usar os demais para o DHCP, ou então reservar uma faixa específica para ele, de 192.168.1.101 a 192.168.1.201, por exemplo. 

O importante é usar faixas separadas para o DHCP e os micros configurados com IP fixo.

Na "option routers" vai o endereço do default gateway da rede, ou seja, o endereço do servidor que está compartilhando a conexão. Não é necessário que o mesmo micro que está compartilhando a conexão rode também o servidor DHCP. Pode ser, por exemplo, que na sua rede o gateway seja o próprio modem ADSL que está compartilhando a conexão e o DHCP seja um dos PCs.

A opção "option domain-name-servers" contém os servidores DNS que serão usados pelas estações. Ao usar dois ou mais endereços, eles devem ser separados por vírgula, sem espaços. Em geral, você vai usar os próprios endereços DNS do provedor, a menos que você configure um servidor DNS interno na sua rede (que pode ser instalado no próprio micro que está compartilhando a conexão e rodando o DHCP). Estes serviços consomem poucos recursos da máquina.


 O servidor DNS mais usado no Linux é o Bind. Nas distribuições derivadas do Debian você pode instalá-lo com um "apt-get install bind". O servidor DNS pode ser configurado para implementar um sistema de domínios e subdomínios na sua rede, mas o uso mais comum é simplesmente fazer um "cache", onde o servidor DNS simplesmente repassa as requisições para um dos 13 root servers da internet e vai armazenando os endereços que já foram acessados. Mais adiante teremos um capítulo inteiro dedicado a ele.

Você pode substituir o arquivo de configuração padrão por este modelo, ou editá-lo conforme a necessidade. Ao fazer qualquer alteração no arquivo, você deve reiniciar o servidor DHCP usando o comando:

# /etc/init.d/dhcp3-server restart
ou:

# service dhcpd restart
Com o servidor DHCP configurado, você pode testar a configuração em um dos clientes Linux, configurando a rede usando o "dhclient", seguido da interface a ser configurada. Ele mostra toda a negociação entre o servidor e o cliente, o que permite que você verifique se o servidor está usando a configuração definida por você:

# dhclient eth0
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth1/00:15:00:4b:68:db
Sending on LPF/eth1/00:15:00:4b:68:db
Sending on Socket/fallback
DHCPREQUEST on eth1 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.199 -- renewal in 245 seconds.
Como você pode ver, o cliente deve receber a resposta a partir do endereço IP do servidor rodando o servidor DHCP e ser configurado com um endereço dentro da faixa definida por você.
Uma observação importante é que sempre que configurar um servidor com duas placas de rede, você deve configurar o servidor DHCP para escutar apenas na placa da rede local. No Debian, esta configuração vai no arquivo "/etc/default/dhcp3-server". Procure pela linha:
INTERFACES=""
... e adicione a placa que o servidor DHCP deve escutar, como em:
INTERFACES="eth0"
Para que a configuração entre em vigor, basta reiniciar o serviço novamente.

Entenda como Funciona o Protocolo TCP-IP

O tcp-ip (Protocolo de controle de transmissão) é o mais utilizado nos dias de hoje e neste tutorial eu vou explicar como ele trabalha de uma forma simples e compreensível. Ao final você vai entender porque os dados precisam ser organizados para então ser transmitidos e como isso é feito no protocolo tcp-ip.

Então, o que é protocolo tcp-ip ? O protocolo é como uma linguagem utilizada para fazer dois computadores ou um computador e um dispositivo (como o CLP) conversarem entre si. Antes de ir mais afundo neste tutorial, é recomendado que você saiba como funciona o modelo OSI, que é fundamental para entender como o protocolo tcp-ip funciona.

tcp-ip não é propriamente um protocolo, mas um conjunto deles ou uma pilha de protocolos como usualmente é chamado e o próprio nome já se refere a dois protocolos diferentes: TCP (Transmission Control Protocol) e IP (Internet Protocol). Existem vários outros protocolos relacionados ao TCP-IP em que podemos citar alguns: FTP, HTTP, SMTP e UDP e neste artigo explicaremos como funciona cada um deles.

Arquitetura do TCP-IP:


tcp ip modelo osi tcp ip modelo osi
Como podemos observar na Figura acima, o TCP-IP possui 4 camadas sendo que o início se dá com o programa conversando na camada de aplicação. Nesta camada você vai encontrar protocolos como o SMTP (para e-mail), FTP (para transferência de arquivos) e HTTP (para navegar na internet) e cada tipo de programa fala para um protocolo diferente da camada de Aplicação, dependendo do propósito do programa.

Depois de processar a requisição, o protocolo na camada de Aplicação vai falar com outro protocolo na camada de Transporte, usualmente o TCP. Esta camada é responsável por pegar o dado enviado pela camada de Aplicação, dividindo este dado em pacotes a fim de enviar ele para a camada inferior, a da Internet. Também, durante o recebimento do dados, a camada de Transporte é responsável por colocar os pacotes de dados recebidos da camada de Internet em ordem (os dados podem ser recebidos fora de ordem) e também checar se o conteúdo dos pacotes estão intactos.

Na camada da Internet, nós temos o IP (Internet Protocol), que pega os pacotes recebidos da camada de Transporte e adiciona uma informação de endereço virtual. Exemplo: adiciona o endereço do computador que está enviando dados e o endereço do computador que vai receber estes dados. Estes endereços virtual são chamados de endereços IP. Então o pacote é enviado para a camada inferior, Interface de Rede e quando dos dados chegam nesta camada, eles são chamados de datagramas.

A Interface de Rede vai pegar os pacotes enviados pela camada de Internet e enviar através da rede (ou receber da rede, se o computador estiver recebendo dados). O que vai ter dentro desta camada vai depender do tipo de rede que o computador estiver inserido. Hoje em dia, o tipo de rede mais utilizado para comunicação entre computadores é a Ethernet (que é avaliada em diferentes faixas de velocidade) e pode ser cabeada (cabo de par trançado CAT5 ou CAT6) ou WI-FI (sem fio). Ainda dentro da camada de Interface de Rede Ethernet, você deve encontrar camadas Ethernet como a LLC (Logic Link Control), MAC (Media Access Control) e a Física que é o meio físico (cabo por exemplo). Os pacotes transmitidos através da rede são chamados de quadros.

1 – Camada de Aplicação

Esta camada faz a comunicação entre os programas e os protocolos de transporte no TCP-IP. Existem diferentes protocolos que trabalham na camada de aplicação e os mais conhecidos são o HTTP (HyperText Transfer Protocol), SMTP (Simple Mail Transfer Protocol), FTP (File Transfer Protocol), SNTP (Simple Network Protocol), DNS (Domain Name System) e Telnet. Abaixo mostramos uma lista dos que podem ser encontrados com uma pequena descrição de cada um:
  • FTP – File Transfer Protocol: Permite a transferência de arquivos entre dois computadores através de login e senha.
  • TFTP – Trivial File Transfer Protocol: Permite a transferência de arquivos entre dois computadores sem a necessidade de login e senha. É mais limitado e pouco utilizado.
  • NFS – Network File System é um protocolo que permite que os sistemas UNIX e Linux montem remotamente sistemas de arquivos entre um e outro.
  • SNMP – Simple Network Management Protocol é utilizado para gerenciar todos os tipos de elementos de rede baseando no envio e recebimento de vários dados.
  • SMTP – Simple Mail Transfer Protocol é utilizado para transporte de e-mail, sendo que o SMTP é uma aplicação utilizada para transporte e não um meio de transporte. Por isso se localiza na camada de Aplicação.
  • HTTP – Hypertext Transfer Protocol é utilizado para transportar páginas HTML de servidores web para navegadores. O protocolo é utilizado para realizar a comunicação entre servidores WEB e Navegadores instalados em computadores clientes.
  • BOOTP – O protocolo Bootstrap é utilizado para designar um endereço IP para computadores que não possuem disco rígido, onde o servidor fornece um arquivo juntamente com o sistema operacional para executá-lo.
  • DHCP – Dynamic host configuration protocol é um método de designar endereços IPs para os computadores conectados na rede e ele é um serviço baseado no servidor que designa automaticamente endereços IPs para cada computador que entra na rede. Este método não exige que você tenha que entrar em cada computador e informar o IP, facilitando mudanças de redes. O DHCP pode executar todas as funções do BOOTP.
  • BGP – Border Gateway Protocol. Quando dois sistemas estão utilizando BGP, eles estabelecem uma conexão TCP, e então enviam um para outro suas tabelas BGP. O BGP utiliza método de vetorização de distância sendo que ele detecta falhas, enviando mensagens de atividade aos seus vizinhos a cada 30 segundos. Ele troca informações sobre redes alcançáveis com outros sistemas BGP, incluindo o caminho completo dos sistemas que estão entre eles.
  • EGP – Exterior Gateway Protocol é utilizado entre roteadores de diferentes sistemas.
  • IGP – Interior Gateway Protocol. O nome é utilizado para descrever o fato de que cada sistema na internet pode escolher seu próprio protocolo de roteamento. RIP e OSPF são exemplos de protocolos de gateway interior.
  • RIP – Routing Information Protocol é utilizado para atualizar dinamicamente tabelas de roteamento em WANs e na internet. O algoritmo vetor distância é utilizado para calcular a melhor rota para o pacote.
  • OSPF – Open Shortest Path First roteamento dinâmico de protocolo. Aqui é aplicado um protocolo de estado de link ao invés de um protocolo de vetor de distância em que ele testa o estado da sua ligação com cada um dos seus vizinhos e envia as informações adquiridas para eles.
  • POP3 – Post Office Protocol version 3 é utilizado por usuários clientes para acessar uma conta de email em um servidor e pegar o e-mail. Como no SMTP, esta não é uma camada de transporte.
  • IMAP4 – Internet Mail Access Protocol version 4 é um substituto para o POP3.
  • Telnet é utilizado para abrir uma sessão remota em outro computador. Ele se baseia em TCP para o transporte e é definido pela RFC854.
Quando você solicita ao seu programa de e-mail para fazer o download dos e-mails que estão armazenados no servidor, você está fazendo uma solicitação na camada de aplicação do TCP-IP, que neste caso é servido pelo protocolo SMTP. Por outro lado, quando você digita www no navegador a fim de abir uma página, o navegador vai requerer o TCP-IP na camada de aplicação servido pelo protocolo HTTP e é pos isso que as páginas iniciam-se com http://.

A camada de Aplicação fala com a camada de transporte através de portas que são numeradas seguindo um padrão para diferentes aplicações. Por exemplo, o protocolo SMTP sempre utiliza a porta 25 e o HTTP sempre utiliza a porta 80. Por outro lado o FTP utiliza a porta 20 (para transmissão de dados) e 21 (para controle).

A utilização do número da porta permite ao protocolo de Tranporte (tipicamente TCP) saber qual o tipo de conteúdo está dentro do pacote (por exemplo, saber que o dado sendo transportado é um e-mail), fazendo com que o lado que está recebendo o dado saiba para qual aplicação esta dado vai. Então, quando um pacote chegar na porta 25, o protocolo TCP vai saber que deve entregar o dado ao protocolo conectado a porta, o SMTP, que por sua vez entrega o dado à aplicação que o requisitou (o programa de e-mail).

Na Figura abaixo podemos ver uma representação de requisições utilizando o TCP-IP:


tcp-ip protocolos tcp ip protocolos

2 – A Camada de Transporte

Quando há a transmissão de dados no TCP-IP, a camada de transporte é responsável por pegar este dado da camada de Aplicação e dividir ele em vários pacotes menores. O TCP (Transmission Control Protocol) é o protocolo mais utilizado na camada de Transporte e como falado anteriormente, ele pode tanto quebrar a informação em pacotes quanto organizar de forma a colocar em ordem a mensagem. Assim, quando ele está recebendo dados, o mesmo tem a função de organizar eles para que a mensagem possa ser interpretada pela camada de Aplicação.

Enquanto o TCP organiza os pacotes, ele também utiliza o sistema de reconhecimento da informação para verificar se os dados estão íntegros. Outro protocolo presente nesta camada é o UDP (User Datagram Protocol) que é utilizado quando dados menos importantes são transmitidos, tipicamente em requisições DNS. Isto porque o UDP não possui as funcionalidades de reorganização das informações nem de verificação da integridade dos dados. 

No entanto, ele é bem mais ráPIDo do que o TCP.

Quando o UDP é utilizado, a aplicação que estiver solicitando os dados que será a responsável por verificar a integridade dos dados e reordenar os pacotes, fazendo a função que o TCP faria.

Ambos os protocolos UDP e TCP vão buscar o dado da camada de Aplicação e acrescentam um endereço virtual (cabeçaho) a cada pacote que por sua vez é removido quando chega no receptor da informação. Neste cabeçalho existem infomações importantes como o número da porta de entrada, a sequência do dado e a soma para verificação da integridade (checksum). Por ter menos funcionalidades, o cabeçalho UDP possui somente 8 bytes enquanto que o cabeçalho TCP possui 20 ou 24 bytes. Abaixo citamos alguns protocolos desta camada que compõem o TCP-IP:
  • TCP – Conexão confiável utilizada para controlar o gerenciamento das aplicações a nível de serviços entre computadores. Faz tanto o transporte em sequência do dado quanto a checagem da integridade dos mesmos.
  • UDP – Conexão não confiável utilizada para controlar o gerenciamento das aplicações a nível de serviços entre computadores e é utilizado para o transporte de algum dados onde a própria aplicação faz a verificação da integridade dos dados;
  • ICMP – Internet control message protocol (ICMP) fornece o gerenciamento e o relatório de erros para ajudar no gerenciamento de dados durante a comunicação entre computadores. Esta conexão é utilizada para reportar o status do computador que está sendo conectado ao computador que está tentando conectar como por exemplo reportar que o computador de destino não está acessível.
  • IGMP – Internet Group Management Protocol utilizado para suportar mensagens multicasting e rastrear grupos de usuários na rede de computadores.
Na Figura abaixo, podemos ver de forma genérica como funciona a camada de Transporte no TCP-IP, tanto transmitindo quanto recebendo dados.


 tcp-ip camada transporte-pacote tcp ip camada transporte pacote

3 – A Camada de Internet

No TCP-IP, cada computador na rede é identificado com um único endereço virtual, chamado de endereço IP. A camada de Rede ou Internet é a responsável por adicionar o cabeçalho no pacote de dado recebido da camada de Transporte onde, onde além de outros dados de controle, será adicionado o endereço IP fonte e o endereço IP de destino, ou melhor, o endereço IP do computador que está enviado o dado e o endereço IP do computador que vai receber o dado.

Se não estiver sendo utilizado nenhum endereço virtual, você deve saber o endereço MAC do computador de destino, que além de ser uma tarefa difícil, não ajuda no roteamento dos pacotes, devido ao fato de que não utilizar a estrutura de nomenclatura tipo árvore. Em outras palavras, com o endereço IP, os computadores de uma mesma rede pertencerão a endereços IPs sequenciais (Ex.: 192.168.1.10 e 192.168.1.12). Já com endereços MAC, como cada máquina conectada na rede tem um único endereço físico, não podemos identificar sequencialmente (Ex.: 00-14-22-01-23-45 e 01-24-10-12-14-54).

O roteamento é o caminho que o pacote de dado deve utilizar para chegar ao seu destino e quando há uma requisição de dado para um servidor, este dado, antes de chegar no seu computador, passa por vários locais (chamados roteadores). Você quer ver como funciona? Basta clicar no menu iniciar do Windows –> Acessórios –> CMD. Depois que abrir o prompt de comando, tente ver qual o caminho percorrido pelo dado quando você tenta acessar o google digitando o comando tracert www.google.com. Veja Figura abaixo:

 tcp-ip camada internet teste tcp ip camada internet teste

Veja pela figura que no meu caso, o dado passa por 10 pontos diferentes até chegar ao seu destino.

Em todas as redes que estão conectadas na internet, existe um dispositivo chamado roteador, que faz a ponte entre os computadores da sua rede local e a internet. Todos os roteadores possuem uma tabela com redes conhecidas e também uma configuração chamada gateway padrão apontando para outro roteador na internet. Quando um computador envia um pacote de dados pela internet, o roteador conectado na sua rede primeiro tenta verificar se o computador de destino é conhecido, em outras palavras, se o outro computador está na mesma rede ou em uma rede que o roteador conhece o caminho. Se não conhece,  envia um pacote de dados para o gateway padrão (outro roteador) e o processo se repete até que o pacote de dado chegue no seu destino e foi isso que aconteceu no exemplo acima.

Existem vários protocolos que trabalham na camada da Internet e podemos citar os seguintes:
  • ARP – Address Resolution Protocol habilita o empacotamento do dado do IP em pacotes ethernet e é o sistema e protocolo de mensagem que é usado para encontrar a ethernet (hardware)  através de um número específico de IP. Sem este protocolo, o pacote de ethernet pode não ser gerado do pacote de IP porque o endereço ethernet pode não ser determinado
  • IP – Internet Protocol. Exceto para ARP e RARP todos os pacotes de dados de todos os protocolos serão empacotados em um pacote de dados IP sendo que o IP fornece o mecanismo para usar o software para endereçar e gerenciar pacotes de dados sendo enviados por computadores.
  • RARP – Reverse address resolution. Este protocolo é utilizado a fim de permitir que um computador sem um armazenamento de dado permanente tenha um endereço IP a partir do seu endereço ethernet.
Como o IP é o mais utilizado, vamos falar um pouquinho sobre ele. O IP é o responsável por pegar o pacote de dados recebido pela camada de Transporte e dividir este pacote em datagramas, que é definido como um pacote sem nenhum sistema de verificação de integridade de dados, ou seja, um protocolo não confiável. Devemos frisar aqui que quando o dado vai ser transferido, o TCP sim implementa este reconhecimento de integridade (acknowledge), fazendo com que mesmo que o IP não seja capaz de reconhecer erros, o TCP o faz, tornando a conexão confiável.

Cada datagrama IP pode ter no máximo 65.535 bytes, incluindo o cabeçalho, que pode utilizar 20 ou 24 bytes dependendo se o campo do cabeçalho denominado opções for utilizado ou não. Assim, datagramas IP podem possuir 65.515 ou 65.511 bytes de dado e caso o pacote recebido pela camada de Transporte for maior do que isto, o protocolo IP vai dividir o pacote em vários datagramas o quanto for necessário.

 tcp-ip camada internet datagrama tcp ip camada internet


Na Figura 4, nós podemos visualizar o datagrama gerado na camada de Internet pelo protocolo IP e é interessante frisar que o que a camada de Internet enxerga como dado é o pacote todo pego da camada de Transporte, incluindo o cabeçalho TCP ou UDP. Este datagrama vai estar sendo enviado para a camada de Interface de Rede (se estamos transmitindo o dado) ou vai  ser pego pela camada de Interface de Rede (se estivermos recebendo o dado).

4 – A Camada de Interface de Rede

No TCP-IP, os datagramas gerados na camada de internet vão ser enviados para a camada inferior, a camada de Interface de Rede, se estivermos enviando dados, ou a camada de Interface de Rede estará recebendo dados da rede e enviando para a camada de Internet, se estivermos recebendo dados.

Esta camada é definida por qual o tipo de rede física seu computador está conectado. Sabemos que quase sempre seu computador estará conectado a rede Ethernet (lembrando sempre que wireless também são redes Ethernet).

Como já sabemos, TCP-IP é um conjunto de protocolos que trabalham nas camadas 3 a 7 do modelo OSI e a Ethernet é um conjunto de protocolos que pertencem às camadas 1 e 2 do modelo OSI. Isso significa que a Ethernet lida com o aspecto físico da rede, complementando o TCP-IP que lida com os dados especificamente.

A Ethernet possui três camadas a citar: Logic Link Control (LLC), Media Access Control (MAC) e Physical. As camadas LLC e MAC correspondem juntas a segunda camada do modelo OSI e você pode ver a arquitetura Ethernet na Figura 6.

A camada LLC é responsável por adicionar informação sobre qual o protocolo na camada de Internet vai entregar dados para ser transmitido e por este motivo, quando esta camada receber um pacote da rede, ela deve saber para qual protocolo da camada de Internet deve ser entregue o dado.

A camada Media Access Control (MAC) é responsável por montar o quadro que vai ser enviado pela rede e adiciona tanto o endereço fonte MAC quanto o endereço destino MAC. Como explicado anteriormente o endereço MAC é um endereço físico da placa de rede do computador.

Já a camada física é responsável por converter o quadro gerado pela camada MAC em eletricidade (se for uma rede cabeada) ou em ondas eletromagnéticas (se for uma rede wireless). Tanto a camada LCC quanto a MAC acrescentam seu próprio cabeçalho ao datagrama vindo da camada de Internet. Assim, uma estrutura completa de quadros gerados por estas duas camadas podem ser vistas na Figura 7. Veja que os cabeçalhos adicionados pela camada superior podem ser visto como dado pela camada LLC e a mesma coisa ocorre com o cabeçalho adicionado pela LLC que pode ser visto pela camada MAC como um dado.

A camada LLC adiciona cabeçalhos de 3 ou 5 bytes e este datagrama possui um tamanho máximo de 1500 bytes, formando um máximo de 1.497 ou 1.492 bytes por dado. A camada MAC adiciona um cabeçalho de 22 bytes e 4 bytes CRC (correção de dado) no final do datagrama rebebido da camada LLC, formando o quadro Ethernet. Assim, o tamanho máximo de um quadro Ethernet é de 1.526 bytes.

 tcp-ip ethernet camadas tcp ip ethernet camadas

Os protocolos que fazem parte da camada de Interface de Rede do TCP-IP são:
  • SLIP – Serial Line Internet Protocol. Este protocolo coloca pacotes de dados em quadros em preparação para o transporte através do hardware de rede, sendo utilizado para enviar dados por linhas seriais. Aqui, não há correções de erros, endereçamento ou identificação de pacotes e também não temos autenticação sendo que o SLIP suporta apenas o transporte de pacotes IP.
  • CSLIP – Compressed SLIP é a compressão de dados essencial para o protocolo SLIP que utiliza a compressão Van Jacobson capaz de reduzir drasticamente o tamanho do pacote também podendo ser utilizado com o PPP sendo chamado de CPPP.
  • PPP – Point to Point Protocol é uma forma de encapsulamento de dados serial que representa uma melhoria com relação ao SLIP capaz de prover uma comunicação serial bidirecional e é bem parecido com o SLIP, se diferenciando por suportar AppleTalk, IPX, TCP/IP e NetBEUI junto com o TCP/IP.
  • Ethernet – Como vimos Ethernet é um conjunto de camadas e provem o encapsulamento de quadros antes de serem enviados para computadores.

terça-feira, 8 de novembro de 2016

Lecionando Politica com Bom Humor


Mudando de Assunto

Este momento te aceito DEUS TODO PODEROSO e em nome de NOSSO SENHOR JESUS CRISTO, ouvirei tua palavra e trilharei teu caminho.

Afaste de mim DEUS TODO PODEROSO pessoas que queiram meu mal, e que a bondade e a esperança em tudo que é belo faça parte da minha vida.

Tu meu DEUS NOSSO SENHOR JESUS CRISTO agora é o meu senhor, quero ter olhos para tua verdade e que eu não tenha mais questionamentos do que é certo, porque tu meu DEUS é a verdade e o verdadeiro e único caminho para ressurreição da minha alma.

Obrigado meu DEUS pelas provações que impuseste na minha vida, porque elas me fizeram crescer como homem, mas o importante de tudo é que sempre estiveste ao meu lado.

Em nome de JESUS CRISTO, acolhe em tua casa esta criatura de DEUS, que necessita  de teu perdão e misericórdia, e, que através da tua presença a iluminação da minha alma seja completa.

quarta-feira, 8 de maio de 2013

UltraSurf NUNCA MAIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Como Fazer para Bloquear o UltraSurf, Solução Definitiva [iptables + fail2ban]

Essa semana fazendo a revisão do firewall de um cliente eu consegui bloquear o acesso as redes BitTorrent e ao terrível UltraSurf.
Vou descrever como fiz para bloquear o UltraSurf.

O problema

Em um primeiro momento eu acreditei que seria fácil bloquear o UltraSurf, porém o uso de proxy transparente obriga que a porta 443 (HTTPS) fique liberada, o BitTorrent foi bloqueado sem dificuldades.
Com o uso do tcpdump eu identifique que todo o acesso do UltraSurf sai pela porta 443, logo a solução mais obvia seria bloquea-la, porém não é possível. Bloquear o IP ou range de IP do servidor de destino seria outra opção.
Quando fiz o bloqueio pelo range de IP, descobri que o UltraSurf tenta uma centena de IPs diferentes até conseguir o acesso que ele precisa, e certamente devem existir novos IPs a cada nova versão.
Pesquisei pelo Google e não encontrei nenhuma forma eficiente de bloquear o UltraSurf, foi então que tive pensei o seguinte.
Criar uma regra no iptables e fazer log dos acesso ao IP do UltraSurf, depois criar um daemon para ler esse log e fazer um bloqueio em tempo real.
Bem, chega de bla bla e vamos por a mão na massa.

Começando

Vamos lá, esse pequeno tutorial é para tratar um problema especifico, sendo assim eu suponho que você já sabe usar o iptables, afinal já está aqui buscando uma forma de fazer um bloqueio mais avançado, rs
Acredito que essa solução possa ser utilizada por todos, para firewall simples até o mais complexo.
Eu estou usando Debian 5.0.3, iptables 1.4.2 e fail2ban 0.8.3.
Qualquer dúvida, problema ou sugestão podem deixar um comentário.
No final você encontra os arquivos de configuração para download.

iptables

Essa parte é bem simples, no seu script de firewall adicione a seguinte linha.
?
1
iptables -A FORWARD -d 65.49.14.0/24 -j LOG --log-prefix "=UltraSurf= "
A rede 65.49.14.0/24 é a primeira a ser contactada pelo UltraSurf quando ele é aberto, a regra acima apenas gera um LOG, não existe bloqueio do acesso, em um primeiro momento o usuário vai até pensar que está funcionando.
ATENÇÃO
Coloque essa regra antes da regra com o modulo state (-m state –state ESTABLISHED,RELATED).
Se colocar depois os pacotes das conexões já estabelecidas não irão para o LOG e pode gerar falhas no bloqueio.

fail2ban

O fail2ban é uma ferramenta muito boa para a segurança de servidores, em linhas gerais ela faz o seguinte.
Lê algum arquivo de log, compara com uma expressão regular e em caso positivo ele executa algum comando no sistema.
Por padrão ele monitora o log do SSH e em caso de falhas consecutivas no acesso ele cria uma regra no iptables para bloquear o possível invasor.

Instalando

Como eu estou utilizando o Debian e vou instalar pelo apt-get.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# apt-get install fail2ban
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  python-gamin
The following NEW packages will be installed:
  fail2ban
0 upgraded, 1 newly installed, 0 to remove and 100 not upgraded.
Need to get 86.2kB of archives.
After this operation, 631kB of additional disk space will be used.
Get:1 http://ftp.br.debian.org stable/main fail2ban 0.8.3-2sid1 [86.2kB]
Fetched 86.2kB in 0s (419kB/s)
Selecting previously deselected package fail2ban.
(Reading database ... 38547 files and directories currently installed.)
Unpacking fail2ban (from .../fail2ban_0.8.3-2sid1_all.deb) ...
Processing triggers for man-db ...
Setting up fail2ban (0.8.3-2sid1) ...
Depois de instalado vamos acessar o diretório de configuração
?
1
# cd /etc/fail2ban/
Aqui vamos criar um arquivo chamado jail.local
?
1
vi /etc/fail2ban/jail.local
Vamos adicionar o conteúdo abaixo ao arquivo jail.local.
?
1
2
3
4
5
6
7
8
9
[ultrasurf]
enabled   = true
filter    = ultrasurf
port      = all
banaction = iptables-ultrasurf
logpath   = /var/log/messages
maxretry  = 6
# Tempo em segundos que o IP fica bloqueado, aqui 15 minutos
bantime   = 900
Vamos criar o arquivo com a expressão regular que irá filtar o log do iptables.
?
1
vi /etc/fail2ban/filter.d/ultrasurf.local
Aqui vamos adicionar uma expressão regular simples ao arquivo ultrasurf.local.
?
1
2
3
[Definition]
failregex = (.*)=UltraSurf=(.*) SRC=<HOST>
ignoreregex =
Apesar de simples, funciona :)
Agora o arquivo que irá executar o iptables e criar as regras necessárias para o bloqueio e desbloqueio.
?
1
vi /etc/fail2ban/action.d/iptables-ultrasurf.local
Aqui é onde a magica acontece, adicione o conteúdo abaixo ao arquivo iptables-ultrasurf.local.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Definition]
 
actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I INPUT -j fail2ban-<name>
              iptables -I FORWARD -j fail2ban-<name>
 
actionstop = iptables -D FORWARD -j fail2ban-<name>
             iptables -D INPUT -j fail2ban-<name>
             iptables -F fail2ban-<name>
             iptables -X fail2ban-<name>
 
actioncheck = iptables -n -L FORWARD | grep -q fail2ban-<name>
              iptables -n -L INPUT | grep -q fail2ban-<name>
 
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j REJECT
 
actionunban = iptables -D fail2ban-<name> -s <ip> -j REJECT
 
[Init]
name = ultrasurf
Agora basta reiniciar o Daemon
?
1
/etc/init.d/fail2ban restart
Pronto, agora é só olhar o log do fail2ban e esperar pelo primeiro bloqueio.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# tail -f fail2ban.log
2012-01-13 19:11:36,890 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.3
2012-01-13 19:11:36,891 fail2ban.jail   : INFO   Creating new jail 'ultrasurf'
2012-01-13 19:11:36,891 fail2ban.jail   : INFO   Jail 'ultrasurf' uses poller
2012-01-13 19:11:36,901 fail2ban.filter : INFO   Added logfile = /var/log/messages
2012-01-13 19:11:36,902 fail2ban.filter : INFO   Set maxRetry = 6
2012-01-13 19:11:36,903 fail2ban.filter : INFO   Set findtime = 600
2012-01-13 19:11:36,903 fail2ban.actions: INFO   Set banTime = 900
2012-01-13 19:11:36,912 fail2ban.jail   : INFO   Creating new jail 'ssh'
2012-01-13 19:11:36,912 fail2ban.jail   : INFO   Jail 'ssh' uses poller
2012-01-13 19:11:36,913 fail2ban.filter : INFO   Added logfile = /var/log/auth.log
2012-01-13 19:11:36,914 fail2ban.filter : INFO   Set maxRetry = 6
2012-01-13 19:11:36,915 fail2ban.filter : INFO   Set findtime = 600
2012-01-13 19:11:36,915 fail2ban.actions: INFO   Set banTime = 600
2012-01-13 19:11:36,985 fail2ban.jail   : INFO   Jail 'ultrasurf' started
2012-01-13 19:11:36,997 fail2ban.jail   : INFO   Jail 'ssh' started
2012-01-13 19:11:52,029 fail2ban.actions: WARNING [ultrasurf] Ban 10.23.134.42
2012-01-13 19:13:36,057 fail2ban.actions: WARNING [ultrasurf] Ban 10.23.134.140
2012-01-13 19:26:52,081 fail2ban.actions: WARNING [ultrasurf] Unban 10.23.134.42
2012-01-13 19:28:36,109 fail2ban.actions: WARNING [ultrasurf] Unban 10.23.134.140
2012-01-13 19:33:50,137 fail2ban.actions: WARNING [ultrasurf] Ban 10.23.134.42
2012-01-13 19:48:50,165 fail2ban.actions: WARNING [ultrasurf] Unban 10.23.134.42
2012-01-13 19:53:44,193 fail2ban.actions: WARNING [ultrasurf] Ban 10.23.134.140

segunda-feira, 25 de março de 2013

Servidor de Arquivos – Windows Server 2008

 Publicado em:
10/01/2011
Fonte: http://www.mcsesolution.com.br
  • Servidor de Arquivos – Instalação
É muito importante temos controle da nossa rede, quais arquivos estão sendo gravados no compartilhamento, que tipo de arquivos e também limitando a quantidade de espaço  gravação, sendo assim conseguimos filtrar e deixar um compartilhamento somente para seu devido uso.
Neste tutorial iremos instalar o papel de servidor de arquivos , cota de disco e também como bloquear extensões de arquivos no Windows Server 2008.
Vamos lá:
1. Abra o Server Manager
Start\Administrative Tools\Server Manager
2. Em Roles Summary clique em Add Roles e na janela que se abre clique OK.
Se desejar marque a opção “Skip this page by default” .
3. Na lista de Server Roles, selecione File Services clique Next.

4.Em Role Services selecione também Kiss File Server Resource Manager
 

5.Selecione os discos que deseja monitorar e clique em OPTIONS


6.Marque a opção File Screen Audit Report
 

7.Escolha o caminho para salvar os relatorios e se desejar defina um endereço de e-mail para receber os relatorios.

8. Clique Install e aguarde a instalação ser completada.


Conclusão: Vimos que é simples e facil instalar o papel de servidor de arquivos no Windows Server 2008
  • Servidor de Arquivos -  Cota em Pasta
Neste tutorial iremos implementar um modelo de Cota para utilizar junto ao servidor de arquivos.
Cota de disco ou Pasta é um limite definido pelo administrador a fim de controlar o uso do espaço pelos usuarios. A cota pode ser Hard (não permite gravar após exceder o limite) ou Soft (Apenas para monitorar o uso do espaço).
Com o Windows Server 2008 podemos configurar uma cota de espaço em pastas compartilhadas, por isso é importante criar modelos personalizados para cada tipo de situação.
Cry Ainda podemos definir cota de disco para volumes inteiros no w2k8.
Criar um modelo de cota para a empresa onde os usuarios irão ter disponivel 2 GB onde o modelo for aplicado.
1. Clique Start\ Programs\Administrative Tools\File Server Resource Manager

 
2.Clique em Quota Templates e em seguida clique em Create Quota Template
 
3.É possivel fazer a copia de uma template existente ou criar um novo.
Aqui estamos criando um novo template definindo um espaço de 2GB e não permitindo gravação aos usuarios que excederem a cota.
Em seguida clique em Add.

4.Escolha um valor de controle aqui usaremos 85% .
Se desejar coloque o e-mail do administrador e marque a opção para enviar e-mails para os usuarios que excederam a quota.


5.Em Event Log marque a opção para registrar no log.

6. Em “Report” podemos definir não só os relatorios de Cota como também de Bloqueio de arquivos.
Marque as opções desejadas e clique OK.


7.Clique OK para fechar o assistente.


Conclusão: Vimos que é bem flexivel o modo de criação de modelos de cota, podemos criar varios ou utilizar os existentes.
  • Servidor de Arquivos – Bloqueio de Arquivos
Outro recurso muito importante e facil de implementar é a capacidade de controlar os tipos de arquivos que podem ser gravados nas pastas compartilhadas.
Podemos bloquear a gravação de musica, videos e diversos outros tipos de arquivos já definidos além de poder inserir extensões de arquivos que gostariamos de bloquear.
Criando um modelo de bloqueio de gravação de arquivos do tipo:Musica, Videos e Executaveis.
1. Clique Start\ Programs\Administrative Tools\File Server Resource Manager


2.Clique em File Screen Templates e no painel da direita clique em Create File Screen Template…


3.CryPodemos copiar as propriedades de um template existente mas neste exemplo iremos criar um novo.
Forneça um nome para o template.
Marque Active screening para não permitir a gravação e em seguida selecione os grupos que deseja bloquear.


4. Se desejar coloque o e-mail do Administrador para ser avisado sobre a tentativa de gravação e marque a opção para enviar um email de alerta para os usuarios também.

5.Selecione a opção “Send warning to event log” para adicionar os avisos no event log.


6. Em Report marque a opção “Generate Report” para criar um relatorio que ficará armazenado em
%systemdrive%\StorageReports\Incident\


7. Feche o File Server Resource Manager


Conclusão: Podemos incluir diversos tipos de arquivos a serem monitorados ou bloqueados de gravação.
  • Servidor de Arquivos  – Compartilhamento
1. Clique Start\ Programs\Administrative Tools\Share and Storage Management
Clique em “Provision Share” no painel de ações.

2.Escolha a pasta que deseja compartilhar  (Aqui neste tutorial C:\Public)

3.Clique em “Yes, Change NTFS Permissions” e em seguida clique em “Edit Permissions


6.Clique sobre Users e então selecione Modify, para que os usuarios possam criar e modificar seus arquivos.
Em seguida lique OK.

7.Em share protocol deixe o padrão e clique Next.


8.Forneça uma descrição para a pasta compartilhada e clique em Next.

9.Em SMB permissions selecione “Users and Groups have a custom share permissions


10.Selecione “todos” e marque a permissão “Change

11.Em “Quota policy” , escolha o template que criamos no tutorial Servidor de Arquivos – Parte2 – Cota em Pasta e clique Next


12. Em File Screen Policy selecione o template que criamos no tutorial Servidor de Arquivos – Parte3 – Bloqueio de Arquivos e clique em Next

13.Em DFS clique em Next


14.Revise as opções selecionadas e clique Create


15.Clique em Close


Voce pode testar o compartilhamento utilizando o caminho UNC (universal naming convention)
\\nomedoservidor\compartilhamento
Se esta seguindo todos os tutoriais digite: \\w2k8-dc\public
  • Servidor de Arquivos – Access-Based

Access-based enumeration é um recurso que filtra os usuarios baseados em permissão para que não possam visualizar compartilhamentos no qual não possuam permissão.
Neste tutorial uma pasta “projetos” é compartilhada apenas para os engenheiros e Gerentes de TI. Habilitando o Access-based enumeration usuarios de outros grupos não visualizarão a pasta compartilhada.
1. Clique Start\ Programs\Administrative Tools\Share and Storage Management


2.Clique sobre o compartilhamento que deseja configurar e em seguida clique em properties.
3.Nas propriedades clique em Advanced


4.Marque a opção “Enable access-based enumeration” e clique OK.

É isso pessoal, espero que vocês possam implementar o  servidor de arquivos de vocês e mante-lo gerenciado para seu devido uso.

terça-feira, 12 de fevereiro de 2013

Instalando o OCS Inventory

OCS Inventory é um software utilizado para gerar relatórios das máquinas. Vamos exemplificar: imagine que você tem 100 máquinas em uma rede e precisa tirar um relatório incluindo software e hardware de todas elas, como você faria isso!? Bem, existe uma forma simples, e funcional! Basta usar o OCS Inventory.

Assim, se você tirar um relatório verificando o hardware da máquina e constar uma máquina com 2GB de memória, o OCS cria um relatório com versão para impressão das informações, mas se você retirar uma memória de 1GB, restando apenas 1GB no computador, quando você retirar outro relatório, certamente irá constar lá, apenas 1GB.

Então o que precisamos instalar?

Servidor:
  • OCS Inventory Server
  • OCS Inventory Reports

Cliente:
  • OCS Inventory Agent

Instalação do OCS Inventory com pacotes .deb, utilizando dpkg

Instale as dependências:

# apt-get install build-essential

Acesse o diretório /usr/src e baixe o pacote usando o wget:

# cd /usr/src
# wget -c
http://downloads.aprendendolinux.com/programas/ocsinventory-setup.tar.gz

Descompacte o pacote e entre no diretório:

# tar -zxvf csinventory-setup.tar.gz
# csinventory-setup


Agora instale o "server", que é o primeiro módulo:

# dpkg -i ocsinventory-server_1.02~rc2-1_all.deb

Instale o segundo módulo, que é o "reports":

# dpkg -i ocsinventory-reports_1.02~rc2-1_all.deb

Agora vamos definir a senha para o usuário "admin":

# htpasswd /etc/ocsinventory/htpasswd.setup admin

Após executar o comando acima, defina a senha desejada e confirme digitando novamente.

Para testar, acesse:

http://localhost/ocsreports

Instalação do OCS Inventory utilizando apt-get

Instale as dependências e o banco MySQL:

# apt-get -y install build-essential mysql-server dbconfig-common

Instale o OCS Inventory Server e OCS Inventory Reports:

# apt-get -y install ocsinventory-server ocsinventory-reports

Certamente, você terá que fornecer uma senha que o banco de dados irá pedir, então digite uma senha e guarde-a.

Na configuração do ocsinventory-server irá aparecer algo como:

"Configurar banco de dados para ocsinventory-server com dbconfig-common?"

Escolha a opção "SIM".

Agora forneça a senha que você definiu para o acesso ao banco de dados.

Vamos definir a senha para o usuário "admin":

# htpasswd /etc/ocsinventory/htpasswd.setup admin

Após executar o comando acima, defina a senha desejada e confirme digitando-a novamente.

Para testar, acesse:

http://localhost/ocsreports

Use o usuário "admin" e a senha que você definiu.

Instalando o OCS Inventory Client

Bem, agora como estamos com o nosso servidor instalado e configurado, vamos adicionar máquinas. No cliente, instale o ocsinventory-client usando o apt-get:

# apt-get install ocsinventory-client

Agora vá no servidor, acessando com:

http://IPDOSERVIDOR/ocsreports

E use o usuário que você definiu. O padrão é "admin" e a senha nós definimos usando:

# htpasswd /etc/ocsinventory/htpasswd.setup admin

sexta-feira, 8 de fevereiro de 2013

Como bloquear um IP no Linux usando iptables


Nesta semana, um de nossos parceiros estava recebendo um flood bastante sério em seu servidor de e-mails (IMAP). Determinado endereço IP estava realizando tal ataque.
Jun 12 12:59:03 server dovecot: pop3-login: Disconnected (auth failed, 1 attempts): user=<loan>, method=PLAIN, rip=189.1.**.**, lip=93.104.**.**
Jun 12 12:59:06 server dovecot: pop3-login: Disconnected (auth failed, 1 attempts): user=<loan>, method=PLAIN, rip=189.1.**.**, lip=93.104.**.**
Analizando as mensagens de erro, descobrimos se tratar do IP 189.1.**.** . Para resolver o problema, fizemos o bloqueio do endereço IP que estava originando o ataque, usando o firewall iptables.
Nos exemplos a seguir, substitua sempre o IP 1.2.3.4 pelo IP que deseja bloquear!
Para realizar um simples bloqueio ao IP que causou o ataque:
  • iptables -I INPUT -s 1.2.3.4 -j DROP
Pronto! O IP problemático já estará bloqueado e o servidor não receberá mais nenhum dado dele.
Opções mais avançadas do iptables para realizar bloqueios:
Caso seu servidor tenha mais de uma placa de rede, você pode bloquear apenas em uma placa específica (aonde eth1 é a interface que receberá o bloqueio).
  • iptables -I INPUT -i eth1 -s 1.2.3.4 -j DROP
Como bloquear um range inteiro (subnet) de 254 IPs ? Digamos: 189.1.50.1  até 189.1.50.254 ? Troque o último bloco do IP por “0″ e adicione /24 ao final:
  • iptables -A INPUT -s 189.1.50.0/24 -j DROP
Como bloquear uma sub-rede ainda maior? Por exemplo, 189.1.1.1 até 189.1.254.254 ? Substitua os dois ultimos blocos por “0″ e agora adicione /16 ao final:
  • iptables -A INPUT -s 189.1.0.0/16 -j DROP
Como gerar um log a cada bloqueio realizado com o iptables ?
  • iptables  -A INPUT -s 189.1.50.0/24 -j LOG –log-prefix “IP BLOQUEADO:”
Como exibir todos os IPs bloqueados no sistema?
  • iptables -L -v
Como verificar se determinado IP está ou não bloqueado ?
  • iptables -L -v | grep 1.2.3.4
Como desbloquear um IP ?
  • Digite: iptables -L INPUT -n –line-numbers | grep 1.2.3.4
  • Exemplo de resultado:num   pkts bytes target     prot opt in     out     source               destination
    1        0     0 DROP       0    –  *      *       200.19.18.5        0.0.0.0/0
    2        0     0 DROP       0    –  *      *       201.19.18.100       0.0.0.0/0
    3        0     0 DROP       0    –  *      *       189.19.29.2        0.0.0.0/0
  • Supondo que queremos desbloquear o IP 201.19.18.100 , que está na linha 2:
  • iptables -D INPUT 2
Como salvar as configurações do iptables, para terem efeito após um reboot ?
  •  service iptables save
    less /etc/sysconfig/iptables

segunda-feira, 21 de janeiro de 2013

How to Monitor Squid3 Traffic using SARG in Ubuntu

I’ve installed proxy server using Squid3 on my Ubuntu. Now I want to know “where” my users are going to on the Internet. Therefore we need SARGSquid Analysis Report Generator is a tool that allow you to view many informations about Squid users activities: times, bytes, sites, etc.
First, we need to install Sarg and some web server, I’m using Apache2 here.
 
sudo apt-get install sarg apache2

Before we messed up with Sarg configuration, we need to make a backup file for sarg.conf.
 
sudo cp /etc/sarg/sarg.conf /etc/sarg/sarg.conf.old

Next thing we gonna do is simplified the sarg.conf. This step is optional. It just make you easier to read the sarg.conf file.
 
sudo cat /etc/sarg/sarg.conf.old | grep -v ^# | grep -v ^$ > /etc/sarg/sarg.conf

Here’s my sarg.conf file. You can copy paste it if you want, but make sure to adjust the value of the bold lines. If you are not using Squid3, the common location for the access_log is /var/log/squid/access.log.


language English
access_log /var/log/squid3/access.log
title "Squid User Access Reports"
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
temporary_dir /tmp
output_dir /var/lib/sarg
resolve_ip 
user_ip no
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
exclude_users /etc/sarg/exclude_users
exclude_hosts /etc/sarg/exclude_hosts
date_format u
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
records_without_userid ip
use_comma yes
mail_utility mailx
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
usertab /etc/sarg/usertab
long_url no
date_time_by bytes
charset Latin1
show_successful_message no
show_read_statistics no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg,pdf,tar,rar,docx,pptx,xlsx,chm,flv,mp4,mkv,bz2,deb"

The Sarg configuration is done. Now we need to create a symbolic link of Sarg output directory to our /var/www/ directory.
 
sudo ln -sv /var/lib/sarg/ /var/www/

Now it’s time to try running Sarg manually.
 
sudo sarg-reports today

Open your web browser, and go to http://localhost/sarg/. Make sure you have your web server running.

Next, we need to make sure that Sarg cron job will run before Squid3 logrotate.
 
sudo mv /etc/cron.daily/sarg /etc/cron.daily/ksarg

Normally, Sarg is executed daily, weekly and monthly. But I wanna see the report updated every 5 minutes. So we need to create a new cron job.
 
sudo crontab -e  or  vim /etc/crontab

Insert this line with a simple copy and paste:
 
*/5 * * * * /usr/sbin/sarg-reports today > /dev/null 2>&1

Save and exit from the crontab editor.

That’s all folks. Hope it helps.

terça-feira, 11 de dezembro de 2012

Instalando Agente OCS Manualmente (Windows)

Ambiente Windows:

Faça o download do pacote OCSNG-Windows-Agent-*.zip, a versão mais recente pode ser obtida em http://www.ocsinventory-ng.org.

Descompacte os arquivos e entre no diretório OCSNG-WINDOWS-AGENT-*

Duplo clique em OCS-NG-Windows-Agent-Setup.exe

Surge a tela inicial, clique em Next

Tela inicial

Tela da Licença GNU GPL, clique em I Agree

Licença GNU GPL

Tela de componentes, selecione todos menos a opção "Local inventory (no network connection)" e clique em Next

Tela de componentes

Tela de opções, configure as opções desejadas e clique em Next

Tela de Opções

Server URL --> IP do servidor de OCS.
Server Port --> Porta do Server (80 Default).

Opções de Proxy,  configure as opções desejadas e clique em Next
 
Tela de Proxy

Opções Gerais, selecione  as opções desejadas e clique em Next
 Tela de Opções Gerais

Enable verbose log --> Habilita logs detalhados.
Do not scan for installed Software --> Não realiza o inventário de software.
Never ask for TAG --> Não solicita ao usuário que informe uma TAG.

Do not register service - agent must be launched manually (= /NO_SERVICE)  --> Não cria um serviço no Windows, o agente tem de ser executado manualmente.
Do not register Systray applet to automatically start (= /NO_SYSTRAY) --> Não cria um ícone na bandeja do Windows.

Immediatly launch inventory (= /NOW) --> Envia as informações para o servidor imediatamente.

Local de instalação, clique em Install

Local de Instalação

Processo de instalação, aguarde terminar

Processo de Instalação

Instalação Concluida com sucesso, clique em Finish

Sucesso na Instalação

Verificando o serviço:
Iniciar // Executar // Services.msc

Serviço do Agente OCS NG