+ Responder ao Tópico



  1. #1

    Padrão problemas com iptables

    Pessoal,

    Gostaria de uma ajuda, pois sou novo no mundo linux, tenho que apresentar um projeto para faculdade com o seguinte cenário com máquinas virtuais:

    1 - servidor linux fazendo o papel de proxy(squid) e firewall (iptables);
    2- dois clientes windows xp

    problema:

    instalei o ubuntu 8.04 desktop , mas não consigo bloquear as portas por exemplo: 3389, 23, 21, 25 estou usando a seguinte sintaxe iptables -A FORWARD -p tcp -s ip_da_maquina --dport 3389 -j REJECT

    tenho que bloquear a porta de um cliente para que o outro não tenha acesso.
    ao executar a sintaxe acima vou para para o cliente1 e acesso pelo mstsc.exe o cliente2 e tenho acesso, não só com a porta 3389 e sim tbm com as outras.

    alguem pode me ajudar...

  2. #2

    Padrão

    não é forward, é input

    vc tem que rejeitar a entrada para essas portas e não fazer fwd delas.

    vc pode começar estabelecendo politicas restritas:
    $IPT -t filter -P FORWARD DROP #-->
    $IPT -t filter -P INPUT DROP #-->
    $IPT -t filter -P OUTPUT DROP #--->
    e depois ACEITAR o que pode passar
    $IPT -t filter -A INPUT -p tcp -m multiport --destination-port domain,5435,10000 -j ACCEPT

    sugiro estudar um pouco mais sobre o iptables. Aqui no under -e no vol - vc encontra bons tutoriais.

  3. #3

    Padrão

    Perai...
    Se ele tem que bloquear de um windows pra outro windows ele tem que usar a chain FORWARD sim. A chain INPUT é somente para pacotes destinados ao linux.

    O que deve estar acontecendo é que os hosts windows não estão utilizando o linux pra se comunicar.
    Posta mais detalhes ai...
    Qual o IP dos hosts windows?? Quais IPs estão configurados no Linux?? Como os hosts windows se conectam ao Linux?? Como esta o gateway padrão dos hosts windows?? E a tabela de rotas do Linux??

    Até mais...

  4. #4

    Padrão

    Citação Postado originalmente por Magnun Ver Post
    Perai...
    Se ele tem que bloquear de um windows pra outro windows ele tem que usar a chain FORWARD sim. A chain INPUT é somente para pacotes destinados ao linux.

    O que deve estar acontecendo é que os hosts windows não estão utilizando o linux pra se comunicar.
    Posta mais detalhes ai...
    Qual o IP dos hosts windows?? Quais IPs estão configurados no Linux?? Como os hosts windows se conectam ao Linux?? Como esta o gateway padrão dos hosts windows?? E a tabela de rotas do Linux??

    Até mais...
    é exatamente o que o amigo acima falou.
    as 2 maquinas windows devem estar na mesma rede. por isso nao estao passando pelo linux.

    sua topologia está assim:

    windows
    Linux ----|
    windows

    deveria estar assim:

    windows --- linux --- windows

    o linux deve ter 2 interfaces de rede e cada windows lidado a uma interface com default gateway apontado para o linux.

  5. #5

    Padrão

    Nobres,

    conforme sua solicitação segue mais informações sobre o problema apresentado:

    Linux: eth0 atribuido por DHCP --> ip 192.168.202.133
    mask 255.255.255.0

    eth1 --> ip 10.1.1.10
    mask 255.0.0.0
    gateway 10.1.1.2

    windows 1 : ip 10.1.1.30
    mask 255.0.0.0
    gateway 10.1.1.2

    windows 2 : ip 10.1.1.40
    mask 255.0.0.0
    gateway 10.1.1.2

    Consigo da um ping dos hosts windows para o linux e vice-versa.

    Como sou novo no mundo linux, estou com muitas duvidas gostaria da ajuda de vcs, tenho que fazer esse micro projeto funcionar.
    Tenho que bloquear algumas portas no host windows1 para que o host 2 e vice versa, as portas o professor ira pedir na hora da apresentação ele dará um telnet para testar as regras.

    se precisar de mais informações posta para que eu possa me explicar melhor.

    agradeço a ajuda de todos..

  6. #6

    Padrão

    coloca uma maquina windows na rede 192.168.202. e aponta o default gateway dela para o ip do linux (sugiro voce tirar do dhcp e colocar ip fixo), depois faça isso:

    # ativar forward entre interfaces
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # politica padrao como accept
    iptables -P FORWARD ACCEPT

    # bloqueia o host 10.1.1.40 se conectar na porta tcp/3389 de qualquer host do outro lado.
    iptables -A FORWARD -p tcp --dport 3389 -s 10.1.1.40 -j DROP

    coloca tudo isso pra iniciar em um script.

  7. #7

    Padrão

    Caso vc não possa colocar o outro windows na rede 192.168.202.0/24 e não tenha uma terceira interface nesse linux, cria uma alias na eth1. Põe no alias um ip tipo 192.168.1.1/24 e muda o IP do windows de 10.1.1.30 pra 192.168.1.2/24 com gateway 192.168.1.1. Pra criar o alias use o seguinte comando:

    ifconfig eth1:1 192.168.1.1 netmask 255.255.255.0

    Dessa forma sua eth1 vai ter 2 IPs, 192.168.1.1 e 10.1.1.10

    Ai segue os mesmos procedimentos que o patrick te indicou:
    # ativar forward entre interfaces
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # politica padrao como accept
    iptables -P FORWARD ACCEPT

    # bloqueia o host 10.1.1.40 se conectar na porta tcp/3389 de qualquer host do outro lado.
    iptables -A FORWARD -p tcp --dport 3389 -s 10.1.1.40 -j DROP

  8. #8

    Padrão

    nobres companheiros,

    agradeço pelas dicas postadas para minha duvida,

    coloquei um alias na placa eth1:1 e mudei o ip de um host windows, e agora é fazer um script para funcionar e implementar outras regras.

    até a próxima ....

    bom final de semana, o baiano agradece.