Aí vai o que uso num computador pessoal, se lhe interessar o que
utilizo num ambiente corporativo me avise...
Algumas regras output estão explícitas para o caso de se desejar mudar
a política para output. O mesmo para a tabela nat...
Os logs estão indo para /var/log/messages
_____ script_FW-início __________
#!/bin/bash
echo "Lendo variáveis..."
echo "Por favor aguarde."
sleep 2
echo
echo "Limpando a tela."
clear
# Identificando variáveis:
#-------------------------
# Módulo iptables:
iptables=/usr/sbin/iptables
# Interfaces:
eth_int=eth0
eth_ext=ppp0
# Iniciando função "start":
# ************************
FW_start(){
# Zerando regras:
$iptables -F
$iptables -t nat -F
$iptables -X
#=============================================================
# Estabelecendo política padrão:
#-------------------------------
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT
$iptables -t nat -P PREROUTING ACCEPT
$iptables -t nat -P POSTROUTING ACCEPT
$iptables -t nat -P OUTPUT ACCEPT
#==============================================================
# Regras genéricas de proteção:
#------------------------------
# Protegendo de pacotes ping:
$iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
# Protegendo contra Ping of Death:
$iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit
1/s -j ACCEPT
# Protegendo contra Port Scan (nmap & cia):
$iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
--limit 1/s -j ACCEPT
# Protegendo contra Syn Flood:
$iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
# Negando pings:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Contra ataque "icmp flooding" (broadcasts):
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Contra mensagens de icmp_redirects:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# Para evitar o desvio de pacotes:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Evitar o repasse de pacotes falsificados:
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# Evitar syn flood (syn cookies):
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#===========================================================
# Regras administrativas:
#------------------------
# LOOPBACK:
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
# Libera ping para o FW:
$iptables -A OUTPUT -p icmp -j ACCEPT
#-----------------> Regras FW > Internet:
# Libera conexões estabilizadas e com estas relacionadas (já iniciadas):
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Libera o Proxy/FW para resolver DNS (usar --dport 53 ou domain):
$iptables -A OUTPUT -p UDP --dport 53 -o $eth_ext -j ACCEPT
# Libera navegação para o FW aos protocolos http/https/ftp:
$iptables -A OUTPUT -d 201.2.0.1 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 80 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 443 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 20 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 21 -o $eth_ext -j ACCEPT
# Mascarando as conexões:
$iptables -t nat -A POSTROUTING -o $eth_ext -d 0/0 -j MASQUERADE
# ----> Logando tentativas de conexao na placa externa:
$iptables -A INPUT -i $eth_ext -m state --state NEW,INVALID -j LOG
--log-prefix "TENTATIVA_EXT"
$iptables -A INPUT -i $eth_ext -m state --state NEW,INVALID -j DROP
# Logando outras tentativas de conexão:
$iptables -A INPUT -p tcp --syn -j LOG --log-prefix "OUTRAS_TENTATIVAS"
$iptables -A INPUT -p tcp --syn -j DROP
# Fechando função "start":
# ***********************
}
#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Iniciando função "stop":
# ***********************
FW_stop(){
# Dando um "flushing" e abrindo tudo:
$iptables -F
$iptables -t nat -F
$iptables -X
$iptables -P INPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -t nat -P PREROUTING ACCEPT
$iptables -t nat -P POSTROUTING ACCEPT
$iptables -t nat -P OUTPUT ACCEPT
# Fechando função "stop":
# **********************
}
#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Iniciando função "restart":
# **************************
FW_restart(){
FW_stop
FW_start
# Finalizando função "restart":
# ****************************
}
#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Mensagens na tela:
# *****************
case "$1" in
"start")
FW_start
echo "O FW está sendo ativado..."
sleep 2
echo "O FW foi ativado com sucesso!"
;;
"stop")
FW_stop
echo "O FW está sendo desativado..."
sleep 1
echo "O FW foi DESATIVADO!"
echo ' ===================='
echo ' Mostrando tabelas:'
echo ' ===================='
echo
echo 'Tabela FILTER'
echo '*************'
iptables -L -n
echo
echo 'Tabela NAT'
echo '**********'
iptables -t nat -L
echo
;;
"restart")
FW_restart
echo "O FW está sendo desativado..."
sleep 1
echo "O FW está sendo reativado..."
sleep 2
echo "O FW foi ativado com sucesso!"
;;
*)
iptables -L -n |less
esac
________ Final do script_FW ____________
_______
Xxoin
_________________________________________________________
--- Em address@hidden, Esdras <klapzin@y...> escreveu
Salve Lista,
Alguem teria um modelo de script de firewall start stop pra colocar no
init.d ?
nao precisa ter muitas regras configuradas só preciso de um modelo pra
me basear numa programação.
Esdras
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos