DHCPD + IPTABLES =gerenciamento de ips, bloqueio por mac addres

Estou montando uma rede domestica mesmo porém pouco robusta, tenho um link de 1mb, um pouco rasuável porém eu divido a internet com 14 pessoas no meu condominio. A minha intenção é Controlar a rede e também restringir o acesso por MAC ADRESS ou seja a máquina de FULANO vai ter ip X que é liberado para o MAC X ou seja o IP X está ligado ao MAC da máquina do fulano então sempre que ele entrar na rede ele vai receber o ip X e caso ele mude então vai fikr sem net pois o iptables vai bloqueiar ao perceber que o ip que ele colocou não está ligado ao mac que está cadastrado.

Pacotes necessários e sua devida função.

DHCPD
para distribuir os ips automáticament, nem vou detalhar creio que quem vai seguir esse tutorial ja deve saber o que é um dhcp.IPTABLES – (Firewall)
para conferir se o ip ta ligado diretamente ao MAC no dhcpd pois se não tiver o firewall não deixa passar.

configuração do dhcpd é siples abaixo segue o meu dhcpd.conf todo comentado

#CONFIGURAÇÕES PADRÃO
	ddns-update-style none;
	default-lease-time 600;
	max-lease-time 7200;
	authoritative;
#DEFININDO A CLASSE E MASCARA DA REDE
subnet 192.168.2.0 netmask 255.255.255.0
{
#DEFININDO PARA ROTEAR ENTRE 0.50 A 0.100
	range 192.168.2.50 192.168.2.100;
#DEFININDO O GATWAY
	option routers 192.168.2.1;
#DEFININDO OS DNS SEPARANDO POR VIRGULA SE HOUVER MAIS
	option domain-name-servers 200.149.55.140,200.202.193.171;
#DEFININDO O BROADCAST
	option broadcast-address 192.168.2.255;
#DEFININDO O IP CERTO PARA CADA MAC CADASTRADO ABAIXO
	host 01
	{
		hardware ethernet 00:11:11:67:B3:D3;
		fixed-address 192.168.2.51;
	}
	host 02
	{
		hardware ethernet 00:40:F4:C8:D0:09;
		fixed-address 192.168.2.52;
	}
	host 03
	{
		hardware ethernet 00:06:25:07:61:39;
		fixed-address 192.168.2.53;
	}
}

Agora a regra no firewall para liberar a conexão para aquele ip que está amarrado aquele mesmo mac que existe no dhcpd.conf, eu criei um arquivo chamado clientes.txt e em cada linha eu coloquei o seguinte:
-> nome|ip|mac – ex: cliente|192.168.2.10|00:00:00:00:00:00

depois fiz um arquivo em shell script e dentro criei um laço para ler o arquivo clientes.txt e sair dando as regras então sendo assim no meu arquivo shell ficam as linhas do firewall abaixo, sendo que são rodadas de acordo com a quantidade de clientes que tem no clientes.txt

for reg in `cat $CLIENTES` ; do
       echo -n "Liberando o cliente "
       cliente=`echo $reg | cut -d"|" -f1`
       ip=`echo $reg | cut -d"|" -f2`
       mac=`echo $reg | cut -d"|" -f3`
         iptables -t filter -A FORWARD -d 0/0 -s $ip -m mac --mac-source $mac -j ACCEPT
         iptables -t filter -A FORWARD -d $ip -s 0/0 -j ACCEPT
         iptables -t filter -A INPUT -s $ip -d 0/0 -m mac --mac-source $mac -j ACCEPT
         iptables -t nat -A POSTROUTING -s $ip -o $IF_EXTERNA -j MASQUERADE
       echo $cliente
done

Ou seja se alguem ta na rede e não existe no clientes.txt então esse alguem não vai receber ip do dhcpd, mas caso ele seja insistente e coloque um IP fixo então o firewall não vai deixar ele passar.

Instalando squid + sarg

Bem pessoal, essa instalação e configuração foi voltada pra distro Fedora. Vamos instalar o Squid nativo do Fedora:

# yum install squid

Depois vou explicar por que instalar o Squid nativo de Fedora, mas se quiser, pode ser rpm mesmo.

Vamos instalar o gcc pra não dar erro na hora da compilação do Squid:

# yum install gcc-c++ gcc gcc-gfortran

Pronto! Os pacotes necessários pra compilar o Squid estão legais.

OBS: Falei pra instalar o Squid pelo modo yum ou rpm antes de compilá-lo, pois essa compilação que veremos daqui a pouco nos permite iniciar o Squid pelo comando padrão do fedora: “service squid start”, mas não dêem esse comando agora pra não dar nenhum erro na compilação do Squid.

Baixando e compilando o Squid

A versão do Squid que aqui se encontra foi a que eu baixei na época da minha primeira instalação do Squid no fedora, mas fica a critério se quiser pegar uma versão mais nova do que postada aqui. mas procurem sempre pegar uma versão STABLE – (estável) do Squid pra que você não tenha problemas de bugs etc.

Os passos que daremos a seguir são os comandos básicos pra qualquer distro:

# groupadd squid
# useradd -g squid -s /dev/null squid >/dev/null 2>&1
# wget
http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE13.tar.gz
# tar zxvf squid-2.6.STABLE13.tar.gz
# cd squid-2.6.STABLE13
./configure –sysconfdir=/etc/squid \

–disable-ident-lookups \
–enable-err-languages=Portuguese \
–enable-default-err-language=Portuguese \
–enable-delay-pools \
–enable-removal-policies \
–enable-storeio=”diskd aufs coss ufs” \
–enable-cache-digests\
–enable-poll \
–disable-ident-lookups \
–enable-truncate \
–enable-removal-policies \
–enable-arp-acl
# make
# make install

Pronto! Até aqui a compilação está feita.
Com isso compilamos e instalamos o nosso Squid. Pode pegar o squid.conf que se encontra aqui embaixo como seu squid.conf padrão:

# CONFIGURAÇÃO SERVIDOR PROXY

http_port 3128
# http_port 3128 transparent (caso seja transparente)
visible_hostname CPD
#client_netmask 255.255.255.0 (Desabilitando a máscara de rede, aparecerá o IP que no access.log)

# Configuracoes de cache, dono, logs, errors
cache_effective_user squid
cache_effective_group squid
cache_mem 128 MB
cache_dir diskd /etc/squid/cache 10000 32 256 Q1=64 Q2=72
cache_access_log /etc/squid/logs/access.log
cache_log /etc/squid/logs/cache.log
cache_store_log /etc/squid/logs/store.log
error_directory /usr/share/squid/errors/Portuguese

# Atualização do cache
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
auth_param basic children 5
auth_param basic realm PMJ-BA Proxy
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

# IP’s da rede local com tudo liberado
acl ip_diretoria src “/etc/squid/ip_diretoria”
http_access allow ip_diretoria

# IP’s da rede local bloqueados
acl ip_bloqueado src “/etc/squid/ip_bloqueado”
http_access deny ip_bloqueado

# Site bloqueado por domínio
acl dominio_bloqueado dstdomain “/etc/squid/dominio_bloqueado”
http_access deny dominio_bloqueado

# Regras de bloqueio de site por palavras (ex: o termo puta está bloqueado, porém a palavra deputado pode ser acessada)
acl palavra url_regex -i “/etc/squid/palavras_negadas”
acl palavras_permitidas url_regex -i “/etc/squid/palavras_permitidas”
http_access deny palavra !palavras_permitidas

# ACL’s da rede local
acl REDE_INTERNA src 192.168.3.0/24

# ACL global e portas
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 to_localhost dst 127.0.0.0/255.255.255.255
acl Safe_ports port 10000 # webmin
acl Safe_ports port 631 # cups
acl Safe_ports port 901 # samba
acl SSL_ports port 443 563 1834 1863 4242 # SSL
acl Safe_ports port 80 8080 # 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

# Validação das redes local
http_access allow REDE_INTERNA
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access deny all !REDE_INTERNA
icp_access deny all !REDE_INTERNA
# cd /etc/squid
# mv squid.conf squid.conf.bkp
(apenas estamos fazendo um bkp do original)
# cp squid.conf /etc/squid (copiando nosso squid.conf… ou crie o arquivo com algum editor da sua preferência)

Agora vamos criar os diretórios de log e cache. No nosso squid.conf temos eles definidos dentro de /etc/squid:

# mkdir logs
# mkdir cache

Vamos criar os logs e dar permissão:

# touch logs/access.log logs/store.log logs/cache.log
# chown -R squid.squid logs cache

Agora vamos iniciar o squid:

# service squid start -> olha aqui o por quê instalar o squid pelo yum ou rpm

ou

# squid

Caso aconteça erros… um comando interessante de debug seria:

# squid -NCd1

Com ele você terá um debug em tempo real te retornando os erros em específico. Acho que é só isso.

Obs: Essa compilação foi bem simples. Ela contém opções interessantes como delay-pools para controle de banda e arp-acl para controle de mac address. Você pode melhorar, adicionar ou até mesmo remover algumas opções desse configure.

Nessa dica estarei abordando o SARG (Squid Analysis Report Generator), que é um gerador de relatórios para o Squid. A distro que eu uso é o Fedora Core 6.O SARG pode ser obtido em:

Vamos seguir passo a passo a instalação e configuração do SARG.

Instalando o SARG e dependências:

# yum install gd
# rpm -ivh sarg-2.2-1.fc3.rf.i386.rpm

OK… SARG instalado!

Editando o arquivo de configuração:

# vi sarg.conf

Alterei as seguintes linhas de acordo com minhas preferências:

29: language Portuguese
36: access_log /var/log/squid/access.log
48: title “Relatorio de Acessos do Squid”
143: output_dir /var/www/html/squid
Gerando o relatório:# sarg -f /etc/sarg/sarg.conf
SARG: Records in file: 343045, reading: 100.00%

Caso você queira um relatório para o mês todo pode usar a opção “-d”.

# sarg -f /etc/sarg/sarg.conf -d 01/05/2007-31/05/2007
SARG: Records in file: 3883045, reading: 100.00%

Relatório gerado! Verificando:

# cd /var/www/html/squid/
# ls

drwxr-xr-x 213 root root 12288 May 31 15:14 2007May31-2007May31
drwxr-xr-x 213 root root 323477 May 31 15:14 2007May01-2007May31
drwxr-xr-x 2 root root 4096 May 28 15:11 images
-rw-r–r– 1 root root 3916 May 28 15:17 index.html

Repare que foi gerada uma pasta 2007May27-2007May28 e outra 2007May01-2007May31 com os respectivos relatórios.

Beleza, pronto para usar, se você quiser pode colocar no CRON um agendamento para gerar relatórios diários.

Fiz um script simples e coloquei no /etc/cron.daily/:

#!/bin/bash
#
# Gera relatórios diários para o SARG

DIA=`date +%d`
MES=`date +%m`
ANO=`date +%Y`
/usr/bin/sarg -f /etc/sarg/sarg.conf -d $DIA/$MES/$ANO

Fonte: www.vivaolinux.com.br

KDE 4 – LINUX

kde4

Haja vista o XP ainda é forte concorrente do LINUX em facilidade, não vou nem comentar em segurança pq seria perca de tempo ou o mesmo que reinventar a RODA.

Acredito na hipótese de que a grande massa, ainda não se está satisfeita com o LINUX, não só por ser um outro sistema no qual elas não conhecem, e sim pela grade de facilidades que o Windows XP te dá, assim como também pela QUALIDADE da maioria dos softwares desenvolvidos para rodar na arquitetura do Windows, vale ressaltar que no linux temos programas similares para talvez suprir a necessidade de ir a um Windows, mas assim como eu, sei que existem outros que preferem utilizar um Windows com o Drea, Flash e ou Photo Shop, Corel a ter que emular os mesmos em um terminal linux.

Voltando ao foco dessa matéria, quero lhes informar que foi lançada a versão 4 do KDE no qual eu tive o prazer de testar e aprovo, na minha opinião ficou melhor e gostei do estilo que saiu o kde 4 assim como a facilidade de acesso aos seus utensílios. Indico aos users linux fazerem o mesmo teste e postar o comentário aqui para compartilharmos idéias.

Quero atentar para o caso de que instalei no Fedora 8 Core, e que li um artigo onde diz que ele já virá no fedora 9 mas por via das dúvidas vai ai o site com o path certinho pra instalar no fedora e em outras distros.

http://www.kde.org/download/#v4.1

https://admin.fedoraproject.org/updates/F9/FEDORA-2008-6743

Artigos sobre o assunto podem ser encontrados nos links abaixo:

http://meiobit.pop.com.br/linux/kde_4_e_suas_firulas

http://www.kde.org/announcements/4.0/index-pt_BR.php