[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: