Firewall Iptables
Publicado por Perfil removido (última atualização em 10/08/2010)
[ Hits: 18.090 ]
Estou disponibilizando o script do firewall que eu criei desde a primeira vez que comecei a mexer com o iptables e aos poucos fui atualizando e deixando tudo comentando para saber pra que serve cada uma das portas que são mais usadas.
A maioria das regras estão comentadas, somente o que é realmente necessário como o http, https, dns, ftp está liberado quando habilitar o firewall.
Quando for instalar um servidor Apache, Squid ou liberar a conexão ao MSN/Gmail, por exemplo, basta procurar a regra, descomentar e "reload" o firewall.
#!/bin/bash # # Shell Script - Firewall # ======================= # Autor:- CESAR AUGUSTUS SILVA # iptables=/sbin/iptables module[0]="iptable_filter" module[1]="iptable_nat" module[2]="iptable_mangle" for ((n=0;$n<=2;n++)); do if [ "`lsmod | grep ${module[$n]}`" = "" ]; then /sbin/modprobe ${module[$n]} echo "Módulo ${module[$n]} carregado." fi done . /lib/lsb/init-functions # IP da Rede network=192.168.0.0/24 # Interface da Rede Local - LAN ilan=eth0 # Interface da Rede Externa - Internet inet=ppp0 # Removendo regras $iptables -F $iptables -t nat -F $iptables -t mangle -F # Apagando chains $iptables -X $iptables -t nat -X $iptables -t mangle -X # Zerando contadores $iptables -Z $iptables -t nat -Z $iptables -t mangle -Z # Mascaramento $iptables -t nat -A POSTROUTING -o $inet -j MASQUERADE # Ativando o redirecionamento de pacotes echo 1 > /proc/sys/net/ipv4/ip_forward do_start () { # Política $iptables -P INPUT DROP $iptables -P OUTPUT ACCEPT $iptables -P FORWARD DROP # Manter Conexões Estabelecidas $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ########### PROTEÇÕES ########### i=/proc/sys/net/ipv4 echo 1 > $i/ipv4/tcp_syncookies echo 1 > $i/icmp_echo_ignore_broadcasts echo 1 > $i/icmp_ignore_bogus_error_responses for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects echo 0 > $i/accept_source_route echo 1 > $i/log_martians echo 1 > $i/rp_filter done # Proteção contra Ataques $iptables -A INPUT -m state --state INVALID -j DROP # Proteção contra os "Ping of Death" $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 # Liberando o Tráfego na Interface loopback $iptables -A INPUT -i lo -j ACCEPT ########### 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 # LOGs $iptables -A INPUT -p tcp -m multiport ! --dports 0:1056 -j DROP $iptables -A INPUT -p udp -j DROP $iptables -A INPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-prefix "LOG-FW: " $iptables -t mangle -A FORWARD -o $inet -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu } do_stop () { # Política $iptables -P INPUT ACCEPT $iptables -P OUTPUT ACCEPT $iptables -P FORWARD ACCEPT } case "$1" in start) log_daemon_msg "Starting Firewall iptables" do_start log_end_msg $? ;; stop) log_daemon_msg "Stopping Firewall iptables" do_stop log_end_msg $? ;; reload) log_action_begin_msg "Reloading Firewall configuration..." echo "Reloading Firewall configuration rules." do_start log_action_end_msg $? ;; *) log_success_msg "Usage: $0 {start|stop|reload}" exit 1 esac exit 0
Enviar e visualizar Twitter no terminal
Instalando a última versão estável do Eclipse com uma única linha
Fazer backup de todas base de dados no PostgreSQL
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
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (4)
Bash ao invés de Fish no CachyOS (1)
Linux rodando do hd externo ou ssd? (4)
[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