--dport $i -j DROP$IPTABLES -A OUTPUT -p tcp --dport $i -j DROP$IPTABLES -A OUTPUT -p udp --dport $i -j DROPdone#bloqueio Anti-Spoofings$IPTABLES -A INPUT -s 10.0.0.0/8 -i $WAN -j DROP$IPTABLES -A INPUT -s 127.0.0.0/8 -i $WAN -j DROP$IPTABLES -A INPUT -s 172.16.0.0/12 -i $WAN -j DROP$IPTABLES -A INPUT -s 192.168.1.0/16 -i $WAN -j DROPecho "ativado o bloqueio de tentativa de ataque do tipo Anti-spoofings"echo "ON .................................................[ OK ]"#Bloqueio de scanners ocultos (Shealt Scan)$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK, FIN, -m limit --limit 1/s -j ACCEPTecho "bloqueado scanners ocultos"echo "ON .................................................[ OK ]"#amarrar ip ao macfor i in `cat $MACLIST`; do#aqui cada linha do maclist e atribuida de cada vezSTATUS=`echo $i cut -d ';' -f 1`#o comando echo exibe o conteudo da variavel e o pipe "" repassa a saida para outro comando,# o cut por sua vez reparte cada linha em pedacos onde o delimitador (-d) e o ';' no parametro#-f imprime na tela conteudo da 1o coluna (status), a saida deste e enviada para STATUS;IPSOURCE=`echo $i cut -d ';' -f 2`MACSOURCE=`echo $i cut -d ';' -f 3`MARK=`echo $IPSOURCE cut -d '.' -f 4`# neste caso o IPSOURCE e o MACSOURCE recebem as outras colunas da mesma linha, faco uma#ressalva para o nome do computador que eu coloquei apenas para a organizacao do maclist,#pois neste do script contara ate a 3o coluna.#aqui neste caso o comando if esta dentro do laco for#Se status = a entao iptables libera a conexao atraves destes comandos construidos na tabela filterif [ $STATUS = "a" ]; then$IPTABLES -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT$IPTABLES -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j ACCEPT$IPTABLES -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT$IPTABLES -t filter -A OUTPUT -s $IPSOURCE -d 0/0 -j ACCEPT$IPTABLES -t filter -A OUTPUT -s 0/0 -d $IPSOURCE -j ACCEPT$IPTABLES -t mangle -A PREROUTING -s $IPSOURCE -j MARK --set-mark $MARK# Se for = b entao bloqueia o MAC, ele so executa este comandos se STATUS nao for igual a "a".elif [ $STATUS = "b" ]; then$IPTABLES -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP$IPTABLES -t filter -A INPUT -m mac --mac-source $MACSOURCE -j DROP$IPTABLES -t filter -A OUTPUT -m mac --mac-source $MACSOURCE -j DROPelse$IPTABLES -t filter -I INPUT -s $IPSOURCE -j DROP$IPTABLES -t filter -I FORWARD -s $IPSOURCE -d 0/0 -j DROP$IPTABLES -t filter -I FORWARD -s 0/0 -d $IPSOURCE -j DROP$IPTABLES -t filter -I OUTPUT -d $IPSOURCE -j DROPfi #fim do elifdone #fim do forecho "Ativado a amarracao do ip ao mac"echo "ON .................................................[ OK ]"#proxy transparente$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128echo "Proxy Transparente ativado"echo "ON .................................................[ OK ]"# ativar o mascaramento$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE# Carrega controlador de banda/etc/init.d/cbq start #Para debian#/etc/rc.d/init.d/cbq start #Para slackwareechoecho "================================================="echo "::TERMINADA A CONFIGURACAO DO FIREWALL NETFILTER "echo ":: ATRAVESDO IPTABLES "echo "================================================="echo "FIREWALL ATIVADO - SISTEMA PREPARADO"echo "SCRIPT DE FIREWALL CRIADO POR :-) Marcio Ferreira da Costa :-)";;stop)$IPTABLES -F$IPTABLES -F INPUT$IPTABLES -F OUTPUT$IPTABLES -F FORWARD$IPTABLES -t mangle -F$IPTABLES