Ajudem a melhorar este script IPTABLES
Publicado por Cleyton Ferrari 12/05/2005
[ Hits: 17.960 ]
Homepage: www.w7br.com
Olá fiz este script e queria a contribuição de vc do vol para ver se nao tem nada de errado com ele!
Ajudem a melhora-lo
obrigado valew galera
#!/bin/bash
#
# Firewall
# Desenvolvido por Cleyton Ferrari
# Baseado nos seguintes scripts:
# cnc-firewall <conectiva linux 10>
# Script de Firewall para bloqueio por MACaddress <Carlos Eduardo Langoni>
# Kurumin Firewall <Morimoto>
# E demais conhecimentos adquirido nas dicas do www.vivaolinux.com.br
# Data: 12/05/2005
#
#---------------------------------#
# VARIAVEIS
#---------------------------------#
IPT=iptables #Diretório/Destino do IPTABLES
PROGRAMA=/etc/alfire #Diretório/Arquivo do Script
NET_IFACE=wlan0 #Interface da Rede Externa (Internet)
LAN_IFACE=eth0 #Interface da Rede Interna (LAN)
MACLIST=/etc/maclist #Diretário/Arquivo onde fica armazenado as MAC,IP dos clientes da rede interna(LAN)
PORTAS="20,21,25,53,80,106,110,445" #Portas Para acesso a internet
FAIXA="192.168.1.0/24" #Faixa do Nat
SSH="192.168.20.230" #SSH, coloque aki o ip que você deseja liberar para o acesso externo ao SSH
#---------------------------------#
# EXEMPLO DO ARQUIVO MACLIST
#---------------------------------#
#a;00:40:F4:AA:2E:28;192.168.1.10;Planejamento_Interno
#b;00:E0:4D:EC:4A:96;192.168.1.11;Compras_e_Protocolo
#a;00:1E:5B:EE:16:3D;192.168.1.12;Tesouraria_PMAP
#Os parametros passados são 4: Opção; MAC; IP; Descrição
#<OPÇÃO> "a" é para liberar o acesso a internet e "b" é para bloquear o acesso
#<MAC> Endereço da MAC do cliente
#<IP> Endereço do IP do cliente
#<Descrição> Uma Descrição do Cliente
#---------------------------------#
# SCRIPT PROPRIAMENTE DITO
#---------------------------------#
#Ativa o FORWARD (roteamento no kernel)
echo "1" > /proc/sys/net/ipv4/ip_forward
case $1 in
start)
#---------------------------------#
# INICIA O FIREWALL
#---------------------------------#
# Limpa as regras do iptables
for table in nat mangle filter; do
$IPT -t $table -F
$IPT -t $table -X
done
echo "..:: Lista de Clientes da Rede Interna <macfile> ::.."
#---------------------------------#
# ATIVA/BLOQUEA AS MAC/IP
#---------------------------------#
#Lê o arquivo maclist e joga seus valores nas respectivas variaveis
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 libera a conexão
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 a conexão (Bloqueia MAC/IP)
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
#Auxilia pra escrever os nomes do clientes no prompt
echo "Bloqueado - IP[$IPSOURCE] - Mac [$MACSOURCE] - [$CLIENTE]"
fi # Fim do IF
done #Fim do FOR
#---------------------------------#
# FIREWALL
#---------------------------------#
#Abre uma faixa para loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
$IPT -A INPUT -p tcp -s $FAIXA -j ACCEPT
#---------------------------------#
# ATIVA O SSH PARA O IP DESEJADO
#---------------------------------#
$IPT -A INPUT -p tcp -s $SSH -j ACCEPT
#Abre uma faixa para internet
$IPT -A INPUT -m multiport -p tcp --port $PORTAS -j ACCEPT
#Bloqueia o SSH para todos os ip
$IPT -A INPUT -s 0/0 -p tcp --dport 22 -j DROP #FEcha demais SSH
#Bloqueio contra ping
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
#Protege nosso servidor contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
$IPT -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT
#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ção contra trinoo@
$IPT -N TRINOO
$IPT -A TRINOO -j DROP
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 27444 -j TRINOO
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 27665 -j TRINOO
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 31335 -j TRINOO
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 34555 -j TRINOO
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 35555 -j TRINOO
# Proteção contra tronjans@
$IPT -N TROJAN
$IPT -A TROJAN -j DROP
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 666 -j TROJAN
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 666 -j TROJAN
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 4000 -j TROJAN
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 6000 -j TROJAN
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 6006 -j TROJAN
$IPT -A INPUT -p TCP -i $NET_IFACE --dport 16660 -j TROJAN
# Proteção contra worms@
$IPT -A FORWARD -p tcp --dport 135 -i $NET_IFACE -j REJECT
# 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
# lista todas as regras validas
echo ""
echo "..:: Listando todas as Regras do iptables Ativas ::.."
sleep 2
$IPT -L
$IPT -t nat -L
echo ""
echo "..:: Listagem completa ::.."
sleep 2
echo ""
echo "..:: FIREWALL ATIVADO ::.."
;;
stop)
#---------------------------------#
# PARA O FIREWALL
#---------------------------------#
# Limpa as regras do iptables
for table in nat mangle filter; do
$IPT -t $table -F
$IPT -t $table -X
done
#Aceita todos os pacotes
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
#Devolve a configuração padrão
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
echo "..:: FIREWALL LIBERADO ::.."
;;
*)
#---------------------------------#
# EXIBE AS OPÇÕES DE USO
#---------------------------------#
echo "Usage: alfire {start|stop}"
echo
exit 1
esac
cal2svg gerador de calendários em formato vetorial SVG
FindBackdoor - Detectar possíveis backdoors em arquivos PHP (WordPress)
olhaMeuDesktop 0.1 - Aplicativo para gravar Área de Trabalho
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









