Servidor Debian 6 DHCP + Squid + IPtables

Nesse artigo vamos configurar um servidor com os seguintes serviços: DHCP - atribuição de IP para os hosts da rede local. Squid - liberações e restrições de sites e palavras. IPtables - firewall do GNU/Linux, vamos criar algumas regras básicas e necessárias para o nosso servidor navegar na Internet e trabalhar junto ao Squid.

[ Hits: 96.099 ]

Por: Guilherme Auras em 12/11/2012


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.


Página anterior    

Páginas do artigo
   1. Instalando o serviço DHCP
   2. Instalando o serviço Squid
   3. Instalando o serviço IPtables
   4. Bônus: Monitorando determinado IP de determinado usuário
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Facilidades com Debian 4.0 Etch

Permissão de Execução de Arquivo (Script ou Binário) no GNU/Linux - Elementos Básicos para Compreensão

Criando um repositório local do Fedora

Indicador de Caps Lock

O dia em que o KDE me surpreendeu

  
Comentários
[1] Comentário enviado por mateusfreak em 12/11/2012 - 14:00h

Meu Deus, ótimo artigo!

Instalei uma VM de teste com CENTOS 6.3, as configuraçoes servem para ele tambem?

Estou iniciando no Linux.

Abraço e parabéns!

[2] Comentário enviado por guilhermeTI em 12/11/2012 - 14:36h

Salve!

Amigo, essas configurações são para o Debian, mais claro que podes usar os scripts no Centos ^^

Só que vai mudar algumas coisas;
em primeiro lugar tens que instalar o serviço: yum install dhcp
o diretório e arquivos da configuração das placas de rede: /etc/sysconfig/network-scripts/ifcfg-eth"X"
o diretório e arquivos da configuração do DHCP: /etc/dhcpd.conf
o diretório e arquivo responsável pelo roteamento a placa de rede "LOCAL": /etc/sysctl.conf
o restante pode usar as mesas configurações do Debian, acredito que funcione ^^

Att,

[3] Comentário enviado por mateusfreak em 12/11/2012 - 15:26h


[2] Comentário enviado por guilhermeTI em 12/11/2012 - 14:36h:

Salve!

Amigo, essas configurações são para o Debian, mais claro que podes usar os scripts no Centos ^^

Só que vai mudar algumas coisas;
em primeiro lugar tens que instalar o serviço: yum install dhcp
o diretório e arquivos da configuração das placas de rede: /etc/sysconfig/network-scripts/ifcfg-eth"X"
o diretório e arquivos da configuração do DHCP: /etc/dhcpd.conf
o diretório e arquivo responsável pelo roteamento a placa de rede "LOCAL": /etc/sysctl.conf
o restante pode usar as mesas configurações do Debian, acredito que funcione ^^

Att,


Obrigado Guilherme, estarei utilizando suas instruções.

Parabéns pelo artigo, poste mais assim que puderes :D

Grande abraço!

[4] Comentário enviado por guilhermeTI em 12/11/2012 - 15:29h

opa!

fico feliz por ter ajudado ^^

sim, futuramente pretendo escrever mais artigos!!!

e boa sorte com seus estudos!

att,

[5] Comentário enviado por danniel-lara em 12/11/2012 - 17:18h

Parabéns muito bom mesmo
simples e objetivo
muito bom mesmo

[6] Comentário enviado por dalveson em 12/11/2012 - 18:05h

muito legal o artigo, principalmente o bonus achei muito interessante.
ps:
uma dica, na minha opniao quando voce cria um arquivo NEGAR.txt e dentro desse arquivo, vamos colocar os sites e palavras que vamos proibir o acesso, e depois, cria o arquivo LIBERAR.txt e dentro deste arquivo, vamos colocar os sites e palavras permitidos em nossa rede local.
Na minha opnião seria mais logico vc criar uma regra bloqueando tudo e liberando so o que ta em LIBERAR.txt sem a regra de NEGAR.txt
http_access deny all REDE01 !LIBERAR #vamos negar tudo exceto o que esta dentro da acl liberar
ou entrao fazer o inverso, liberando tudo e bloqueando so o NEGAR.txt sem a regra de LIBERAR.txt
http_access allow all REDE01 !NEGAR #vamos liberar tudo exceto o que esta dentro da acl negar
assim vc suprimi uma regra a menos no seu squid e consequentemente ele ira consumir menos recurso da maquina e ira ler o arquivo de configuração mais rapido.
abraços

[7] Comentário enviado por guilhermeTI em 12/11/2012 - 19:13h

Salve!

danniel-lara, obrigado pelo comentario!

dalveson, fique a vontade para editar os arquivos ^^
eu entendi a sua logica, sim da para apenas DROP tudo, e usar apenas um arquivo uma ACL para acessar os sites liberados...
obrigado pela sua opnião!

Abraços.

[8] Comentário enviado por mateusfreak em 13/11/2012 - 10:12h

bom dia,

instalei o dhcp mas a pasta /etc/network/ nao existe nem o arquivo interface.

Devo criar esse arquivo?

obrigado

[9] Comentário enviado por guilhermeTI em 13/11/2012 - 10:27h

mateusfreak,

Qual versão do Linux você usando?

aguardo.

[10] Comentário enviado por jsdan em 13/11/2012 - 17:06h

Boa tarde! amigo

No comentário MAC computadores da rede eu teria que colocar os três.
O Servidor um desktop e um notebook.
Só que minha rede está com fio e é residencial.
Estou usando o Server Ubuntu 12.04 Lts paradaise.
E o nome só estou com o nome do computador.

Grato

[11] Comentário enviado por guilhermeti em 13/11/2012 - 19:15h

corinthiano ,

Obrigado por ter lido meu post!

mais infelizmente não entendi a sua duvida.

eu te pergunto:

o que você precisa montar?

qual seu cenário? ( computadores, servidor, placas de rede, switch, roteador ) tente explicar sua topologia.

tente me explicar isso, que eu farei o possível para atender sua necessidade.

att,

[12] Comentário enviado por mateusfreak em 13/11/2012 - 22:30h


[2] Comentário enviado por guilhermeTI em 12/11/2012 - 14:36h:

Salve!

Amigo, essas configurações são para o Debian, mais claro que podes usar os scripts no Centos ^^

Só que vai mudar algumas coisas;
em primeiro lugar tens que instalar o serviço: yum install dhcp
o diretório e arquivos da configuração das placas de rede: /etc/sysconfig/network-scripts/ifcfg-eth"X"
o diretório e arquivos da configuração do DHCP: /etc/dhcpd.conf
o diretório e arquivo responsável pelo roteamento a placa de rede "LOCAL": /etc/sysctl.conf
o restante pode usar as mesas configurações do Debian, acredito que funcione ^^

Att,


placas de rede: ifcfg-eth* nao existe, somente ifcfg-lo
pasta do DHCP é /etc/dhcp/dhcpd.conf :D

como configuro as eth´s? dando ifconfig no bash tenho eth0, eth1 e lo

Abs


[13] Comentário enviado por guilhermeTI em 14/11/2012 - 16:08h

mateusfreak,

Tais usando qual sistema de virtualização? vmware, virtualbox, phpvirtualbox, xen server...
ifcfg-lo, é seu endereço de loopback 127.0.0.1
tens que verificar se tens duas placas de rede em seu servidor, e se elas estão ligadas.
faça o comando:
ifconfig
se fizer esse comando e só aparecer o endereço 127.0.0.1, faça esse comando:
/etc/init.d/networking restart
ifconfig
se mesmo assim não aparece nenhum endereço de rede, tens que verificar as placas de rede do seu servidor.

att,

[14] Comentário enviado por mateusfreak em 14/11/2012 - 17:30h


[13] Comentário enviado por guilhermeTI em 14/11/2012 - 16:08h:

mateusfreak,

Tais usando qual sistema de virtualização? vmware, virtualbox, phpvirtualbox, xen server...
ifcfg-lo, é seu endereço de loopback 127.0.0.1
tens que verificar se tens duas placas de rede em seu servidor, e se elas estão ligadas.
faça o comando:
ifconfig
se fizer esse comando e só aparecer o endereço 127.0.0.1, faça esse comando:
/etc/init.d/networking restart
ifconfig
se mesmo assim não aparece nenhum endereço de rede, tens que verificar as placas de rede do seu servidor.

att,


Conforme eu disse, dei ifconfig e aparece eth0, eth1 e lo no terminal.
Uso o VBox 4.2 no Ubuntu, 2 placas em NAT no CentOS 6.

Dei um stop, start e tambem restart e o arquivo ifcfg-eth* nao aparece na pasta etc/sysconfig/network-script, somente ifcfg-lo.


[15] Comentário enviado por jsdan em 15/11/2012 - 10:52h

Bom dia! Guilherme, eu tenho três computadores: 1 com servidor Ubuntu 12.04 LTS
1 Desktop com windows 7 cliente
1 notebook com windows 7 cliente
roteador configurado nat 192.168.1.1, switch 5 portas rede com fio, 2 placas de rede.
No #vim dhcpd.conf
Não tenho um dominio deixo em branco, esta configuração
# host teste{# nome do host
#hardware ethernet adicionar o MAC do servidor ou clientes
#fixed-address 192.168.100.2 escolher IP valido para o host
Nos computadores clientes preciso fazer configuração do windows 7 Regedit para ser reconhecido.
preciso fazer configuração propriedades computadores rede local dominio ou workgroup
Vou configurar o samba

[16] Comentário enviado por flavac em 15/11/2012 - 13:05h

Boa tarde

Ótimo artigo, simples, direto e muito útil para quem está começando no linux, agora uma pergunta, serviria somente para o debian puro? pois eu tenho a versão mint maya 13 e fiz conforme explicado e não foi, no momento de carregamento do linux já aparece uma msg de erro grifada em vermelho, eu editei o arquivo interfaces dentro de network e isto que estou no primeiro passo , configurando somente o compartilhamento da internet.

Obrigado.


[17] Comentário enviado por jsdan em 15/11/2012 - 16:26h

Boa tarde! como gerar nome de usuario e ip, e se tiver vários usuarios.
É preciso fazer a configuração do squid
no # vim /etc/squid.conf e cadastrar e os autenticar os usuarios
#Autenticaçao
auth_param basic realm Servidor_Proxy ( Digite Usuario|Senha )
auth_param basic program /usr/lib/squid3
/ncsa_auth /etc/squid3/squid_passwd
acl autenticados proxy_auth REQUIRED
http_acess allow autenticados

Grato por enquando.

Deus seja louvado

[18] Comentário enviado por guilhermeTI em 16/11/2012 - 10:00h

corinthiano,

Obrigado por compartilhar essa informação ^^

até ontem eu fazia assim:

eu ia até a maquina da pessoa, via o IP do usuário, e voltava no servidor e fazia o relatório ^^

essa parte de autenticação do Squid, eu não tinha explorado ainda...

agradeço!

fique com Deus.

[19] Comentário enviado por guilhermeTI em 16/11/2012 - 10:31h


[15] Comentário enviado por corinthiano em 15/11/2012 - 10:52h:

Bom dia! Guilherme, eu tenho três computadores: 1 com servidor Ubuntu 12.04 LTS
1 Desktop com windows 7 cliente
1 notebook com windows 7 cliente
roteador configurado nat 192.168.1.1, switch 5 portas rede com fio, 2 placas de rede.
No #vim dhcpd.conf
Não tenho um dominio deixo em branco, esta configuração
# host teste{# nome do host
#hardware ethernet adicionar o MAC do servidor ou clientes
#fixed-address 192.168.100.2 escolher IP valido para o host
Nos computadores clientes preciso fazer configuração do windows 7 Regedit para ser reconhecido.
preciso fazer configuração propriedades computadores rede local dominio ou workgroup
Vou configurar o samba



opa,

queres fazer um servidor com firewall dhcp, squid, e samba PDC? é isso?

aguardo.

[20] Comentário enviado por jsdan em 16/11/2012 - 15:52h

sim, mas não tenho um dominio.
Você viu o cometário do dia 15/11/12
às 10:52 hs.
Dê uma olhada.
Onde e como vou criar estes usuarios para ser monitorado.

Fico no aguardo

Deus abençõe


[21] Comentário enviado por guilhermeTI em 16/11/2012 - 16:49h


[20] Comentário enviado por corinthiano em 16/11/2012 - 15:52h:

sim, mas não tenho um dominio.
Você viu o cometário do dia 15/11/12
às 10:52 hs.
Dê uma olhada.
Onde e como vou criar estes usuarios para ser monitorado.

Fico no aguardo

Deus abençõe



Opa,

manda um email com todas suas duvidas para:
guilherme_auras@hotmail.com

é melhor, eu te ajudo com suas duvidas ^^

att,


[22] Comentário enviado por emersonking em 19/11/2012 - 23:54h

Olá, estou tendo problema para poder reiniciar as interfaces quando dou restart na interface apresenta a seguinte mensagem:

Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning).
Reconfiguring network interfaces.../etc/network/interfaces:17: too many parameters for iface line
ifdown: couldn't read interfaces file "/etc/network/interfaces"
/etc/network/interfaces:17: too many parameters for iface line
ifup: couldn't read interfaces file "/etc/network/interfaces"
failed.

o meu arquivo interfaces é o Crtl+c Crtl+v do seu.

OBS: estou utilizando o Debian 6.0.5

[23] Comentário enviado por guilhermeTI em 20/11/2012 - 09:00h

emersonking,

Obrigado por ter lido meu post ^^

enfim, vc instalou esse Debian no virtual box ou direto na maquina, ou em outro sistema de virtualização?

aguardo!

[24] Comentário enviado por emersonking em 20/11/2012 - 12:21h

GuilhermeTI, primeiramente parabéns pelo artigo, então estou com uma maquina física mesmo não é virtualização tenho duas placas de rede instaladas a eth0 é a onboard que esta com internet e a eth1 é a outra pela qual quero q saia o servidor.

[25] Comentário enviado por guilhermeTI em 21/11/2012 - 15:49h

emersonking,

pelo que eu entendi:

suas placas de redes, eth0 e eth1

eth0 = ligada na internet
eth1 = ligada no switch

verifique suas placas de rede se as mesmas pegaram ip, faça o comando:
ifconfig

se não apareceu nada, tente volta ao arquivo original o arquivo interfaces, e tente mudar aos poucos e não use CTRL+C + CTRL+V, tente muda aos poucos e vá testando.


outro caso para verificar os drivers do seu servidor:
lspci

e verifique se os drivers estão instalados, os drivers da suas placas de rede.

att,

[26] Comentário enviado por emersonking em 22/11/2012 - 21:20h

Resolvi,

ao inves de colocar a linha

allow-hotplug eth1

eu coloquei

auto eth1

[27] Comentário enviado por turboforce em 23/11/2012 - 16:46h

Excelente tutorial Guilherme, bem comentado.

Caso queira desabilitar o proxy transparente, além de remover o "transparent" do squid.conf
Devo efetuar alguma alteração no firewall.sh?

Desejo uma configuração em que os clientes não tenham acesso a internet fora do proxy.

[28] Comentário enviado por guilhermeTI em 23/11/2012 - 16:52h

turboforce,

obrigado pelo elogio e usar meu tutorial ^^

não entendi sua duvida direito, mais para tirar o modo transparent do squid tens que fazer:

remover o modo transparent do arquivo /etc/squid3/squid3.conf

no arquivo firewall.sh tem que ficar assim:

#! /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

aguardo...

[29] Comentário enviado por turboforce em 26/11/2012 - 10:48h

Obrigado pelo retorno Guilherme.

Entendeu perfeitamente. Quero remover o modo transparent.

Com tudo; as modificações efetuadas no arquivo firewall.sh, ainda permitem a navegação fora do proxy.

Devo bloquear a porta 80 para a faixa interna?


[30] Comentário enviado por guilhermeTI em 26/11/2012 - 11:31h


[29] Comentário enviado por turboforce em 26/11/2012 - 10:48h:

Obrigado pelo retorno Guilherme.

Entendeu perfeitamente. Quero remover o modo transparent.

Com tudo; as modificações efetuadas no arquivo firewall.sh, ainda permitem a navegação fora do proxy.

Devo bloquear a porta 80 para a faixa interna?



turboforce,

nessa parte do arquivo do squid:
http_port 3128 transparent

tens que tira o transparent, e tem que ficar assim:
http_port 3128

e no arquivo do firewall.sh tem que ficar assim:

#! /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

nos computadores clientes da rede tens que entrar nos navegadores dos mesmos e adicionar nas configurações a porta do seu proxy 3128
dai toda navegação vai passa por essa porta, mais acho mais viável e seguro colocar em modo transparent, pois assim nao precisa adicionar todas maquinas da rede no seu proxy nao precisa fazer isso na mao.
se quiseres add um ip para navegaçao completa sem restrições é facil, so criar uma acl para liberar toda navegaçao daquele determinado IP.

aguardo.

[31] Comentário enviado por turboforce em 26/11/2012 - 12:40h

Prezado Guilherme.

Entendi perfeitamente e já efetuei as alterações no arquivo squid.conf e no firewall.sh.

Os computadores navegam na internet com o proxy ativado sem problemas.

O que está acontecendo é que maquinas sem as configurações de proxy também navegam.
E por navegarem sem passar pelo proxy, não são bloqueadas pelas regras criadas no squid.

Quero permitir apenas navegação via proxy.

Posso bloquear a porta 80 para forçar a navegação via proxy?
iptables -A FORWARD -p tcp --dport 80 -j REJECT

[32] Comentário enviado por turboforce em 28/11/2012 - 08:45h

Guilherme, efetuei o bloqueio da porta 80 para forçar o uso do proxy e funcionou muito bem.

Mais uma vez agradeço a atenção e parabéns pelo artigo.

[33] Comentário enviado por Skull_Kid em 16/01/2013 - 11:12h

Tentei reiniciar o squid após as configurações sugeridas nesta página e obtive o seguinte erro:

Restarting Squid HTTP proxy: squid2013/01/16 11:02:47| ACL name 'all' not defined!
FATAL: Bungled squid.conf line 15: http_access allow all rede01 LIBERAR
Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
failed!


Alguém pode me ajudar?

Grato!

[34] Comentário enviado por carlosmusic2006 em 17/08/2013 - 01:21h

Boa noite galera, td bem?

Estou tendo um problema aqui.

Eu fiz toda a instalação, DHCP e FIREWALL direto na maquina, porem nao achei interessante fazer a SQUID agora, quero testar o firewall pra depois testar o SQUID e ver a diferença dos 2. Configurei tudo certinho como consta no site, reiniciei a maquina e ela ativou tudo sem erros. Peguei o cabo da eth1 e coloquei diretamente no notebook win7, desabilitei o Wireless do note e logo em seguida apareceu como conectado a internet (vindo da eth1). Porem quando entro no site para fazer o teste do firewall no site:https://www.grc.com/intro.htm para saber se o mesmo esta configurado certinho, simplesmente NÃO entra, dá erro, tipo nao entra nada porem a informação de conectado a internet aparece normal.

Me ajudem por favor! O que voces acham que pode ser? Eu gostaria de arrumar tudo antes de colocar no Switch e compartilhar outras maquinas, lembrando que sou iniciante porem tenho estudado bastante tudo do site VOL.

No aguardo. Obrigado!!!

[35] Comentário enviado por delphy em 26/08/2013 - 16:08h

ola boa tarde
gostaria de uma dica
presiso montar um servidor para uma sala de informatica para fazer dhcp e fireway da rede, na sala tem aproximadamente 15 computadores to pensando em montar com o debian e usar essas configuraçoes deste arquivo, estaria dentro do necessario ou presisaria de mais alguma configuraçao e a maquina pro servidor quais configuraçoes minimas?
fico no aguardo obrigado desde ja
muito bom artigo

[36] Comentário enviado por biascherer em 23/11/2013 - 20:03h

Olá Guilherme,

O artigo que vc postou ficou muito bom e me ajudou muito! mas fiquei só com uma dúvida..

Eu não estou conseguindo fazer bloqueio do facebook por HTTPS.
será que vc poderia me ajudar a criar um comando? nem que seja bloqueio por IP, já me ajudaria bastante.

Estou usando o Squid3 no Debian Whezzy 7.

Abs.

[37] Comentário enviado por italobelao em 27/02/2014 - 17:32h

Adorei o artigo, me ajudou muito, só estou com um problema no restart do
dhcp

aparece essa msg:

root@servalp:~# /etc/init.d/isc-dhcp-server restart
dhcpd self-test failed. Please fix /etc/dhcp/dhcpd.conf.
The error was:
Internet Systems Consortium DHCP Server 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
/etc/dhcp/dhcpd.conf line 7: expecting left brace.
range
^
Configuration file errors encountered -- exiting

não consigo encontrar o problema, esta do jeito que você colocou no artigo

[38] Comentário enviado por thezzari em 03/06/2014 - 22:36h

Fiz tudo certinho não apresentou nenhum erro mas no terminal não funcionou não acesso nada nem os sites que eu coloquei no LIBERAR.txt "No terminal deixei 192.168.100.7 - 255.255.255.0 - 192.168.100.1" sera que o problema é a versão 7.5 em vez da 6.0 ?

[39] Comentário enviado por Yakuake em 17/07/2014 - 17:11h

Uma duvida que preciso resolver, nesse script, como faz para liberar potas especificas para um IP, pois estou precisando liberar 6 portas para 2 IP, sendo que são 3 portas para cada IP...alguma dica e como fazer?

[40] Comentário enviado por m4xu3l em 25/09/2014 - 22:32h

Muito bom o artigo está de Parabéns.
Bem simples e objetivo, direto ao ponto !

[41] Comentário enviado por paulosilv123 em 10/10/2014 - 17:05h

Boa tarde! fiz esse procedimento esta tudo o ok, mais quando plugo o cabo de rede da eth1 ele não ping mais pra fora da rede ! oq de ser ?


Contribuir com comentário