+ Responder ao Tópico



  1. #1

    Exclamation Setar política padrão em iptables???

    Pessoal estuou com uma dúvida cruel, sou iniciante em firewall iptables, ao setar a política pradão do firewall, as chains todas como DROP nada passa, até aí tudo bem.

    Aí depois eu configura assim:

    IPTABLES -A INPUT -i lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
    IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    IPTABLES -A FORWARD -i eth1 -s 192.168.0.0/24 -o eth0 -j ACCEPT

    se eu tirar umas dessas regras não navego na internet mas com essas regras observei que passa tudo configurei outlook e funciona.

    Pergunta como faço para setar as políticas como DROP e liberar só portas necessárias e funcionar realmente o que liberei tipo porta 80 25 e 110?

  2. #2

    Padrão

    cara...

    parabéns por estar começando a usar o iptables..

    vou te dar uma grande ajuda no seu aprendizado

    Guia Foca GNU/Linux - Firewall iptables

    mas indo direto ao ponto, para você liberar portas específicas, você precisa discriminálas nas regras de FORWARD..

    valeu



  3. #3
    wrochal
    Visitante

    Lightbulb segue exemplo.....

    Caro,

    Veja abaixo o exemplo que uso é simples e funcionar:

    Código :
    #!/bin/bash
    # Firewall desenvolvido por William da Rocha Lima
    # qualquer dúvida envie e-mail para [email protected]
    # Sobre a Licença GPL
    # Data: 22/02/2006
     
     
    # Programas
    IPT=/sbin/iptables
    MODP=/sbin/modprobe
     
    # Configuracao Rede
    IFWAN=eth0
    IFLAN=eth1
    IPWAN=200.X.123.X
    LAN=192.168.5.0/24
    IFINT=192.168.5.0/24
    ANY=0/0
     
    # Servidor de Terminal Service
    SERVER=192.168.5.43
     
    # IPS Liberados para NET
    IPS_ALLOW="192.168.5.1 192.168.5.2 192.168.5.43 192.168.5.56 192.168.5.196 192.168.5.63"
     
    # Portas LIBERADAS (INPUT TCP/UDP)
    INPUT_TCP="53 22 80 9022 20 21 3456 3389 3390 1723"
    INPUT_UDP="53 67 80"
     
    # PORTAS LIBERADAS (FORWARD)
    FORWARD_TCP="20 22 21 25 47 53 80 110 143 1723 1863 3422 3456 3389 3390 3391 3392 3393 443 9022 9023 5800 5900"
    FORWARD_UDP="20 22 21 25 47 53 80 110 143 1723 1863 3456"
     
    # MODULOS A CARREGAR
    for module in ip_tables ipt_REDIRECT ipt_MASQUERADE ipt_MARK ipt_REJECT \
            ipt_TOS ipt_LOG iptable_mangle iptable_filter iptable_nat ip_nat_ftp \
            ip_conntrack ip_conntrack_ftp ip_conntrack_irc \
            ip_nat_irc ipt_mac ipt_state ipt_mark; do
            $MODP $module
    done
     
    # ATIVANDO MASCARAMENTO NO KERNEL
    echo 1 > /proc/sys/net/ipv4/ip_forward
     
    # Protecao de ICMP e Spoofing
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
     
    # Inicio das Regras
    echo -n "Iniciando o Firewall   "
     
    # Limpando as Regras
    echo -n "Limpando as Regras	" 
    $IPT -F
    $IPT -Z
    $IPT -X
    $IPT -t nat -F
    $IPT -t nat -X
    $IPT -t nat -Z
    echo -n "Ativando Compartilhamento	"
    # Compartilhamento
    $IPT -t nat -A POSTROUTING -s 192.168.5.0/24 -d $ANY -p ALL -o $IFWAN -j MASQUERADE
     
    echo -n "Configurando Chain INPUT"
    # LoopBack Livre
    $IPT -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT
    $IPT -A OUTPUT -o lo -s 0/0 -d 0/0 -j ACCEPT
    $IPT -A INPUT -i $IFLAN -m state --state NEW -j ACCEPT
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
     
    # INPUT LIBERADAS
    for servico in $INPUT_TCP; do
      $IPT -A INPUT -p tcp --dport $servico -j ACCEPT
    done
     
    for servico in $INPUT_UDP; do
      $IPT -A INPUT -p udp --dport $servico -j ACCEPT
    done
     
    echo -n "Configurando Chain FORWARD"
    # Estacao para Internet
    for FORWARD in $FORWARD_TCP; do
      $IPT -A FORWARD -p tcp --dport $FORWARD -j ACCEPT
    done
     
    for FORWARD in $FORWARD_UDP; do
      $IPT -A FORWARD -p udp --dport $FORWARD -j ACCEPT
    done
     
    # Liberando Suporte
    for ALLOW_FORWARDS in $IPS_ALLOW; do
    $IPT -A FORWARD -s $ALLOW_FORWARDS -j ACCEPT
    done
     
    # Bloqueando o Resto
     
    echo -n "Configurando Prioridades de Pacotes"
     
    # Priorizando os Liberados
     
    for OUTPUT in $IPS_ALLOW; do
      $IPT -t mangle -A OUTPUT -s $OUTPUT -o $IFWAN -p tcp --dport 0:65535 -j TOS --set-tos 16
      $IPT -t mangle -A OUTPUT -s $OUTPUT -o $IFWAN -p udp --dport 0:65535 -j TOS --set-tos 16
    done
     
    # Prioridade ALTA RDP
    $IPT -t mangle -A OUTPUT -o $IFWAN -p tcp --dport 3389:3390 -j TOS --set-tos 16
    $IPT -t mangle -A PREROUTING -i $IFLAN -p tcp --sport 3389:3390 -j TOS --set-tos 0x10
     
    # Entrada
    $IPT -t mangle -A PREROUTING -i $IFLAN -p udp --sport 0:65535 -j TOS --set-tos 0x00
    $IPT -t mangle -A PREROUTING -i $IFLAN -p tcp --sport 0:65535 -j TOS --set-tos 0x00
     
    # SAIDA
    $IPT -t mangle -A OUTPUT -o $IFWAN -p tcp --dport 10:65535 -j TOS --set-tos 0x00
    $IPT -t mangle -A OUTPUT -o $IFWAN -p udp --dport 10:65535 -j TOS --set-tos 0x00
     
     
    echo -n "Configurando Redirecionamento de Portas"
    # Redirecionamento do Proxy
    $IPT -t nat -A PREROUTING -i $IFLAN -p tcp --dport 80 -j REDIRECT --to-port 3128
     
    # Servidor RDP
    $IPT -t nat -A PREROUTING -d $IPWAN -p tcp --dport 3389 -j DNAT --to-destination 192.168.5.43
    $IPT -t nat -A PREROUTING -d $IPWAN -p tcp --dport 9009 -j DNAT --to-destination 192.168.5.196
    $IPT -t nat -A PREROUTING -d $IPWAN -p tcp --dport 21 -j DNAT --to-destination 192.168.5.1:21
    $IPT -t nat -A PREROUTING -d $IPWAN -p tcp --dport 20 -j DNAT --to-destination 192.168.5.1:20
    $IPT -t nat -A PREROUTING -d $IPWAN -p tcp --dport 80 -j DNAT --to-destination 192.168.5.2
    $IPT -t nat -A PREROUTING -d $IPWAN -p tcp --dport 80 -j DNAT --to-destination 192.168.5.1
     
    echo -n "Ativando Segurança"
     
    # Bloqueando PINGS, Spoofings
    $IPT -A INPUT -p icmp --icmp-type time-exceeded -j DROP
    $IPT -A FORWARD -p icmp --icmp-type time-exceeded -j DROP
     
    # Fechando o RESTO
    $IPT -A INPUT -i $IFWAN -j DROP
    $IPT -A FORWARD -s $LAN -j DROP
     
    echo "                  [  OK  ]"

  4. #4

    Padrão

    # Limpando as regras existentes
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X

    # Política de acesso
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

    # Permissões de acesso ao firewall
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Abrindo algumas portas
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT


    E por ai vai !!!


    Abraçao



  5. #5

    Padrão

    Olá amigo aqui vai um exemplo simples do que você pode fazer!
    Ai você pode ir melhorando as regras!!

    # interfaces
    lan_if="eth1"
    internet_if="eth0"

    # setando as politicas padrão do iptables
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

    # colocando algumas regras para a chain input
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -s 200.200.200.200 -p tcp --dport 22 -j ACCEPT # para liberar ssh para um host especifico

    # Verificando se o arquivo existe e habilitando encaminhamento de pacotes
    if [ -e /proc/sys/net/ipv4/ip_forward ]
    then
    echo "1" > /proc/sys/net/ipv4/ip_forward
    fi

    # Agora você pode liberar os serviços que você queira

    # Essa regra permite que somente conexões estabelecidas/relacionadas por hosts de dentro da sua rede passem pela chain FORWARD!
    iptables -t FORWARD -i $internet_if -o $lan_if -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Portas/serviços liberados para sua lan
    iptables -t FORWARD -i $lan_if -o $internet_if -p tcp --dport 25 -j ACCEPT
    iptables -t FORWARD -i $lan_if -o $internet_if -p tcp --dport 110 -j ACCEPT
    iptables -t FORWARD -i $lan_if -o $internet_if -p tcp --dport 443 -j ACCEPT
    iptables -t FORWARD -i $lan_if -o $internet_if -p tcp --dport 80 -j ACCEPT
    iptables -t FORWARD -i $lan_if -o $internet_if -p tcp --dport 995 -j ACCEPT

    # habilitando nat na interface $internet_if
    iptables -t nat -A POSTROUTING -o $internet_if -j MASQUERADE # Fazendo nat na interface de internet

    Bom com isso ai você vai liberar somente as portas especificadas na chain FORWARD para a internet! Com isso ai você pode ter um controle legal!
    Mas se você não quer controlar todas as portas da para fazer a seguinte regra:

    iptables -t FORWARD -i $lan_if -o $internet_if -j ACCEPT

    Bom, ai você pode mexer bastante!

    Até!!

    André

  6. #6

    Padrão

    Ops! Só uma correção! Acabei errando aqui quando estava escrevendo as regras da chain FORWARD!

    não é assim: iptables -t FORWARD

    e sim: iptables -A FORWARD

    ou ainda: iptables -t filter -A FORWARD

    Falows!!

    André



  7. #7

    Padrão

    Pessoal obrigadão esse forum aqui é foda geral responde logo e com informações consistentes a regras de wrochal achei bem explicadinhas mas ainda fiquei com algumas dúvidas.

    como funciona esse looping que ele aplica, tipo ele coloca:

    for servico in $INPUT_UDP; do
    $IPT -A INPUT -p udp --dport $servico -j ACCEPT
    done

    onde ele declara a variável servico? O linux já entende que a variável servico já está com valor 1 gostaria, se fosse possível entender esse processo que acho bem interessante.

    A outra dúvida. Depois de setar as chais INPUT FORWARD E OUTPUT como DROP fica tudo bloqueado (certo), e quando se aplica as regra:

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    já passa tudo ou não?
    Se não. Se eu aplicar a regra (iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT) já navego na internet? Claro se já tiver feito o MASCARADE e e setado com 1 o arquivo ip_forward?

    Desde já agradeço.

  8. #8

    Padrão

    No for é o seguinte

    for <variavel que vc define> in $<variavel que vc criou antes>
    do
    echo $<variavel que vc define>
    done

    iptables -A INPUT -i lo -j ACCEPT # Essa regra libera o host local a acessar serviços dele mesmo!
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Essa regra libera conexões já estabelecidas e relacionadas

    Somente com essas regras não passa tudo!
    Com a regra que você colocou ali você vai permitir que a rede 192.168.0.0/24 acesse a porta 80 de servidores em outra rede, no caso pode ser a internet!
    Se quiser liberar todos os serviços para a rede faça o seguinte

    iptables -t filter -A FORWARD -s 192.168.0.0/24 -j ACCEPT

    Abraços,

    André



  9. #9