Re: Proxy, Firewall e NAT
Wagner.
Existem várias formas de se configurar um gateway, segue por exemplo
um init script para um gateway colocado entre duas redes (10.0.0.0/8 -
Rede interna de um roteador ADSL) e (192.168.1.0/24 - LAN) com uma
política "negar tudo e liberar somente o necessário", com NAT
configurado e regras de liberação incluídas mas algumas comentadas (para
referência).
Quanto ao proxy é só instalar e configurar o Squid.
/etc/init.d/firewall.sh
#!/bin/sh
IPT="/sbin/iptables"
NET_WAN="10.0.0.0/8"
NET_LAN="192.168.1.0/24"
ETH_WAN="eth0"
ETH_LAN="eth1"
ETH_LOO="lo"
ADD_WAN="10.0.0.6"
ADD_LAN="192.168.1.3"
ADD_FILESERVER="192.168.1.10"
# Inicia o firewall
start_firewall() {
# Suporte a protecoes no kernel
echo "Habilitando protecao de broadcast de echo"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "Desabilitando pacotes roteados pela origem"
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
echo "Habilitando protecao TCP SYN com Cookies (para SYN floods)"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "Desabilitando recebimento de pacotes ICMP com redirecionamentos"
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
echo "Desabilitando envio de pacotes ICMP com redirecionamentos"
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
echo "Habilitando protecao contra packet spoofing (que causem a troca
de interface)"
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
echo "Habilitando protecao contra packet spoofing (com enderecos
impossiveis)"
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
echo "Habilitando repassagem de IP."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo -n "Iniciando o firewall iptables"
# Libera o trafego de entrada e saida na interface de loopback
$IPT -A INPUT -i $ETH_LOO -j ACCEPT
$IPT -A OUTPUT -o $ETH_LOO -j ACCEPT
# Define a politica padrao (-P) de todas as cadeias de todas as tabelas
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT DROP
###
# CONEXOES JA ESTABELECIDAS
###
# Permite conexoes ja estabelecidas atraves do modulo state, entao o
resto nao e processado
# Trafego local (conexoes originadas aqui ou para esta maquina)
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Trafego roteado (NAT)
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
###
# NOVAS CONECOES
###
# PARA ESTA MAQUINA
# Permite o acesso ao servidor de e-mails pela interface externa
#$IPT -A INPUT -i $ETH_WAN -p tcp --dport 143 -m state --state NEW -j
ACCEPT #IMAP
#$IPT -A INPUT -i $ETH_WAN -p tcp --dport 25 -m state --state NEW -j
ACCEPT #SMTP
#$IPT -A INPUT -i $ETH_WAN -p tcp --dport 80 -m state --state NEW -j
ACCEPT #HTTP
#$IPT -A INPUT -i $ETH_WAN -p tcp --dport 443 -m state --state NEW -j
ACCEPT #HTTPS
# Permite o recebimento de pacotes icmp
$IPT -A INPUT -i $ETH_WAN -p icmp -j ACCEPT
# Permite novas conexoes para esta maquina que nao forem originadas na WAN
# Acesso pela LAN ou local pela interface interna ethx
$IPT -A INPUT -i ! $ETH_WAN -m state --state NEW -j ACCEPT
# FEITAS POR ESTA MAQUINA
# Permite que esta maquina inicie conexoes com a WAN
# Obs.: Estas regras podem ser mais detalhadas ao inves de permitir tudo
$IPT -A OUTPUT -m state --state NEW -j ACCEPT
###
# REDIRECIONAMENTO DE PACOTES
###
# SNAT
# Regras de SNAT (masquerade) (redirecionamento LAN -> WAN).
$IPT -t nat -A POSTROUTING -o $ETH_WAN -j MASQUERADE
# Para que o SNAT seja processado a cadeia forward deve ser liberada
# LIBERACAO PARA SERVIDORES INTERNOS
# Permite que o servidor de arquivos inicie conexoes para a WAN
# Obs.: Estas regras podem ser mais detalhadas ao inves de permitir tudo
$IPT -A FORWARD -i $ETH_LAN -o $ETH_WAN -s $ADD_FILESERVER -m state
--state NEW -j ACCEPT
# LIBERACAO PARA ESTACOES (permite que elas facam conexoes sem proxy)
#$IPT -A FORWARD -i $ETH_LAN -o $ETH_WAN -j ACCEPT -p tcp --dport 80
-s 192.168.1.249
# DNAT
# Regras de DNAT (redirecionamento WAN -> OUTRO_HOST)
$IPT -t nat -A PREROUTING -i $ETH_WAN -p tcp -d $ADD_WAN --dport 23 -j
DNAT \
--to-destination $ADD_FILESERVER:23
# Apesar da cadeia forward ser processada apos o DNAT, deve ser
liberada tambem
$IPT -A FORWARD -i $ETH_WAN -o $ETH_LAN -p tcp -d $ADD_FILESERVER
--dport 23 \
-m state --state NEW -j ACCEPT
###
# LOGGING AND DEBUGGING
###
# Create a chain for log + drop
# (logs to syslog and then drops the packet - useful for debugging)
#$IPT -N LOGDROP
#$IPT -A LOGDROP -j LOG --log-level info --log-prefix "IPTABLES: drop "
#$IPT -A LOGDROP -j DROP
# Loga os pacotes recebidos na porta 23 (/var/log/messages) e joga fora
#$IPT -A INPUT -i $ETH_WAN -p tcp --dport 23 -j LOGDROP
# Marcacao de pacotes para uso do shaper.
#$IPT -A PREROUTING -t mangle -i $ETH_WAN -s 192.168.1.0/24 -j MARK
--set-mark 3
echo "."
}
# Para o firewall
stop_firewall() {
echo -n "Parando o firewall iptables"
# Apaga todas as regras de todas as tabelas (-t tabela -F)
# Apaga todas as cadeias definidas pelo usuario de todas as tabelas
(-t tabela -X)
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t filter -F
$IPT -t nat -X
$IPT -t mangle -X
$IPT -t filter -X
# Define a politica padrao (-P) de todas as cadeias de todas as tabelas
$IPT -t filter -P INPUT ACCEPT
$IPT -t filter -P FORWARD ACCEPT
$IPT -t filter -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
echo "."
}
case "$1" in
start)
start_firewall
;;
stop)
stop_firewall
;;
restart)
stop_firewall
start_firewall
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
Edmundo Valle Neto
wpqa@credicardciti.com.br escreveu:
Caros, bom dia.
Estou montando um servidor Debian para realizar proxy, Firewall e NAT,
utilizando Squid, IPTABLES, mas, não estou conseguindo fazer ele
funcionar, ontem depois de várias tentativas(lá pelas 23:30) desisti e
fui dormir.
Por acaso, alguém poderia me enviar um modelo/script que funcione para
eu validar ?
PS: Não interpretem como "preguiça" foi incompetência mesmo. =(
Wagner Eduardo Bidin
------------------------------------------------------------------------
Esta mensagem foi verificada pelo E-mail Protegido Terra
<http://mail.terra.com.br/>.
Scan engine: McAfee VirusScan / Atualizado em 15/09/2006 / Versão:
4.4.00/4853
Proteja o seu e-mail Terra: http://mail.terra.com.br/
Reply to: