Firewall Iptables
Publicado por Perfil removido (última atualização em 10/08/2010)
[ Hits: 18.254 ]
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
COMPACTANDO DIRETORIO CRIADO PELO SARG
bash: função para validação de IP (IPv4)
Pequeno sistema de backup (Rsync + SAMBA + Tar + FTP)
Baixe arquivos em pedaços com o DCDownloader
Instalando Nagios 4.0.8 - Debian 7
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
baschrc customizado pegeui vários. (3)
Rust é o "C da nossa geração"? (8)