+ Responder ao Tópico



  1. #1
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    Tentei 300 vezes, o firewall não funciona!!!


    eth0 - é a placa da internet
    eth1 - minha lan.

    Não está trocada a placa de rede, porque tiro o cabo da eth1, e mando um ping para internet funciona.
    Mas se tiro a eth0 não funciona, portanto as placas estao certas.

    Outra coisa, achei que tinha funcionado, mas quando reiniciei o PC, nao foi mais.
    Ou seja, de tanta testar os policiamentos, estava funcionando, mas quando resetei a máquina (Apagou toda sujeira) e nao foi mais.



    Fiz tudo liberado, somente para testar realmente, o prerouting não funciona, troquei a placa de rede, mas voltei para o mesmo erro.

    Código :
    #Rede Interna
    REDE_INTERNA=192.168.1.0/24
     
    #Ativar modulos
    #modprobe iptable_nat
    #modprobe ip_conntrack
    #modprobe ip_nat_ftp
     
    #Matando Firewall
    iptables -F
    iptables -Z
    iptables -X
    iptables -t nat -F
     
    #Dropando todos os Policiamentos
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
     
    #Compartilhar a Internet
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/ip_dynaddr
     
    #Proteger contra syn flood
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
     
    iptables -t nat -A PREROUTING -i eth1 -s $REDE_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
    #Regras INPUT
     
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -i eth1 -s $REDE_INTERNA -j ACCEPT
     
    #Regras Forward
     
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -o eth0 -s $REDE_INTERNA -j ACCEPT
     
    echo "Levantando Firewall..."

    Quando utilizo o PREROUTING, no SQUID.
    Não navega de maneira alguma.

    Mas com um script pronto que libera tudo funciona!!

    Mas dessa maneira não vai, nem com reza.

  2. #2
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    galera o PREROUTING não funciona dessa maneira !!
    Squid nao navega!

    Fixo nas configuracoes do navegador, o ip do server porta 3128, mas não navega...

    Quando aplico este script aqui funciona !!



    Código :
    #!/bin/bash
     
    # Local para o executavel do IPTables
    IPT=`which iptables`;
     
    # Interface da rede INTERNA
    IF_INTERNA="eth1";
     
    # Interface da rede EXTERNA
    IF_EXTERNA="eth0";
     
    # Definição da rede interna
    REDE_INTERNA="192.168.1.0/24"
     
     
    fw_start()
    {
      #ativa o roteamento dinamico
      echo 1 > /proc/sys/net/ipv4/ip_forward
      echo 1 > /proc/sys/net/ipv4/ip_dynaddr
     
      $IPT -t filter -P INPUT       DROP
      $IPT -t filter -P FORWARD     DROP
      $IPT -t filter -P OUTPUT      ACCEPT
      $IPT -t nat    -P PREROUTING  ACCEPT
      $IPT -t nat    -P POSTROUTING ACCEPT
      $IPT -t nat    -P OUTPUT      ACCEPT
      $IPT -t mangle -P PREROUTING  ACCEPT
      $IPT -t mangle -P POSTROUTING ACCEPT
      $IPT -t mangle -P OUTPUT      ACCEPT
      $IPT -t mangle -P INPUT       ACCEPT
      $IPT -t mangle -P FORWARD     ACCEPT
     
      # Cria chain com regras de segurança
      $IPT -N BLOCK
      $IPT -A BLOCK -p icmp --icmp-type echo-request -j DROP
      $IPT -A BLOCK -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
      $IPT -A BLOCK -p tcp -m limit --limit 1/s -j ACCEPT
      $IPT -A BLOCK -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT
      $IPT -A BLOCK -m unclean -j DROP
      $IPT -A BLOCK -m state --state ESTABLISHED,RELATED -j ACCEPT
      $IPT -A BLOCK -j DROP
      # Muda a prioridade dos pacotes (Type Of Service) para agilizar as coisas
      $IPT -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 22,3134 -j TOS --set-tos 0x10
     
      # Libera todo o trafego local
      $IPT -t filter -A INPUT   -i lo -j ACCEPT
      $IPT -t filter -A INPUT   -i $IF_INTERNA -j ACCEPT
      $IPT -t filter -A FORWARD -i $IF_INTERNA -j ACCEPT
     
      #Redirecionando porta para Proxy
      $IPT -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
     
      #Libera SSH,ftp e Web
      $IPT -t filter -A INPUT -i $IF_EXTERNA -p tcp -m multiport --dports 22,8080 -j ACCEPT
     
      #Libera a conexao para a rede interna
      $IPT -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
     
     
      $IPT -A INPUT -j BLOCK
      $IPT -A  FORWARD -j BLOCK
    }
     
    fw_stop()
    {
      $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 POSTROUTING ACCEPT
      $IPT -t nat    -P OUTPUT      ACCEPT
      $IPT -t mangle -P PREROUTING  ACCEPT
      $IPT -t mangle -P POSTROUTING ACCEPT
      $IPT -t mangle -P OUTPUT      ACCEPT
      $IPT -t mangle -P INPUT       ACCEPT
      $IPT -t mangle -P FORWARD     ACCEPT
      $IPT -t filter -F
      $IPT -t nat    -F
      $IPT -t mangle -F
      $IPT -t filter -X
      $IPT -t nat    -X
      $IPT -t mangle -X
      $IPT -t filter -Z
      $IPT -t nat    -Z
      $IPT -t mangle -Z
    }
     
    fw_usage()
    {
      echo
      echo "$0 (start | stop | restart | clear)"
      echo
      echo "start   - Ativa o firewall"
      echo "stop    - Desativa o firewall"
      echo "restart - Reativa o firewall"
      echo "clear   - Limpa os contatores"
    }
     
    fw_clear()
    {
      $IPT -t filter -Z
      $IPT -t nat    -Z
      $IPT -t mangle -Z
    }
     
    case $1 in
     
      start)
         fw_start;
      ;;
     
      stop)
         fw_stop;
      ;;
     
      restart)
        fw_stop;
        fw_start;
      ;;
     
      clear)
         fw_clear;
      ;;
      *)
         fw_usage;
         exit;
     
      ;;
    esac


    Quando aplico este script, depois o meu reduzido funciona os 2!!

    Mas se eu reiniciar a máquina e aplicar o meu firewall não vai...
    Como pode isso ???



  3. #3
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    tem certas coisas que não da para acreditar.
    Agora quando ligo o PC, sem script nenhum no FW, o squid funciona.

    Não sei se por default fica compartilhada a internet.

  4. #4

    Padrão Re: firewall não funciona, já não sei mais o que fazer.

    Eu nao to entendendo vc ta com uma regra usada em proxy transparente e fala que coloca o ip e a porta no navegador !!!


    Nao entendi !!!



  5. #5
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    eu sempre utilizei assim, agora mesmo está rodando normal.
    só redireciono a porta para ninguem usar a 80, sem colocar o proxy no navegador, e para dar a mensagem de erro, que o proxy envia como default.
    Só para isso mesmo

    Mas o squid não está como transparente.

  6. #6
    dodecaedrum
    Visitante

    Padrão tenta aí

    Bem, é muito difícil só de olhar...

    Será que o PREROUTING joga a regra do REDIRECT pelo loopback ?
    mas eu acho que vc tem que habilitar o loopback tb no INPUT. Só como teste insira uma regra no seu script:

    iptables -A INPUT -i lo -j ACCEPT

    Acho que você já verificou se o OUTPUT está no ACCEPT (é claro né?).

    Tenta aí

    Mas o nosso amigo tem razão ... pra que configurar o navegador? faça transparente que vai dar certeza de ninguém utilizar a porta 80. A idéia é essa mesmo, pois ao menos vc ganha tempo não tendo que configurar nada nas estações



  7. #7
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    liberei tudo, ficou assim

    Código :
    #Rede Interna
    REDE_INTERNA=192.168.1.0/24
     
    #Ativar modulos
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_nat_ftp
     
    #Matando Firewall
    iptables -F
    iptables -Z
    iptables -X
    iptables -t nat -F
     
    #Dropando todos os Policiamentos
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
     
    #Compartilhar a Internet
    iptables -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/ip_dynaddr
     
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80
    #Regras INPUT
     
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A INPUT  -i eth1 -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp --dport 777 --syn -j ACCEPT
     
    #Regras Forward
     
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i eth1 -j ACCEPT
    echo "Levantando Firewall..."

    mas está funcionando normal.
    Tirando o PREROUTING, que postei em outro tópico.

    valeu

  8. #8

    Padrão firewall não funciona, já não sei mais o que fazer.

    bom, em primeiro lugar, um dica pra ti, coloca as regras da tabela nat sempre as ultimas, e em segundo, ao usar uma regra na chain prerounting, sera necessario que vc a libere a porta na forward, pq todo o trafego da rede passa primeiro na tabela nat, quando tu redireciona, ele vai pra tabela filter, como tu ta redirecionando pra uma maquina da tua rede, ele vai na chain forward, e se vc n libera na forward ele dropa o pacote, entao no seu caso, seria assim:

    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80
    bora começa com teu squid, supondo que eth1= sua interface da rede interna e eth0=interface da internet

    a primeira regra ta certa, só falto vc liberar a 3128 na INPUT, pois tmb suponho que o squid ta rodando no seu fw.

    entao ficaria assim

    iptables -A INPUT -i eth1 -s 192.168.0.0/24 -p tcp --dport 3128 -j ACCEPT

    -s 192.168.0.0/24 classe ip da sua rede

    agora liberar a porta 80 para redirect funcionar
    iptables -A INPUT -i eth0 -p tcp --dport 80 --syn -j ACCEPT

    com isso seus nat irão funcionar. tem mais 2 dicas pra vc.

    retire imediatamente essas 2 regras


    iptables -A FORWARD -o eth0 -s $REDE_INTERNA -j ACCEPT
    iptables -A INPUT -i eth1 -s $REDE_INTERNA -j ACCEPT
    pois com elas seu fw n vale nada, elas simplismente ta liberado tudo pra todos, ou sejá, seu fw ta mais furado do que queijo suiço.

    e a segunda dica eh para vc nunca aceitar ou utilizar script de fw já pronto, pois fw em algo muito personalizado, um script serve pra um mais n serve pra outro, em vez de protejer so faz enrolar. então da um estudada em iptables e faça vc mesmo seu script, vc so vai ta ganhando tempo estudando e n perdendo.

    abraço e qualquer coisa posta ae.
    to com tempinho sobrando pra responder os poste do pessoal aqui



  9. #9
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    Ola brenno, muito obrigado pelas dicas.

    Sim aprendei na marra, sempre precisa liberar na forward nesses casos, fiquei algumas horas na frente do console.

    Mas no caso como a 8080 vai redirecionar para 80 do servidor, precisa liberar na INPUT também.
    Eu estava querendo fazer o impossivel redirecionar sem liberar na INPUT.


    Nào tinha como funcionar mesmo.

    Quanto a liberar tudo, eu sei que não é bom, fiz só para teste.
    Agora que tenho o esqueleto fica fácil montar algo maior.

    Tudo está funcionando legal agora,liberei o emule para ficar com ID Alta etc...
    Melhorei bastante.

    Nunca cheguei a mexer direito com iptables, sabe como é, olha o script de um, pega de outro, quando vai fazer sozinho "A coisa muda".

    Agora deu para pegar bem como a coisa funciona.

    Muito Obrigado por tudo


    "Um off topic"

    Colocando o "--syn" tem muita vantagem ?
    Você pode me explicar ?

    Outra coisa o Squid está funcionando legal, não é transparente eu só redireciono para dar a mensagem para o usuario se ficar sem o proxy.

    []'s :good:

  10. #10

    Padrão firewall não funciona, já não sei mais o que fazer.

    para enteder o que significa --syn, ESTABLISHED RELATED NEW

    vc tem q entender oq é handshake, ou aperto de mãos

    O handshake, eh o procedimento preludio, onde atraves de 3 vias, se pode efetuar o inicio de qualquer conexao na internet! Vejamos o diagrama abaixo, onde o host A irah tentar abrir uma conexao com o host B:


    --------------------------------------------------------------------------------
    | Host A | -------- SYN -------- > | Host B |
    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    | Host A | < -----SYN+ACK -------- | Host B |
    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    | Host A | -------- ACK -------- > | Host B |
    --------------------------------------------------------------------------------

    O host A solicita conexao atraves do envio de um pacote com o bit SYN ativado! Em seguida, o host B responde a solicitacao do Host A enviando um pacote com os bits SYN+ACK ativados! Por fim, para terminar o handshake, o Host A envia um pacote contendo o bit ACK ativado para o Host B, a partir de entao, as duas maquinas estarao conectadas e podem trocar dados entre si!

    Abaixando um pouco mais o nivel, para os que desejam praticar Blind Spoof, Podemos analisar outro diagrama do handshake abaixo:

    Host A Host B
    texto tirado da url http://www.securityexperts.com.br/mo...howpage&pid=27

    bom, com isso, eu digo que so aceite coneccao se a flag for --syn.

    o ideal seria usar o -m state --state NEW, com isso ele só aceitaria a flag syn do inicio, quando coloco --syn, ele aceita qualquer tipo de pacote com flag syn, deu pra entender a diferença de new pra --syn?

    o related seria no caso do syn+ack e established seria ack quando a coneccao esta estabelecida..

    pouca gente sabe disso, quem sabe um dia eu escreva um howto detalhando isso

    abraço



  11. #11
    cag
    Visitante

    Padrão firewall não funciona, já não sei mais o que fazer.

    com certeza, deu para entender legal.

    o ESTABLISHED RELATED, eu peguei legal.
    Antes eu tratava o retorno do pacote, mas com isso facilita muito a vida.

    Agora o NEW, vou começar a colocar.

    obs: (da maneira que eu estava fazendo poderia colocar ou não.
    Por isso eu estava confuso)

    Foi mais que uma aula isso!

    Muito Obrigado Brenno :good: :clap: