Controlando o compartilhamento de internet por MAC

Publicado por Cleyton Ferrari 02/05/2005

[ Hits: 8.930 ]

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

Colorindo o seu Shell Script

Configuração Apache e DNS (bind)

AVG Update Shell Script

calculadora

Criar lançadores de aplicativos no Unity


  

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