Firewall Pessoal (iptables)
Publicado por Dix (última atualização em 08/09/2014)
[ Hits: 10.244 ]
Shell Script comentado contendo regras de um firewall iptables estruturado em funções.
#!/bin/bash # # Shell Script - Firewall # Testado em Dedian 7 # ======================= # by Hudson A. Gadioli (huddioli) # 2014-09-05 # # Se for adicionado na inicialização do sistema irá funcionar corretamente echo -e "{FONTE}33[01;37m" # Variaveis # Não implementado # inet=$1 # ipt=/sbin/iptables # network="192.168.0.0/24" # ip="10.5.1.3" function CarregaModulos(){ echo -n "Carregando módulos ............................................" # Carrega os módulos modprobe ip_tables #modproble iptable_nat } function LimpaRegras(){ echo -n "Limpando regras ..............................................." # Limpando as Chains iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -F -t filter iptables -F POSTROUTING -t nat iptables -F PREROUTING -t nat iptables -F OUTPUT -t nat iptables -F -t nat iptables -t nat -F iptables -t mangle -F iptables -X # Zerando contadores iptables -Z iptables -t nat -Z iptables -t mangle -Z # Define politicas padrao ACCEPT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT } function PoliticaPadrao(){ echo -n "Definindo politica padrão ....................................." # Define a politica padrao de cada chain iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP } function CriaChain(){ echo -n "Criando chains ................................................" # iptables -N LOGADO } function LiberaLoopback(){ echo -n "Liberando loopback ............................................" iptables -A INPUT -i lo -d 127.0.0.1 -j ACCEPT # A potítica padrão da chain OUTPUT já é ACCEPT # iptables -A OUTPUT -o lo -d 127.0.0.1 -j ACCEPT } function LiberaConexoes(){ echo -n "Liberando conexões ............................................" # Liberar Conexões Estabelecidas iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Liberar o ping da propria máquina para a sua placa de rede # iptables -A INPUT -p icmp -s $ip -j ACCEPT } function LiberaPortas(){ echo -n "Liberando portas .............................................." # iptables -A INPUT -p tcp --dport 80 -j ACCEPT } function Protecao(){ echo -n "Aplicando regras de proteção .................................." i=/proc/sys/net/ipv4 # Desabilita o trafego IP entre as placas de rede echo "0" > /proc/sys/net/ipv4/ip_forward # Protecao contra SYN flood echo "1" > $i/tcp_syncookies echo "1" > $i/icmp_echo_ignore_broadcasts # Protecao contra responses bogus echo "1" > $i/icmp_ignore_bogus_error_responses for i in /proc/sys/net/ipv4/conf/*; do # Impedir que um atacante possa maliciosamente alterar alguma rota echo "0" > $i/accept_redirects # Utilizado em diversos ataques, isso possibilita que o atacante # determine o "caminho" que seu pacote vai percorrer (roteadores) # ate seu destino. echo "0" > $i/accept_source_route echo "1" > $i/log_martians # Configurando a Protecao anti-spoofing echo "1" > $i/rp_filter done # Proteção contra Ataques - Registra no LOG do sistema iptables -I INPUT 1 -m state --state INVALID -j LOG --log-level info --log-prefix "PKT INVALIDO - " iptables -I INPUT 2 -m state --state INVALID -j DROP # Proteção contra os "Ping of Death" # Na configuração padrão do script todos as respostas aos PINGs foram desativadas # # iptables -A INPUT -i $inet -p icmp --icmp-type 8 -m limit --limit 5/m -j DROP # iptables -A INPUT -i $inet -p icmp --icmp-type 0 -j ACCEPT # iptables -A INPUT -i $ilan -p icmp -j ACCEPT # Proteção contra Port Scanner iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 5/m -j ACCEPT } function Servidores(){ echo -n "Liberando conexão de entrada nos servidores ..................." # Apache - Servidor Web #iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT # Apache TomCat - Servidor Web #iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # Bind - Servidor DNS #iptables -A INPUT -p udp --dport 53 -j ACCEPT # DanGuardian - Servidor Proxy #iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # ProFTP - Servidor FTP #iptables -A INPUT -p tcp --dport 21 -j ACCEPT #iptables -A INPUT -p tcp -m multiport --dports 49152:49162 -j ACCEPT # Postfix - Servidor de E-mail #iptables -A INPUT -i $ilan -p tcp -m multiport --dports 25,110 -j ACCEPT #iptables -A INPUT -i $ilan -p tcp -m multiport --dports 465,995 -j ACCEPT #iptables -A INPUT -i $ilan -p tcp --sport 25 -j ACCEPT # PostgreSQL - Servidor Postgresql #iptables -A INPUT -i $ilan -p tcp --dport 5432 -j ACCEPT # SSH - Servidor SSH #iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j DROP #iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set #iptables -A INPUT -p tcp --dport 22 -j ACCEPT # VNC - Servidor de Acesso Remoto #iptables -A INPUT -p tcp --dport 5900 -j ACCEPT # PROTOCOLOS E SERVIÇOS # # AIM #iptables -A INPUT -i $inet -p tcp --sport 5190 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 5190 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 5190 -j ACCEPT # DNS - Serviço de Nomes de Dominios #iptables -A INPUT -p tcp -m multiport --sports 53,5353 -j ACCEPT #iptables -A INPUT -p udp -m multiport --sports 53,5353 -j ACCEPT #iptables -A FORWARD -p tcp -m multiport --sports 53,5353 -j ACCEPT #iptables -A FORWARD -p udp -m multiport --sports 53,5353 -j ACCEPT #iptables -A FORWARD -p tcp -m multiport --dports 53,5353 -j ACCEPT #iptables -A FORWARD -p udp -m multiport --dports 53,5353 -j ACCEPT # FTP - Protocolo de Transferência de Arquivo #iptables -A INPUT -i $inet -p tcp --sport 21 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 21 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 21 -j ACCEPT # HTTP - Protocolo de Transferência de Hypertext #iptables -A INPUT -i $inet -p tcp -m multiport --sports 80,8080 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp -m multiport --sports 80,8080 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp -m multiport --dports 80,8080 -j ACCEPT # HTTPS - Protocolo de Transferência de Hypertext Seguro #iptables -A INPUT -i $inet -p tcp --sport 443 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 443 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 443 -j ACCEPT # IAPP - Protocolo de Ponto de Acesso #iptables -A INPUT -i $ilan -p udp --sport 2313 -j ACCEPT # IPP - Protocolo de Impressão na Internet #iptables -A INPUT -i $ilan -p tcp --dport 631 -j ACCEPT #iptables -A INPUT -i $ilan -p udp -m multiport --dports 138,631 -j ACCEPT # IRC - Internet Relay Chat #iptables -A INPUT -i $inet -p tcp --sport 6667 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 6667 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 6667 -j ACCEPT # Microsoft-DS - Serviços de Diretório da Microsoft #iptables -A INPUT -i $ilan -p tcp --dport 445 -j ACCEPT #iptables -A INPUT -i $ilan -p tcp -m multiport --sports 139,445 -j ACCEPT # MSNMS - Serviço de Mensageiro de Rede da Microsoft #iptables -A INPUT -i $inet -p tcp -m multiport --sports 1863,1900 -j ACCEPT #iptables -A INPUT -i $inet -p udp --sport 1900 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp -m multiport --sports 1863,7001 -j ACCEPT #iptables -A FORWARD -i $inet -p udp --sport 7001 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp -m multiport --dports 1863,7001 -j ACCEPT #iptables -A FORWARD -o $inet -p udp --dport 7001 -j ACCEPT # NETBIOS-SSN - Serviço de Sessão NetBIOS #iptables -A INPUT -i $ilan -p udp -m multiport --dports 137,138 -j ACCEPT #iptables -A INPUT -i $ilan -p tcp --dport 139 -j ACCEPT # NO-IP - Provedor de DNS Dinâmico #iptables -A INPUT -i $inet -p tcp --sport 8245 -j ACCEPT # NTP - Protocolo para sincronização dos relógios #iptables -A INPUT -i $inet -p udp --sport 123 -j ACCEPT #iptables -A FORWARD -i $inet -p udp --sport 123 -j ACCEPT #iptables -A FORWARD -o $inet -p udp --dport 123 -j ACCEPT # POP3S - Protocolo de Correio Seguro #iptables -A INPUT -i $inet -p tcp --sport 995 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 995 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 995 -j ACCEPT # SSDP - Protocolo para Descoberta de Serviços Simples #iptables -A INPUT -i $ilan -p udp --dport 1900 -j ACCEPT # SSH - Shell Seguro #iptables -A INPUT -p tcp --sport 22 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 22 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 22 -j ACCEPT # SSMTP - Protocolo Simples para Transferência de Correio Seguro #iptables -A INPUT -i $inet -p tcp -m multiport --sports 465,587 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 465 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 465 -j ACCEPT # TELNET #iptables -A INPUT -p tcp --sport 23 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 23 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 23 -j ACCEPT # VNC - Computação em Rede Virtual #iptables -A INPUT -p tcp --sport 5900 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 5900 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 5900 -j ACCEPT # XMPP - Protocolo de Presença e Mensagens Extensiva #iptables -A INPUT -i $inet -p tcp --sport 5222 -j ACCEPT #iptables -A FORWARD -i $inet -p tcp --sport 5222 -j ACCEPT #iptables -A FORWARD -o $inet -p tcp --dport 5222 -j ACCEPT } function AtivaPing(){ echo -n "Ativando resposta do ping ....................................." echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all } function DesativaPing(){ echo -n "Desativando resposta do ping .................................." echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all } function DesativaProtecao(){ echo -n "Removendo regras de proteção .................................." i=/proc/sys/net/ipv4 echo "1" > /proc/sys/net/ipv4/ip_forward echo "0" > $i/tcp_syncookies echo "0" > $i/icmp_echo_ignore_broadcasts echo "0" > $i/icmp_ignore_bogus_error_responses for i in /proc/sys/net/ipv4/conf/*; do echo "1" > $i/accept_redirects echo "1" > $i/accept_source_route echo "0" > $i/log_martians echo "0" > $i/rp_filter done } function IniciaFirewall(){ echo "FIREWALL 1.0 - by HUDDIOLI" echo if CarregaModulos then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if LimpaRegras then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if PoliticaPadrao then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if CriaChain then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if LiberaLoopback then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if LiberaConexoes then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if LiberaPortas then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if Protecao then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if DesativaPing then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if Servidores then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi # Lista de Funções executadas #LimpaRegras #PoliticaPadrao #CriaChain #LiberaLoopback #LiberaConexoes #LiberaPortas #Protecao #DesativaPing #Servidores echo } function ParaFirewall(){ echo "FIREWALL 1.0 - by HUDDIOLI" echo if LimpaRegras then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if AtivaPing then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi if DesativaProtecao then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi # Lista de Funções executadas #LimpaRegras #AtivaPing #DesativaProtecao echo } function ReiniciaFirewall(){ echo "FIREWALL 1.0 - by HUDDIOLI" echo ParaFirewall IniciaFirewall echo } case $1 in start) IniciaFirewall exit 0 ;; stop) ParaFirewall ;; restart) ReiniciaFirewall ;; -l) iptables -L -nv --line-numbers ;; ativaping) if AtivaPing then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi #AtivaPing ;; desativaping) if DesativaPing then echo -e "[{FONTE}33[01;32m OK {FONTE}33[01;37m]" else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]" fi #DesativaPing ;; *) echo "Escolha uma opção válida { start | stop | restart | ativaping | desativaping | -l }" echo esac # Outras opções úteis # Mais uma linha interessante de se adicionar, que protege contra pacotes danificados (usados em ataques DoS por exemplo) é: #iptables -A FORWARD -m unclean -j DROP # Compartilha a conexão (IP Masquerading) #modprobe iptable_nat #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #echo "1" > /proc/sys/net/ipv4/ip_forward # Abre para a rede local #iptables -A INPUT -p tcp --syn -s 10.4.152.0 -j ACCEPT #iptables -A INPUT -p tcp --syn -s 10.4.0.0 -j ACCEPT #iptables -A OUTPUT -p tcp --syn -s 10.4.128.0/255.255.252.0 -j ACCEPT # Para registrar os pacotes ICMP no LOG do sistema /var/log/messages #iptables -A LOGADO -j LOG --log-level info --log-prefix "ICMP Registrado - " #iptables -I OUTPUT 1 -d 127.0.0.1 -p icmp -j LOGADO
Instala JRE no Firefox com Fedora
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - CRIANDO USUÁRIOS A PARTIR DE ARQUIVO
Criando Autoridades Certificadoras e Certificados de Testes no Linux
Verificar atividade de serviços no Tomcat
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta