Firewall Pessoal (iptables)
Publicado por Dix (última atualização em 08/09/2014)
[ Hits: 10.259 ]
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
Bloquear Facebook no Linux Educacional 3
Criando Boot pelo USB para o VirtualBox no Linux KDu5
Nenhum comentário foi encontrado.
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
Qual melhor distro para usuário acostumado com W7? (3)
Descompactar arquivos winrar no linux (8)
Preciso de ajuda para mudar do ubuntu para fedora (7)