Controlando o compartilhamento de internet por MAC

Publicado por Cleyton Ferrari 02/05/2005

[ Hits: 9.420 ]

Homepage: www.w7br.com

Download macfire.sh




Mostra como compartilhar a internet com a rede interna e fazer um controle por mac para liberar ou bloquear o acesso, utilizando iptables!
Se tiverem algum codigo que melhorem o script nao deixe de postar!

  



Esconder código-fonte

#/bin/bash
#Script de Firewall para bloqueio por MACaddress
#Criado por Carlos Eduardo Langoni
#Adptado por Cleyton Ferrari para suprir as necessidades da Empresa que trabalho
#23/01/2003
#

IPT=iptables
PROGRAMA=/etc/macfire      #Nome do meu programa(Nome deste arquivo)
NET_IFACE=wlan0            #Internet
LAN_IFACE=eth0             #Rede interna
MACLIST=/etc/maclist       #Nome do arquivo com as mac dos clientes

#vc deve criar uma arquivo de texto puro da seguinte forma
#a;00:00:00:00:00;192.168.1.1;Computador01
#b;00:00:00:00:00;192.168.1.1;Computador02
#onde "a" o coputador acessa a internete e 
# "b" o computador nao navega!
#lembre-se de colocar o endereço do arquivo maclist na variavel MACLIST



echo "1" > /proc/sys/net/ipv4/ip_forward
case $1 in
start)
$IPT -F
$IPT -t nat -F
$IPT -t filter -P FORWARD DROP
#Escreve no prompt a lista dos clientes
clear
echo "..:: INICIADO COMPARTILHAMENTO DE INTERNET ::.."
echo ""
echo "..:: Lista de Clientes ::.."

for i in `cat $MACLIST`; do
STATUS=`echo $i | cut -d ';' -f 1`
IPSOURCE=`echo $i | cut -d ';' -f 3`
MACSOURCE=`echo $i | cut -d ';' -f 2`
CLIENTE=`echo $i | cut -d ';' -f 4`
#Se status = a então eu libera a conexao

if [ $STATUS = "a" ]; then
$IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
$IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j ACCEPT
$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE -j MASQUERADE
$IPT -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT
$IPT -t filter -A OUTPUT -s $IPSOURCE -d 0/0 -j ACCEPT

#Auxilia pra escrever os nomes do clientes no prompt
echo "Liberado  - IP[$IPSOURCE] - Mac [$MACSOURCE] - [$CLIENTE]"

# Se for = b então bloqueia o MAC
else
$IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j DROP
$IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j DROP
$IPT -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j DROP
$IPT -t filter -A OUTPUT -s $IPSOURCE -d 0/0 -j DROP

echo "Bloqueado - IP[$IPSOURCE] - Mac [$MACSOURCE]"

fi # Fim do IF
done #Fim do FOR

#============================================================================================
#Firewall de teste criado por Cleyton Ferrari baseado no kurumin firewall
#02/05/2005 - Alto Paraíso/Rondônia - Brasil
#
echo ""
echo "..:: Iniciando o carregamento do Firewall ::.."


#Abre para a interface de loopback
$IPT -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
$IPT -A INPUT -i lo -j ACCEPT

#Bloqueia ping a maquina servidora da net
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

#Protege nosso servidor contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

#Protege conta ICMP Broadcasting
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#Bloquea Traceroute
$IPT -A INPUT -p udp --dport 33435:33525 -j DROP

# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
$IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -N VALID_CHECK
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP

# Bloqueia programas P2P
#iMesh
$IPT -A FORWARD -d 216.35.208.0/24 -j REJECT
#BearShare
$IPT -A FORWARD -p TCP --dport 6346 -j REJECT
#ToadNode
$IPT -A FORWARD -p TCP --dport 6346 -j REJECT
#WinMX
$IPT -A FORWARD -d 209.61.186.0/24 -j REJECT
$IPT -A FORWARD -d 64.49.201.0/24 -j REJECT
#Napigator
$IPT -A FORWARD -d 209.25.178.0/24 -j REJECT
#Morpheus
$IPT -A FORWARD -d 206.142.53.0/24 -j REJECT
$IPT -A FORWARD -p TCP --dport 1214 -j REJECT
#KaZaA
$IPT -A FORWARD -d 213.248.112.0/24 -j REJECT
$IPT -A FORWARD -p TCP --dport 1214 -j REJECT
#Limewire
$IPT -A FORWARD -p TCP --dport 6346 -j REJECT
#Audiogalaxy
$IPT -A FORWARD -d 64.245.58.0/23 -j REJECT

#Ponto Chave do firewall! Se nao entrar em nenhuma regra acima rejeita tudo!
$IPT -A INPUT -p tcp --syn -j DROP
#============================================================================================
echo ""
echo "..:: FIREWALL ATIVADO SISTEMA PREPARADO ::.."
echo ""

;;
stop)
$IPT -F
$IPT -Z
$IPT -X
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -F
echo "0" > /proc/sys/net/ipv4/tcp_syncookies
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "0" > /proc/sys/net/ipv4/ip_forward

clear
echo ""
echo ""
echo "..:: FIREWALL DESCARREGADO SISTEMA LIBERADO ::.."
echo ""
echo ""
;;
esac

Scripts recomendados

Srt2vtt in Shell Script (Beta)

Calculador de números primos

Manutenção de Usuários Proxy Autenticado com NCSA

Instalador Automático de ZoneMinder em Ubuntu

Criação de maquinas no SAMBA


  

Comentários
[1] Comentário enviado por agk em 03/05/2005 - 21:53h

Bacana a idéia de controlar os acessos através do Firewall por MAC, mas seria mais interessante ainda fazer isso pelo squid.

[2] Comentário enviado por cleyton17 em 04/05/2005 - 14:05h

oi! AGK!
Tou ainda engatinhando neste mundo maravilhoso do Linux, não entendo praticamente nada de squid! mas ja comecei a estuda-lo.
Valeu pela idéia!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts