+ Responder ao Tópico



  1. #1
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Olá pessoal,

    Tenho um pequeno problema. Dentro das minhas regras de firewall, criei uma regra para fazer proxy transparente, descrita abaixo:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


    Assim funciona que é uma beleza, todo mundo que está na interface eth0 sai para a internet usando o squid.

    Só que tenho um problema, um usuário dessa interface não pode sair para a internet usando o Proxy Transparente, somente ele deve sair sem proxy, o restante do pessoal deve usar o proxy!

    A pergunta é...
    Como fazer para que somente o ip 10.10.1.50 não saia para internet
    usando o Proxy?

    Abraços

  2. #2
    felco
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
    Essa regra deve vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela

  3. #3
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Citação Postado originalmente por felco
    Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
    Essa regra deve vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
    Não entendi!

    Como seria a regra completa?

  4. #4
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    seria isso?

    iptables -t nat -A PREROUTING -i eth0 -s 200.202.246.198 -d 0/0 -j ACCEPT


    :?

  5. #5
    felco
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Citação Postado originalmente por RicardoVS
    seria isso?

    iptables -t nat -A PREROUTING -i eth0 -s 200.202.246.198 -d 0/0 -j ACCEPT


    :?
    Depende, o IP que vc quer que passe direto pelo proxy eh 200.202.246.198?! Nao era 10.10.1.50?

  6. #6
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Depende, o IP que vc quer que passe direto pelo proxy eh 200.202.246.198?! Nao era 10.10.1.50?[/quote]

    é que agora vou mudar o IP do usuário...
    seria isso mesmo? Pois não deu certo!

    Meu firewall está assim:


    #!/bin/sh

    # Variaveis
    # -------------------------------------------------------

    IF_EXTERNA=eth0
    IF_LOJA=eth1
    IF_WIRELESS=eth3
    IF_LINUX=eth2

    # Ativa modulos
    # -------------------------------------------------------
    /sbin/modprobe iptable_nat
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_REJECT
    /sbin/modprobe ipt_MASQUERADE


    # Ativa roteamento no kernel
    # -------------------------------------------------------
    echo "1" > /proc/sys/net/ipv4/ip_forward


    # Protecao contra IP spoofing
    # -------------------------------------------------------
    echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter


    # Zera regras
    # -------------------------------------------------------
    iptables -F
    iptables -X
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle


    # Determina a politica padrao
    # -------------------------------------------------------
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP


    #########################################################
    # Tabela FILTER
    #########################################################


    # Dropa pacotes TCP indesejaveis
    # -------------------------------------------------------

    iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP


    # Dropa pacotes mal formados
    # -------------------------------------------------------

    iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP


    # Aceita os pacotes que realmente devem entrar
    # -------------------------------------------------------
    iptables -A INPUT -i ! $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT



    iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT



    # Protecao contra trinoo
    # -------------------------------------------------------
    iptables -N TRINOO

    iptables -A TRINOO -j DROP
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO


    # Protecao contra tronjans
    # -------------------------------------------------------
    iptables -N TROJAN

    iptables -A TROJAN -j DROP
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
    iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN


    # Protecao contra worms
    # -------------------------------------------------------
    iptables -A FORWARD -p tcp --dport 135 -i $IF_LOJA -j REJECT
    iptables -A FORWARD -p tcp --dport 135 -i $IF_WIRELESS -j REJECT
    iptables -A FORWARD -p tcp --dport 135 -i $IF_LINUX -j REJECT



    # Protecao contra syn-flood
    # -------------------------------------------------------
    iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT


    # Protecao contra ping da morte
    # -------------------------------------------------------


    # Aceita a requisição do PING
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


    # Protecao contra port scanners
    # -------------------------------------------------------
    iptables -N SCANNER

    iptables -A SCANNER -j DROP
    iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
    iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
    iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
    iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
    iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER

    # Libera acesso externo a determinadas portas
    # -------------------------------------------------------
    iptables -A INPUT -p tcp --dport 443 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p udp --dport 443 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 3306 -i $IF_WIRELESS -j ACCEPT
    iptables -A INPUT -p tcp --dport 3306 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 3306 -i $IF_LOJA -j ACCEPT
    iptables -A INPUT -p tcp --dport 5800 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 5900 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j ACCEPT
    iptables -A INPUT -p tcp --dport 5800 -i $IF_LINUX -j ACCEPT
    iptables -A INPUT -p tcp --dport 5900 -i $IF_LINUX -j ACCEPT



    #########################################################
    # Tabela NAT
    #########################################################


    # Ativa mascaramento de saida
    # -------------------------------------------------------
    iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE


    # Libera o acesso para sair do Proxy Transparente
    # -------------------------------------------------------
    iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT


    # Proxy transparente
    # -------------------------------------------------------

    iptables -t nat -A PREROUTING -i $IF_LOJA -p tcp --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i $IF_WIRELESS -p tcp --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i $IF_LINUX -p tcp --dport 80 -j REDIRECT --to-port 3128


  7. #7

    Padrão proxy transparente

    Como vcs ja devem saber, o iptables faz um pacote passar por todos as regras de uma tabela até encontrar uma que obedeca a regra, caso nenhuma regra seja compativel, a politica padrao usada naquele tabela prevalece. O iptables tem uma funcao para retirar um pacote da tabela sem que ele seja validado ou bloqueado - RETURN

    Assim, se voce quer que apenas um ip nao sofre o redirecionamento na tabela NAT, voce tem que desvia ele sem fazer com que as demais regras dessa tabela venham a desvia-lo:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -s 10.10.1.50 -j RETURN
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


    Assim, na regra: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -s 10.10.1.50 -j RETURN

    o pacote é passado para a proxima tabela de filtro sem passar pela regra:
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


    Patrick Brandão

  8. #8
    felco
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Hummmmmm eh verdade x)
    Mas acho que esta DROP no OUTPUT

  9. #9
    felco
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Ahhhh sabia que eu nao tava viajando -j ACCEPT funciona sim, pq ele manda o pacote pra tabela filter, ele esta na tabela NAT entao ele vai pra tabela filter porque o destino dele eh a internet ele vai para FORWARD eh depois pra OUTPUT

    # Ativa mascaramento de saida
    # -------------------------------------------------------
    iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE


    # Libera o acesso para sair do Proxy Transparente
    # -------------------------------------------------------
    iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT

    Eh isso mesmo POREM CONTUDO.... eu disse
    Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
    Essa regra DEVE vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
    eh vc coloquei embaixo

  10. #10
    felco
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Ta certo, foi mal, mas esse IP que vc colocou ai 200.x.y.z? Nao eh pra ser um IP privado?!

  11. #11
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Mais eu coloquei assim e ainda nao funcionou, o cliente continua saindo com o IP do servidor.


    # Ativa mascaramento de saida
    # -------------------------------------------------------
    iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE


    # Libera o acesso para sair do Proxy Transparente
    # -------------------------------------------------------
    iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT

  12. #12
    felco
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Calma ai cara, oq vc quis dizer com "continua saindo com o IP do servidor"?
    Vai ser o IP do servidor nao pq vc esta saindo pelo Squid, isso eh indeferente, ele sai com IP do Firewall pq vc esta fazendo MASQUERADE nao SNAT

  13. #13
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Então me desculpe.

    Preciso que o cliente saia para internet usando o IP valido dele! Por isso preciso que ele não passe pelo Proxy Transparente.

    Entendeu?

  14. #14
    RicardoVS
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Como eu faria então?

  15. #15
    Aquini
    Visitante

    Padrão Tirar apenas um IP para nao passar dentro do Proxy Transpare

    Sem muito estresse, na mesma regra de redirecionamento para o proxy transparente faça o seguinte...

    Código :
    # iptables -t nat -A PREROUTING -i eth0 -s ! <ip do host a liberar> -p tcp --dport 80 -j REDIRECT --to-port 3128

    Esta inserção diz + ou - o seguinte:
    Redirecione tudo o que vem pela eth0, menos da fonte <ip do host...> , com porta de destino 80 para a porta 3128

    Desta forma vc estará excluindo o IP postado depois da "!" da regra de redirecionamento.

    Qualquer coisa, escreva...

    T+