Ajudem a melhorar este script IPTABLES
Publicado por Cleyton Ferrari 12/05/2005
[ Hits: 17.756 ]
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
Calculadora de host de uma rede
Gerador de PPP para USB (Palm OS e Pocket PC)
Script de instalação do Xorg 7.2 modificado para processadores AMD64
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)