+ Responder ao Tópico



  1. #1

    Padrão Duvida no iptables

    Dae galera, to com uma duvida no iptables, eu sempre ouvi(li) a seguinte expressao: "Voce bloqueia tudo no iptables e vai liberando conforme precisa..."

    ate ai beleza...faz sentido...porem, me deparei com o problema de que preciso bloquear meu smtp pra algumas maquinas e bloquear pra outras, ex:

    A rede 192.168.100.0 nao pode se conectar, mas a 192.168.200.0 pode...dai seguindo a logica q eu venho ouvindo...eu fiz

    Código :
    # iptables -A INPUT -p tcp --dport 25 -s 0/0 -j DROP
    // Maravilha, dropei todos de todos os lugares
     
    # iptables -A INPUT -p tcp --dport 25 -s 192.168.200.0/255.255.255.0 -j ACCEPT
    // Agora liberei o acesso vindo da rede 192.168.200.0

    dai eu vo numa maquina 192.168.100.0 e do um telnet no 192.168.200.1 e tento conectar na maquina 192.168.200.1 e ele nao conecta, mto bem, a regra funcionou...

    agora vamos testar da 192.168.200.2...
    $ telnet 192.168.200.1 25
    Trying 192.168.200.1
    ...

    e naaaada, ele nao conecta....maaas...se eu faco
    Código :
    # iptables -F
    // Limpei as regras
     
    # iptables -A INPUT -p tcp --dport 25 -s 192.168.200.0/255.255.255.0 -j ACCEPT
    // Agora liberei o acesso vindo da rede 192.168.200.0
     
    # iptables -A INPUT -p tcp --dport 25 -s 0/0 -j DROP
    // Maravilha, dropei todos de todos os lugares


    ai quando eu testo, eu consigo me conectar da rede 200 na maquina 200.1 e nao consigo me conectar da rede 100 na maquina 200.1, ou seja, *funcionou*

    ai fica minha duvida, a expressao certa eh:

    "Voce bloqueia tudo no iptables e vai liberando conforme precisa..."
    ou
    "Libera pra quem precisa, e depois bloqueia pra todo mundo..."

  2. #2

    Padrão Duvida no iptables

    Quando dizem fechar tudo e ir liberando conforme a necessidade quer dizer usar política padrão (no caso iptables -P INPUT) dropando pacotes e não incluir um comando para recusar todos os pacotes. Usa-se o -P e ai depois libera como vc fez na segunda linha.
    A ordem dos comando é importante. Inverta isso dai que irá funcionar. Se vc mandou bloquear antes, não adianta depois liberar.

  3. #3
    Avenger
    Visitante

    Padrão Duvida no iptables

    Ó a maravilha que você fez ó:

    Primeiro mandamento: Não quero nenhum IP acesse a porta 25!.
    Segundo mandamento:Quero que os 192.168.200.0/24 acessem!...
    -- Quem não os seguir, queimará no fogo do inferno!

    Daí chega o súdito do iptables, e lê:
    ' não quero nenhum ip acessando porta 25'.

    Se ele tá na mão com o 192.168.0.200 querendo ir prá o 25, ele logo conclui: dexa eu jogar isso fora!
    Como já jogou fora, não vai nem perder tempo lendo o segundo mandamento. Afinal... Tem ali mais um pacote:

    Então o súdito, com o 192.168.200.23 na mão, vai ler os mandamentos:
    ' não quero nenhum ip acessando a porta 25!'.
    Ele como bom samaritano, joga logo o pacote fora!.

    Como resolver o problema?

    Muda a ordem dos tratores!!

    "Eis que apago os mandamentos divinos!" (iptables -F)
    Primeiro mandamento: Quero que os 192.168.200.0/24 acessem a porta 25 sem problemas!..
    Segundo mandamento: Não quero nenhum IP acesse a porta 25!.
    -- Quem não os seguir, queimará no fogo do inferno!

    Tire o resto das conclusões! :P

    Existem dois (três!) jeitos de colocar regra no iptables: o primeiro é -A (append), que vai anexar a regra no final do restante das regras que já tiverem na corrente.
    O segundo jeito, é a -I (que oferece um sub-jeito). Ela 'insere' a regra no início da corrente: (falar 'eu nego tudo!', depois '-I, eu deixo -esse-', vai significar pro iptables 'eu deixo esse; senão eu nego tudo!').
    O terceiro jeito-embutido, é -I corrente numero (tipo: -I PREROUTING 2), prá colocar a regra na linha que você especificar (em numero, passando as regras abaixo (com número maior) um 'degrau' à frente.

    Espero que essa 'comparação' (esqueci a palavra correta) deixe claro as 'leis do iptables' prá você!