Firewall Iptables
Publicado por Perfil removido (última atualização em 10/08/2010)
[ Hits: 18.309 ]
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
Instala os modulos de bateria dos notebook da Acer
Claro 3g Sony Ericsson md300 script conexao REVISAO 3
Script p/ instalar o modem pctel onboard
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









