Ajudem a melhorar este script IPTABLES
Publicado por Cleyton Ferrari 12/05/2005
[ Hits: 17.754 ]
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
Testa se há conexão com a internet (Funciona)
Inventário e Análise de hardware
mailnow - Envia mensagens pelo shell
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? (14)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)