olokz Postado Agosto 11, 2015 Compartilhar Postado Agosto 11, 2015 (editado) 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.) 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: 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). Na parte de Variáveis você deve editar a referente a cada range de porta que deseja usar. 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. 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. 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: [email protected]# 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 1R1="25:2000"#######################################################Range de portas 2R2="25:2000"#######################################################Range de portas 3R3="25:2000"#######################################################Range de portas 4R4="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! Editado Agosto 12, 2015 por olokz 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.