Linux e Windows trabalhando juntos para solucionar problemas de pequenos laboratórios.
Com certeza ninguém quer subutilizar ou desperdiçar recursos adquiridos, além do mais quando esses recursos são de alto investimento como os de tecnologia.
A própria tecnologia que muitas vezes é desperdiçada, também oferece mecanismos de controle e fiscalização que evitam esse desperdício.
Um exemplo prático desse mecanismo seria a integração de serviços através de pelo menos dois servidores: um servidor Linux de qualquer distribuição e outro servidor Windows Server 2000 ou 2003, este último recomendado por possuir mais recursos.
Neste cenário o servidor Linux funciona como um firewall, um proxy, além de fazer o serviço de NAT. Já o servidor Windows faz o controle e a configuração do ambiente das máquinas Windows clientes e a distribuição de configuração de IPs para as máquinas clientes através do serviço de DHCP.
Configurando o Servidor Linux
Para aplicar as configurações abaixo citadas, considera-se que o leitor já tenha uma máquina com uma distribuição do Linux qualquer instalada, juntamente com os pacotes necessários para o funcionamento dos seguintes serviços named , squid e iptables , além da instalação física das duas placas de redes.
A configuração dos endereços IP s (Internet Protocol) em duas placas de rede torna-se necessária, pois um endereço de rede fará a ligação com a rede interna e o outro a ligação com a rede externa, como por exemplo, a Internet. (Um exemplo de configuração de placas de rede está no apêndice 1).
O serviço de DNS é necessário para o correto funcionamento da Internet dentro da empresa. Esse serviço deve ser configurado tanto no servidor Linux como no servidor Windows. No o Linux deve-se atentar para que o serviço escolhido seja compatível com o BIND 8 , pois o Active Directory do Windows faz essa exigência. (Um exemplo de configuração do serviço de DNS do Linux está no apêndice 2)
O Linux fornece as ferramentas de filtragem de tráfego necessárias para se criar um firewall simples, combinando as capacidades de roteamento do Linux com os recursos de filtragem do iptables pode-se criar um roteador de filtragem. O Linux tem suporte ao recurso de NAT o que possibilita que todo o tráfego da rede internet em direção a Internet possa ser roteado através do servidor Linux, utilizando apenas um endereço IP válido para todo acesso de internet da empresa .(Um exemplo de configuração do serviço de DNS do Linux está no apêndice 3)
Originalmente o serviço de proxy tem como papel principal a otimização do desempenho do link de Internet, já que esse serviço pode ser configurado para funcionar como um cache das páginas de Internet acessadas, necessitando assim que o servidor de Internet busque apenas uma página, apenas uma vez e nas subseqentes requisições da mesma página, o descarregamento no navegador seria feito através do servidor de proxy utilizando a rede local e não o link de Internet, otimizando assim o tempo de acesso a páginas frequentemente acessadas.
Mas o servidor de proxy Squid além da função de servidor de cache pode funcionar também como um filtro de IPs, permitindo ou não acessos a páginas da web, possibilitando assim uma auditoria de acessos, já que o proxy tem capacidade de armazenar em log todas as conexões feitas através do mesmo. (Um exemplo de configuração do squid.conf está no apêndice 4)
Configurando o Windows Server
O servidor Windows permite que uma série de configurações de ambiente de trabalho dos clientes seja feita de maneira centralizada, definindo desde o papel de parede da estação de trabalho até aos softwares que o usuário tem ou não acesso. Além disso, neste cenário que está sendo montado o servidor Windows pode atuar como servidor de DHCP garantindo automaticamente dessa forma que todas as estações tenham a configuração de servidores DNS e default gateway corretamente configurados.
A opção pelo Windows 2003 como controlador de domínio se dá pelo fato de que hoje ainda temos em maioria, máquinas desktop (máquina do usuário) utilizando o Windows com Sistema Operacional, e por isso sua integração com o servidor Windows Server é nativa, possibilitando com isso o uso de várias ferramentas de administração criadas pela Microsoft e que hoje ajudam o administrador de redes nas questões de centralização, padronização e segurança.
Um domínio representa uma partição lógica de um sistema de serviço de diretórios, em nosso caso o Active Directory da Microsoft. Nesse serviço existe um banco de dados de todos os objetos usados em um ambiente de rede, tais como usuários, computadores, impressoras, pastas compartilhadas, etc.
Para configurar o Windows Server como um controlador de domínio leia o apêndice 5.
Um domínio é representado por um nome DNS. Um serviço de DNS é um sistema de gerenciamento de nomes hierárquico e distribuído operando segundo duas definições:
- Examinar e atualizar seu banco de dados.
- Resolver nomes de servidores em endereços de rede (IPs).
O servidor DNS traduz nomes para os endereços IP e endereços IP para nomes respectivos, e permitindo a localização de hosts em um domínio determinado.
Sua implementação completa é no portal de treinamentos da Microsoft no Brasil, o TechNetBrasil.
Por último é aconselhável se implementar um servidor de DHCP (Dynamic Host Configuration Protocol) que é um serviço que oferece de maneira dinâmica a configuração TCP/IP dos clientes de rede, configurando endereços IP de clientes, o nosso gateway linux e os servidores DNS criados.
O DHCP oferece três tipos de alocação de endereços IP:
- Alocação manual – Onde existe uma tabela de associação entre o Endereço MAC do cliente (que será comparado através do pacote broadcast recebido) e o endereço IP (e restantes dados) a fornecer. Esta associação é feita manualmente pelo administrador de rede; por conseguinte, apenas os clientes cujo MAC consta nesta lista poderão receber configurações desse servidor;
- Alocação automática – Onde o cliente obtém um endereço de um espaço de endereços possíveis, especificado pelo administrador. Geralmente não existe vínculo entre os vários MAC’s habilitados a esse espaço de endereços;
- Alocação dinâmica – O único método que dispõe a re-utilização dinâmica dos endereços. O administrador disponibiliza um espaço de endereços possíveis, e cada cliente terá o software TCP/IP da sua interface de rede configurados para requisitar um endereço por DHCP assim que a máquina arranque. A alocação utiliza um mecanismo de aluguel do endereço, caracterizado por um tempo de vida. Após a máquina se desligar, o tempo de vida naturalmente irá expirar, e da próxima vez que o cliente se ligue, o endereço provavelmente será outro.
O Cliente envia pacote broadcast para a rede pedindo um endereço IP, o servidor DHCP captura este pacote e respondendo ao cliente com um pacote contendo o endereço IP e outros parâmetros de configuração, com por exemplo , máscara e quem é o DNS, etc… O DHCP usa o conceito de aluguel.O endereço IP é oferecido a um cliente é válido durante um certo período de tempo. Chamamos esse período de tempo de concessão. O tempo de concessão é um valor configurável.
Apêndice 1 – Configurando as placas de rede no Linux
O servidor linux atua neste cenário como responsável pelo acesso à Internet de todos as estações de trabalho. Após configurada fisicamente, a interface precisa receber um endereço IP para ser identificada na rede e se comunicar com outros computadores, além de outros parâmetros como o endereço de broadcast e a máscara de rede. Nossa rede local é identificada por 192.168.1.0 com máscara 255.255.255.0. Nosso endereço de acesso à Internet é 200.222.70.17 com máscara 255.255.255.240. Todas as estações farão o acesso à Internet através desse endereço.
O comando usado para fazer isso é o ifconfig (interface configure).
Para configurar a primeira interface de rede Ethernet (eth0) com o endereço 192.168.1.1, máscara de rede 255.255.255.0, devemos usar o comando:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
O endereço de broadcast é calculado automaticamente usando a máscara adicionada como parâmetro.
Para configurar a segunda interface de rede Ethernet (eth1) com o endereço 200.222.70.18, máscara de rede 255.255.255.240, devemos usar o comando:
ifconfig eth1 200.222.70.18 netmask 255.255.255.240 up
O endereço de broadcast é calculado automaticamente usando a máscara adicionada como parâmetro.
Agora basta adicionar o endereço de nosso gateway na tabela de roteamento do servidor linux, para isso usa-se o comando route.
route add default gw 200.222.70.17
DICA – Você pode criar um script com essas configurações, ou escreve-las no arquivo rc.local para que o linux as configure automaticamente sempre que for iniciado.Existem outras maneiras de configurar uma placa de rede, mas os caminhos e arquivos de configuração variam conforme a distribuição, por isso optei por um tipo de configuração aceito por todas as distribuições linux.
Apêndice 2 – Configurando o Linux o serviço de DNS do linux
Existem alguns arquivos que devem ser configurados para o correto funcionamento do serviço de DNS dentro do linux. O etc/resolv.conf é o arquivo de configuração principal do código do resolvedor de nomes. Seu formato é um arquivo texto simples com um parâmetro por linha e o endereço de servidores DNS externos são especificados nele. Existem três palavras chaves normalmente usadas que são:
domain
Especifica o nome do domínio local.
search
Especifica uma lista de nomes de domínio alternativos ao procurar por um computador, separados por espaços. A linha search pode conter no máximo 6 domínios ou 256 caracteres.
nameserver
Especifica o endereço IP de um servidor de nomes de domínio para resolução de nomes. Pode ser usado várias vezes.
Exemplo:
domain dominio.com.br
search dominio.com.br dominio.com
nameserver 200.222.70.18
Para o funcionamento da Internet, deve-se configurar um servidor de nomes somente para cache, o que possibilita ao Linux encontrar as respostas às pesquisas de nomes e endereços, guardando as respostas para a próxima em que sejam necessárias. Inicialmente é necessário apenas ter-se um arquivo /etc/named.conf que é gerado após a instalação do BIND. Esse arquivo é lido quando o servidor de nomes for inicializado.
Um exemplo de um arquivo named.conf:
// generated by named-bootconf.pl
// secret must be the same as in /etc/rndc.conf
key "key" {
algorithm hmac-md5;
secret
"c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};
controls {
inet 127.0.0.1 allow { any; } keys { "key"; };
};
options {
directory "/var/named";
pid-file "/var/run/named/named.pid"; // Put pid file in working dir
// query-source address * port 53;
};
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
Apêndice 3 – Configurando as regras de firewall do Linux
Para uma correta configuração do firewall deve-se ter em mente alguns conceitos principais como as três regras de filtragem em cada categoria de tráfico, que são elas INPUT (tráfego entrante é testado antes de ser ou não aceito) OUTPUT (tráfego de saída é testado antes de ser enviado) e FORWARD (tráfego que está sendo encaminhado pelo sistema Linux é testado). Essas regras são compostas de um filtro contra o qual os pacotes são comparados e uma ação configurada é tomada. Essa ação pode ser padrão ou uma regra definida pelo usuário que basicamente podem ser aceitar ou rejeitar o pacote.
Regras de firewall com iptables
! /bin/sh
Por João Cláudio - joao.claudio25globo.com
Script básico para configuração de firewalls:
Limpando as regras
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Zerando todas as regras
iptables -F
Zerando (Flush) no NAT
iptables -t nat -F
Zerando (Flush) as regras personalizadas
iptables -X
Iniciando regras do firewall
Rejeitando qualquer tráfego entrante e encaminhado pelo Linux
iptables -P INPUT DROP
iptables -P FORWARD DROP
Aceitando qualquer tráfego de saída
iptables -P OUTPUT ACCEPT
Criando variáveis para as placas de rede
NET=192.168.1.1
NT2=200.222.70.43
Abrindo portas para conexões internas
IPT -A OUTPUT -p tcp -s NET -d 0/0 --destination-port 1024:65535 -j ACCEPT
IPT -A OUTPUT -p tcp -s NET -d 0/0 --destination-port 1024:65535 -j ACCEPT
Virando os serviços FTP, SMTP, POP, DNS, HTTP, HTTPS, SQUID
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 20 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 21 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 25 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 53 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 53 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 110 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 443 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d NET --destination-port 3128 -j ACCEPT
Mascarando endereços e definindo gateway
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -j ACCEPT
Definindo proxy transparente
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Dicas
Através do firewall podemos criar regras para bloquear acesso a serviços com o MSN, Yahoo Message, ICQ, orkut e outros ou de fechar ainda mais o firewall por medida de segurança. Isso vai depender do objetivo pelo qual se está configurando as regras de firewall.
Exemplos:
Bloqueando orkut
IPT -A INPUT -d www.orkut.com -p tcp --dport 443 -j DROP
IPT -A FORWARD -d www.orkut.com -p tcp --dport 443 -j DROP
IPT -A INPUT -d orkut.com -p tcp --dport 443 -j DROP
IPT -A FORWARD -d orkut.com -p tcp --dport 443 -j DROP
Bloqueando o kproxy
IPT -A INPUT -d www.kproxy.com -j DROP
IPT -A FORWARD -d www.kproxy.com -j DROP
IPT -A INPUT -d proxy.com -p tcp -j DROP
IPT -A FORWARD -d proxy.com -p tcp -j DROP
Fechando conexões ICMP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type echo-request -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type host-unreachable -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type redirect -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type timestamp-request -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type timestamp-reply -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type address-mask-request -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type address-mask-reply -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NET --icmp-type source-quench -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type destination-unreachable -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type echo-request -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type host-unreachable -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type redirect -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type timestamp-request -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type timestamp-reply -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type address-mask-request -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type address-mask-reply -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type source-quench -j DROP
IPT -A INPUT -p icmp -s 0/0 -d NT2 --icmp-type destination-unreachable -j DROP
[c]Liberando ICMP para fora
[/c]
IPT -A OUTPUT -p icmp -s NET -d 0/0 -j ACCEPT
Bloqueando Multicasting
IPT -A INPUT -s 224.0.0.0/8 -d 0/0 -j DROP
IPT -A INPUT -s 0/0 -d 224.0.0.0/8 -j DROP
IPT -A OUTPUT -s 224.0.0.0/8 -d 0/0 -j DROP
IPT -A OUTPUT -s 0/0 -d 224.0.0.0/8 -j DROP
Bloqueando pacotes com Stuffed Routing
IPT -A INPUT -s 255.255.255.255 -j DROP
IPT -A INPUT -s 0.0.0.0 -j DROP
IPT -A INPUT -s 255.255.255.255 -j DROP
IPT -A INPUT -s 0.0.0.0 -j DROP
Liberando Caixa Economica
for ip in CAIXA
do
IPT -t nat -A PREROUTING -p tcp -d ip -j ACCEPT
IPT -A FORWARD -p tcp -d ip -j ACCEPT
done
Apêndice 4 – Configurando o squid
O arquivo squid.conf, normalmente localizado em /etc/squid ou /usr/local/squid/etc é responsável por todas as configurações do proxy. É dentro deste arquivo que criamos as listas de acessos e configuramos o serviço.
http_port 3128
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 http
acl Safe_ports port 21 ftp
acl Safe_ports port 443 563 https, snews
acl Safe_ports port 70 gopher
acl Safe_ports port 210 wais
acl Safe_ports port 1025-65535 unregistered ports
acl Safe_ports port 280 http-mgmt
acl Safe_ports port 488 gss-http
acl Safe_ports port 591 filemaker
acl Safe_ports port 777 multiling http
acl CONNECT method CONNECT
Bloqueia ou libera um placa de rede
acl placa arp 00:13:D3:1C:45:68
Arquivo com palavrars liberadas (exemplo computa)
acl noporn dstdomain "/etc/squid/noporn"
Arquivo com extensões bloqueadas
acl extentions url_regex "/etc/squid/extentions"
Arquivo com URLS bloqueadas (exemplo computa)
acl urls url_regex "/etc/squid/urls"
Arquivo com palavrars liberadas (exemplo puta)
acl porn dstdom_regex "/etc/squid/porn"
Faz-se mister a criação de um arquivo de palavras não bloqueadas, pq no caso de você por exemplo bloquear a palavra puta, as palavras computação e computador também ficariam bloquadas.
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow all placa
http_access allow all noporn
http_access deny all extentions
http_access deny all urls
http_access deny all porn
http_access allow all
visible_hostname hostname_do_seu_servidor
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Você ainda pode configurar o squid para uma integração com o Active Directory
Para isso siga os passos deste artigo:
Escrito pelo colega Leonel Cesar Batista, já testado e ao implementei em um Windows 2003 e vi que funciona.
Apêndice 5 – Configurando o controlador de domínio
Para configurar o Windows 2003 como controlador de domínio, devemos iniciar o assistente de instalação DCPROMO.EXE através da ferramenta “executar” do windows.
O assistente será iniciado através de uma tela de boas-vindas “Welcome”, clique em Next. Na tela de compatibilidade com outros sistemas clique em Next. Tenha em mente que o DC (controladores de domínio) executando WS (Windows Server) 2003 requerem uma comunicação segura e por isso seus clientes devem oferecer suporte a assinaturas SMB. Clientes Windows 95 necessitam do Active Directory Client para dar suporte a esse tipo de assinatura, assim como cliente Windows NT 4 precisam do Service Pack 2.
Na próxima tela teremos as opções de controladores de domínio possíveis, como estamos criando o domínio agora devemos escolher a opção Criar um novo domínio em uma nova floresta. Para cria-lo devemos entrar com o nome DNS para o novo domínio, em nosso caso meudominio.com.br, e clique em Next.
Em Domain Netbios, aceite o nome sugerido (MEUDOMINIO) e clique em Next.
Na tela Database and Log Folders, aceite o padrão e clique em Next.
Aceite o caminho para a pasta SYSVOL e clique em Next.
Na tela Permissions, selecione o nível de compatilibidade com aplicações. Aqui temos uma questão de segurança. O nível ideal é o Compatível apenas com Windows 2000 e Windows 2003, mas se você tiver executando computadores com Windows NT 4, mantenha a opção padrão selecionada. Clique em Next. Na tela Directory Services restores Mode Administrator Password defina a senha para o modo de restauração do AD e clique em Next.
Um resumo então é mostrado clique em Next, aguarde e em seguida em Finish.
Depois de reiniciada a máquina você terá um controlador de domínio de sua rede funcionando. Agora você pode criar usuários, pastas compartilhadas e políticas de grupos de forma centralizada. Basta agora que você vá em cada cliente e que configure o mesmo para fazer logon no domínio que você criou.
Apêndice 6 – Configurando o serviço de DHCP
Para configurar esse serviço ,clique em Start, Administrative Tools e em “Manage your Server”. Logo depois clique em “Add or Remove a Role”.
Depois disso, o Configure Your server Wizard é iniciado, clique em Next. Esse componente faz uma série de verificações sobre o que está ou não instalado no servidor. E somente depois desse processo é que o mesmo habilita a opção “Configuration Options” que nos permite configurar o servidor. Clique em “Custom configurations” e em seguida em “Next”.
Depois em “Server Role”, selecione a função de “DHCP Server” e clique em “Next”. Ele exibe um resumo, clique novamente em “Next”.
O Windows 2003 começa a instalar os componentes e somente depois habilita a tela para a configuração do DHCP.
Na primeira tela denominada “New Scope Wizard” é uma simples tela de apresentação, clique em Next.
A tela “Scope Name”, possibilita definirmos um nome a nossa configuração de escopo (o intervalo de IPs que será distribuído). Escolha um nome para o escopo e clique em Next.
Em “IP Address Range”, temos que informar o intervalo/quantidade de endereços IPs que iremos distribuir. Para isso, devemos colocar o primeiro endereço a ser atribuído e o último da faixa de endereços que desejamos disponibilizar. No nosso caso, colocaremos como endereço inicial 192.168.1.1 e como final 192.168.1.254 . (Isso nos dará 254 endereços IPs disponíveis para alocação nos nossos computadores clientes, ou seja a faixa que eu configurei poderia atender a uma rede que tem até 254 computadores.) E depois clicamos em “Next”:
Depois em “Add Exclusions” podemos informar os endereços Ips que serão excluidos da faixa que informamos na etapa anterior. Em nosso caso, iremos exluir os dez primeiros endereços para que sejam utilizados pelos nossos atuais e futuros servidores. Em Start Ip Address digite 192.168.1.1 e End IP Address digite 192.168.1.10 Então clique em “Next”.
Em “Lease Duration” podemos informar quanto tempo durará o “Lease” (aluguel) dos endereços IPs alocados. Matenha a opção padrão e clique em Next.
Agora faremos uma série de outras configurações opcionais.
Selecione a opção “Yes, I want to configure these options now” e clique em “Next”:
Em “Router (Default Gateway)”, digite o endereço do nosso roteador, que no nosso caso será 192.168.1.1 . Clique em “Next”:
Depois em “Domain Name and DNS Servers” colocamos o nome de nosso domínio (meudominio.com.br), o nome de nosso primeiro servidor DNS (o nome do servidor windows), seu enreço IP, no caso 192.168.1.2, é clique em “Add”. Repita o processo para o DNS do linux e clique em “Next”.
Em “WINS Servers” deixe em branco e clique em Next.
E por último em “Activate Scope” escolha a opção “Yes, I want to activate this scope now”. E depois é só clicar em “Next”, e logo em seguida em Finish.
Referências Bibliográficas
HUNT, Craig. Linux Servidores de Rede. Rio de Janeiro: Ciência Moderna Ltda., 2004.
RUEST, Nelson; RUEST, Danielle. Windows Server 2003. Rio de Janeiro: Ciência Moderna Ltda., 2003.
Obrigado e até a próxima!