Jump to content

Recommended Posts

Posted (edited)

Script básico para liberar porta no IPTABLES.

O mesmo dispõe de configuração para até quatro ranges de portas individuais!

o script aplica as regras a todas as interfaces, por padrão bloqueia portas fora do range (INPUT),  icmp, UDP DNS, e alguns Floods.

CUIDADO! A conexão do servidor será diretamente afetada, caso for editar o code do script, teste-o em um ambiente fora de produção.    

Download do Script (Básico): fw.sh

Como usar o Script (Básico):

Pré requisitos:

Acesso root ou equivalente, Wget, iptables e nano instalados.

Para verificar as versões do mesmos:

# iptables --version

# wget --version

# nano --version

Com tudo ok, basta upar o script para o servidor, ou cria-lo com o nano.

# nano fw.sh

# colar o code do script e apertar Ctrl+x  para sair, e pressionar Y quando for confirmar a saída, isso salvará o arquivo.

 Após devidamente upado para o servidor, o script precisa de permissão de execução, leitura e escrita, para entregar tais permissões basta utilizar o CHMOD.

# chmod 755 fw.sh

Lembrando caso mude de nome o arquivo, utilizar o nome salvo.

 

Configuração e Ativação do Script:

Após o script devidamente alocado no servidor, vamos efetuar os testes para funcionamento, antes de edita-lo e coloca-lo em produção.

Use o comando ./fw.sh status o mesmo deve mostar o seguinte resultado. (pode variar caso ja exista alguma regra no iptables.)

img1.thumb.PNG.ed9a9ecbf36c250f782abc269

Antes de configurar, você deve executa-lo uma unica vez com a config padrão em modo FULL, para verificar se seu iptables esta com todas os modulo ativos.

# ./fw.sh FULL

se tudo estiver ok ira mostrar uma tela parecida com a abaixo:

img2.thumb.PNG.b752926c80c7e2cd579472412

Após o teste efetuado com sucesso, desative-o ./fw.sh stop para executar a configuração do mesmo.

Para configura-lo, precisamos edita-lo com o NANO, a configuração é de fácil execução ja que basta apenas informar os ranges de portas a serem usadas.

nano fw.sh (deve ter uma saida parecida com a abaixo).

img3.thumb.PNG.c83f2c50c3a29251f9f1b43e0

Na parte de Variáveis você deve editar a referente a cada range de porta que deseja usar.

img4.thumb.PNG.ea3732059ad42653944269105

Não esqueça de LIMPAR o range que não for usar, basta adicionar 0 entre os aspas (Não deixe em branco, ou irá aparecer erros na execução.) caso contrário ele ira abrir as portas de demonstração.

img5.thumb.PNG.d8ba396e196d505901451e663

Agora é só salvar e usa-lo.

Para saber as opções disponíveis, basta executa-lo sem nenhuma opção, o mesmo te providenciará um menu.

img6.thumb.PNG.1c38330dbacd872b137c54ae0

Bom uso a todos! 

Code do script:

#!/bin/bash
# Script Feito por Luis Fernando - OLKHost.net
# Parte Deste script foi baseada em outro script, feito por Eudes - PLAYHARD-JOSELITO
# Divulgação Livre desde que seja divulgada a fonte. 
# Qualquer tipo de modificação deve ser notificada ao criador, pelo email: olokz@olkhost.net
# Para que a mesma seja disponibilizada publicamente na fonte. 
# Proibida a Comercialização do Mesmo.
# Sua ajuda e de extrema importancia, para a manutencao do script.
# Caso algum host de sua rede esteja alocado em nossa listagem, por favor entre em contato.#
######################################################
# Variaveis
######################################################
# IPTABLES.                                          
ipt="/sbin/iptables"                                 
######################################################
#Range de portas 1
R1="25:2000"
######################################################
#Range de portas 2
R2="25:2000"
######################################################
#Range de portas 3
R3="25:2000"
######################################################
#Range de portas 4
R4="25:2000"
######################################################

fw_R1(){

#Regras do Range 1

 $ipt -A INPUT -p tcp --destination-port $R1 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R1 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port $R1 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R1 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R1 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R1 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 
 echo "RANGE 1 ATIVADO COM SUCESSO. "
}

fw_R2(){

#Regras do Range 2

 $ipt -A INPUT -p tcp --destination-port $R2 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R2 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port $R2 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R2 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R2 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R2 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 
 echo "RANGE 2 ATIVADO COM SUCESSO. "

}

fw_R3(){

#Regras do Range 3

 $ipt -A INPUT -p tcp --destination-port $R3 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R3 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port $R3 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R3 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R3 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R3 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 
 echo "RANGE 3 ATIVADO COM SUCESSO. "
}

fw_R4(){

#Regras do Range 4

 $ipt -A INPUT -p tcp --destination-port $R4 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R4 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port $R4 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R4 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port $R4 -m state --state NEW -m hashlimit --hashlimit-mode srcip,dstport --hashlimit-name R4 --hashlimit 5/s --hashlimit-burst 5 -j ACCEPT
 
 echo "RANGE 4 ATIVADO COM SUCESSO. "
}

basic(){

#Regras Basicas.
 $ipt -F
 $ipt -X
 $ipt -P INPUT ACCEPT
 $ipt -P OUTPUT ACCEPT
 $ipt -A INPUT -i lo -j ACCEPT
 $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port 20:22 -j ACCEPT
 $ipt -A INPUT -p udp --destination-port 20:22 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port 53 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port 953 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port 80 -j ACCEPT
 $ipt -A INPUT -p tcp --destination-port 443 -j ACCEPT 

  echo "REGRAS BASICAS ATIVADAS COM SUCESSO. "
}

kernel(){

#Config Kernel.

 echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_all
 echo "1" > /proc/sys/net/ipv4/tcp_syncookies
 echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

 echo "REGRAS DE KERNEL ATIVADAS."
}

drop(){

#Regras de DROP.

 $ipt -A INPUT -m state --state INVALID -j DROP
 $ipt -A INPUT -p udp -m pkttype --pkt-type broadcast -j DROP
 $ipt -A INPUT -p icmp -f -j DROP
 $ipt -A OUTPUT -p icmp --icmp-type 3 -j DROP
 $ipt -A INPUT  -s 10.0.0.0/8 -j DROP
 $ipt -A INPUT  -s 169.254.0.0/16 -j DROP
 $ipt -A INPUT  -s 172.16.0.0/12 -j DROP
 $ipt -A INPUT  -s 224.0.0.0/4 -j DROP
 $ipt -A INPUT  -s 240.0.0.0/5 -j DROP
 $ipt -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
 $ipt -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
 $ipt -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
 $ipt -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
 $ipt -A INPUT -p udp --sport 0 -j DROP
 $ipt -A INPUT -j DROP
 
 echo "REGRAS DE DROP ATIVADAS COM SUCESSO. "
}


stop(){

echo "Desativando o Firewall."

# Limpando as regras de Firewall.
 $ipt -F
 $ipt -X
 $ipt -t mangle -F
 $ipt -t mangle -X
 $ipt -P INPUT ACCEPT
 $ipt -P OUTPUT ACCEPT

 

# Habilitando o Ping.
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all


echo "FIREWALL DESATIVADO COM SUCESSO. "

}

 

case "$1" in
 "R1")
        basic; fw_R1; kernel; drop;
  ;;
 
  "R2")
        basic; fw_R2; kernel; drop;
  ;;
 
  "R3")
        basic; fw_R3; kernel; drop;
  ;;
 
  "R4")
        basic; fw_R4; kernel; drop;
  ;;

 "stop")
        stop
  ;;

 "status")
    clear
    $ipt -L -n -v |more
  ;;

  "FULL")
         basic; fw_R1; fw_R2; fw_R3; fw_R4; kernel; drop;
  ;;


  *)
    echo "Opcao incorreta, opcoes disponiveis:"
    echo "R1 - ATIVA A CONFIGURACAO APENAS DO RANGE 1 "
    echo "R2 - ATIVA A CONFIGURACAO APENAS DO RANGE 2 "
    echo "R3 - ATIVA A CONFIGURACAO APENAS DO RANGE 3 "
    echo "R4 - ATIVA A CONFIGURACAO APENAS DO RANGE 4 "
    echo "FULL - ATIVA TODAS AS CONFIGURACOES DE RANGE. "
    echo "status - MOSTRA UMA TELA COM AS REGRAS NO IPTABLES. "
    echo "stop - DESATIVA E REMOVE AS REGRAS. "
    echo " "
    echo "VERSION 0.1a - ALPHA TESTE. by Olokz."    
esac

 

ChangeLog do Script:

----------------------------------------------

Versão 0.1a - * Inicio da Produção.

-----------------------------------------------

Redes Bloqueadas pelo Script.

Em Produção

Pessoas que ajudaram no desenvolvimento do Script.

Em Produção

Por Favor. Ajude na manutenção do script! - Esta usando ??? Deixe o seu FeedBack! - Gostou do Script?? Curta!

Edited by olokz

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?