Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Relogio

Servidor Debian 6 DHCP + Squid + IPtables

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Servidor Debian 6 DHCP + Squid + IPtables

Mensagem  juk em Sex Abr 12, 2013 9:15 am

Código:

Instalando o serviço DHCP

Bom, neste artigo vamos configurar três serviços:
DHCP → Atribui IPs para os computadores clientes da rede local,
Squid → Responsável por bloquear e liberar palavras e sites,
IPtables → É o firewall do GNU/Linux, vamos configurar algumas regras básicas.

Obs.: Vou usar meu editor preferido, o Vim, quando eu pedir para editar um arquivo, usem o editor de arquivo de sua escolha.

Começando com as atualizações dos pacotes e também, atualizar o sistema com os seguintes comandos:

# apt-get update
# apt-get upgrade

Vamos começar configurando nossas interfaces de rede.

Nosso servidor precisa de duas placas de rede, uma para Internet e outra para rede local. Supondo que temos estas duas placas de rede, vamos determinar que:
eth0 → Placa conectada com a Internet.
eth1 → Placa com endereço fixo compatível com a rede local.

Vamos editar o arquivo responsável pelas placas de rede:

# vim /etc/network/interfaces

O arquivo "interfaces" deverá ficar assim:

The loopback network interface
auto lo

iface lo inet loopback

# The primary network interface
allow-hotplug eth0

#NetworkManager
#iface eth0 inet dhcp #a placa eth0 tem que ta conectada com a internet

#Lan eth1
allow-hotplug eth1 #quando subi o sistema ele já carrega com essas configurações como padrão
iface eth1 inet static #setando IP na mão
address 192.168.100.1 #IP da placa de rede
netmask 255.255.255.0 #mascara da sub rede
network 192.168.100.0 #endereço da rede
broadcast 192.168.100.255 #broadcast da rede

Agora vamos reiniciar o serviço das placas de rede:

# /etc/init.d/networking restart

Verificar se as placas de rede estão com os IPs corretos, com o comando:

# ifconfig
Na placa eth0 → Tem que estar o IP do seu modem ou roteador.
Na placa eth1 → Tem que estar o IP que atribuímos no arquivo interfaces, o IP da nossa rede local.

Agora vamos instalar o serviço DHCP com o comando:

# apt-get install dhcp3-server

Acessar o diretório:

# cd /etc/dhcp/

Mover o arquivo para que possamos criar um próprio nosso:

# mv dhcpd.conf dhcpd.conf.bkp

Agora vamos criar um arquivo novo:

# vim dhcpd.conf

No arquivo novo, vamos adicionar estas configurações:

ddns-update-style none;
default-lease-time 86400; #com esses valores, os IPs ficaram emprestados durante 8 horas e após 8 horas vai ter uma nova requisição de IP
max-lease-time 604800;
authoritative; #nosso servidor vai ser o principal na rede, ele vai atender todas requisições de IPs

subnet 192.168.100.0 netmask 255.255.255.0 { #aqui vamos colocar o IP da nossa rede local, e a mascara de sub rede
range 192.168.100.5 192.168.100.10; #aqui vamos colocar o range de IPs do nosso servidor, vamos entregar 5 IPs para testes
option domain-name-servers 8.8.4.4, 8.8.8.8; #aqui vamos colocar o nosso servidor DNS, tem que ser o mesmo que esta configurado em nosso modem ou roteador, ou pode ser o do Google mesmo
option domain-name "dominio.local"; #aqui vamos colocar um domínio de DNS, se você tiver um AD ou servidor BIND 9 rorando na empresa, podemos usar o dominio local da empresa
option routers 192.168.100.1; #esse IP é o que vai fazer o roteamento dos pacotes, é o IP do nosso servidor DHCP
option broadcast-address 192.168.100.255; #broadcast da rede
}

#nessa parte podemos configurar o servidor para entrega o mesmo IP para um determinado cliente da rede local:
#host TESTE { #nome do host
#hardware ethernet 1c:4b:d6:f9:09:42; #adiciona o MAC do computador da rede
#fixed-address 192.168.100.2; #escolha um IP valido para o host
#}

Editar o arquivo:

# vim /etc/default/dhcp3-server

Vamos adicionar nossa placa de rede local:

INTERFACES="eth1"

Feito estas configurações, podemos salvar o arquivo e reiniciar o serviço:

# /etc/init.d/isc-dhcp-server restart

Se tudo tiver correto, o serviço vai subir. Se apresentar alguma falha, temos que ver os arquivos de configuração novamente para procurar o problema.

Vamos para o Squid.

Instalando o serviço Squid

Agora vamos configurar o Squid.

Vamos baixar o pacote do mesmo:

# apt-get install squid3

Vamos para o diretório:

# cd /etc/squid3

Mover o arquivo original para que possamos criar um próprio:

# mv squid.conf squid.conf.bkp

Criar nosso arquivo:

# vim squid.conf

Vamos adicionar as seguintes configurações:

http_port 3128 transparent #proxy transparente é super interessante e viável para uma grande ou pequena rede local
cache_dir ufs /var/spool/squid3 100 16 256 #o primeiro numero o "100" é o tamanho do arquivo em KB, aqui podemos escolher quando KB nosso arquivo vai ter
cache_mem 50 MB #nessa parte vamos disponibilizar 50MB de memoria RAM para o Squid, podem mudar conforme a necessidade disponibilidade de cada um
visible_hostname NOME #aqui vai o nome do nosso servidor no rodapé da pagina

#regras;
acl REDE01 src 192.168.100.0/24 #regra para rede local
acl LIBERAR url_regex "/etc/squid3/LIBERAR.txt" #regra para o arquivos de sites e palavras liberados
acl NEGAR url_regex "/etc/squid3/NEGAR.txt" #regra para o arquivo de sites e palavras proibidas

#acl diretor src 192.168.100.7 #essa regra é para liberar um determinado IP para navegação sem restrições
#http_access allow all diretor

http_access allow all REDE01 LIBERAR #vamos liberar o acesso aos sites e palavras que estão no arquivo LIBERAR.txt
http_access deny all REDE01 NEGAR #vamos negar o acesso para rede local dos sites e palavras que estão dentro do arquivo NEGAR.txt

acl REDELOCAL src 192.168.100.0/24
http_access allow REDELOCAL #vamos liberar o restante da navegação

Criado o arquivo do Squid, agora vamos criar o arquivo:

# vim NEGAR.txt

Dentro desse arquivo, vamos colocar os sites e palavras que vamos proibir o acesso.

Depois, vamos criar o arquivo: LIBERAR.txt

# vim LIBERAR.txt

Dentro deste arquivo, vamos colocar os sites e palavras permitidos em nossa rede local.

Em seguida, vamos reiniciar o serviço do Squid:

# /etc/init.d/squid3 restart

Se tudo tiver OK, o Squid vai subir sem problemas. Caso o serviço não suba, temos que verificar os arquivos e procurar o possível erro.

Vamos para o IPtables.

Instalando o serviço IPtables

Bom, vamos configurar o firewall e compartilhamento de Internet do nosso servidor.

Agora vamos no diretório:

# cd /home

Vamos criar o arquivo:

# vim firewall.sh

Dentro do arquivo, vamos colocar as seguintes configurações:

#! /bin/bash

#rezando as regras;
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -t mangle -F

#adicionando modulos no kernel;
modprobe ip_tables
modprobe iptable_nat

#liberando encaminhamento de pacotes;
echo "1" > /proc/sys/net/ipv4/ip_forward

#compartilhando a internet;
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#Proxy transparente, tratando dos protocolos UDP e TCP, e movendo o trafego das portas 80,443 para porta 3128;
iptables -t nat -A PREROUTING -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s 192.168.100.0/24 -p udp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s 192.168.100.0/24 -p udp --dport 443 -j REDIRECT --to-port 3128

Vamos dar permissão de execução para o arquivo:

# chmod +x firewall.sh

Toda as vezes que precisarmos compartilhar a Internet com os computadores da rede local e ativar o Squid Transparente, vamos ter que executar o script:

# ./firewall.sh

- Não seria interessante colocar o script de firewall para ativar o script de forma automática, e na inicialização do sistema?

É vantajoso, pois se o nosso servidor desligar, quando subir, não vai precisar dar start no script de firewall.

Vamos às seguintes configurações, edite o arquivo:

# vim /etc/rc.local

Ele deve ficar assim:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

ifdown eth0
ifdown eth1
ifup eth0
ifup eth1
./home/firewall.sh

exit 0

Adicionamos em nosso script, o comando ifdown e ifup para subir nossas interfaces de rede, só para garantir. E também, colocamos para subir o nosso script de firewall.

Agora vamos ao bônus. ^^

Vou ensinar a monitorar um determinado IP de um determinado usuário sem precisar instalar e configurar o famoso SARG.

Bônus: Monitorando determinado IP de determinado usuário

Bem amigos, quem chegou até aqui, é porque conseguiu fazer o nosso servidor DHCP + Squid + IPtables funcionar.

Vou mostrar que é possível gerar um simples relatório do arquivo "access.log" do Squid.

Vamos ao diretório:

# cd /home

Criar o seguinte arquivo:

# vim monitoramento.sh

Dentro do arquivo, vamos adicionar os seguintes comandos:

#!/bin/bash

echo "Digite o nome do usuário que deseja ser monitorado..."
read usuario
sleep 02

echo "Digite o IP do usuário..."
read ip
sleep 02

echo "Criando o arquivo do monitoramento..."
touch /home/$usuario.log
sleep 02

echo "Colocando a data de hoje no documento..."
date >> /home/$usuario.log
sleep 02

echo "Monitorando a navegação..."
sleep 02
cat /var/log/squid3/access.log | awk '{print$3 " " $8 " " $7}' | grep $ip >> /home/$usuario.log
sleep 02

echo "Usuário monitorado!... Tudo OK..."
sleep 02

Agora vamos dar permissão de execução ao arquivo que criamos:

# chmod +x monitoramento.sh

Feito isso, é só rodar o script:

# ./monitoramento

Responder às perguntas e pronto! Vai gerar um relatório da navegação do usuário no diretório /home com a data, nome do usuário e até mesmo o que ele acessou!

É simples, porém ajuda muito.


Enfim, é isso aí pessoal. Espero que gostem do meu artigo, é o primeiro. ^^

Qualquer dúvida, estou à disposição.

Comentem o que acharam, por favor, pois críticas construtivas são sempre bem-vindas!

Até a próxima.
FONTE:VOL
avatar
juk

Mensagens : 224
Data de inscrição : 02/04/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum