+ Responder ao Tópico



  1. #1

    Padrão Iptables Bad Argument

    Eu instalei um firewall só que ele está apresentando um único erro que eu não sei o que tem de errado:

    Bad argument '0/0'

    ou tbm se eu deixo como 0.0.0.0/0 tbm da esse erro...

    o que falta?modulo?opção no kernel?

  2. #2

  3. #3

    Padrão

    vc se refere 0/0 ou 0.0.0.0/0 para qualquer destino certo ... ???
    como o gatoseco falou, posta ai tua regra, pois pode ter alguma chain ou algum erro na conf dessa regra,

    Falow ...

  4. #4

    Padrão Vamos as regras...

    O primeiro arquivo a ser carregado é esse...

    #!/bin/bash
    # Descricao: Firewall Iptables

    echo "Ajustando modulos do kernel..."

    # Carga de modulos do kernel.

    /sbin/rmmod ip_tables
    /sbin/rmmod ip_conntrack
    /sbin/rmmod ip_conntrack_ftp
    /sbin/rmmod ip_nat_ftp

    /sbin/modprobe ip_tables
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp

    # Resposta a ping.
    #/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

    # Resposta a broadcasts.
    /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    # Rejeita pacotes roteados na origem.
    /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

    # Desabilita redirecionamento de pacotes ICMP.
    /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

    # Habilita mensagens de erro.
    /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

    # Habilita protecao contra ip spoofing.
    for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
    /bin/echo "1" > ${interface}
    done

    # Habilita ip_forward
    /bin/echo "1" > /proc/sys/net/ipv4/ip_forward

    # Carga das regras
    /usr/local/bin/firewall/regras/input
    /usr/local/bin/firewall/regras/snat
    #/usr/local/bin/firewall/regras/snat.https
    /usr/local/bin/firewall/regras/dnat
    /usr/local/bin/firewall/regras/bloqueio

    # Fim de script

    e o começo do arquivo "input" de "carga das regras" esta assim...

    #!/bin/bash
    # Descricao: Firewall Iptables

    echo "Carregando regras de entrada..."

    # Variaveis
    any="0.0.0.0/0"
    localhost="127.0.0.1/32"
    ipt="/sbin/iptables"

    e a mensagem de erro é essa...

    Ajustando modulos do kernel...
    ERROR: Module ip_tables is in use by iptable_nat,iptable_filter
    ERROR: Module ip_conntrack is in use by ip_nat_ftp,ipt_MASQUERADE,iptable_nat,xt_state,ip_nat,ip_conntrack_ftp
    ERROR: Module ip_conntrack_ftp is in use by ip_nat_ftp
    Carregando regras de entrada...
    Bad argument `0.0.0.0/0'
    Try `iptables -h' or 'iptables --help' for more information.
    Carregando regras de snat...
    Carregando regras do arquivo dnat...
    Carregando regras de arquivo de bloqueio...

    eu uso fedora 5....

  5. #5

    Padrão

    Retire as linhas referentes aos modulos, elas ja estão sendo carregadas pelo propio sistema, retire tambem a linha any ela não sera necessaria e pelo que vi não tem função nenhuma dentro do seu script.

    Vejo tambem que voce ainda nao definiu uma politica padrão e isso e muito importante, pelo que vejo tambem voce ta começando com iptables não é ???Testa ai e manda resposta.


    Abração

  6. #6

    Padrão

    Tente apenas colocar aspas simples pra ver o que acontece. Me parece que ele está recebendo a variável como se fosse um comando `0.0.0.0/0` e não '0.0.0.0/0'.

    Tente e ferifique o que acontece!

    mtec

  7. #7

    Padrão respondendo as questoes

    Eu preciso dessa variavel gatoseco pois ela eu utilizo ela em varios pontos nas regras....eu tenho um conhecimento quase medio rsrs....e mtec eu tentei varias formas de aspas e essa *** num reage....o estranho que ele carrega 4 arquivos e apenas esse da erro...tentei copiar a variavel de outro arquivo e tbm nao deu certo...

  8. #8

    Padrão

    Amigo o 0/0 especifica tudo que vem da internet com destino a sua maquina cabe a você definir dentro de algumas regras se essa conexão sera aceita(ACCEPT), ou sera negada(DROP), quando voce aplica uma regra no iptables normalmente o sistema entende que o determinado modulo referente aquela regra deve ser carregado(que e o seu caso, as regras ja estão sendo carregadas), nao precisando inserir as linhas modprobe nomedomodulo.

    Vou colocar abaixo um exemplo de regra com essa formação:

    iptables -t filter -A FORWARD -d 0/0 –s 192.168.0.2 -m mac --mac-source 00:0C:01:EC:0D:5A -j ACCEPT

    E nunca precisei definir any="0/0". Voce ta querendo inventar coisa que não existe amigo isso nao e necessario, o 0/0 faz parte de regras no iptables mas nao precisa ser reverenciado em lugar nenhum pra que funcione, que e como voce ta tentando fazer.


    Veja bem esse inicio de firewall:

    #############################
    # VARIÁVEIS DO FIREWALL #####
    #############################
    IPTABLES=/sbin/iptables
    DEPMOD=/sbin/depmod
    MOD=/sbin/modprobe
    IFEXT="eth0"
    IFINT="eth1"
    REDEINT=10.124.1.0/16
    REDEEXT=10.0.0.0/255.0.0.0

    #################################################################
    # ACEITANDO CLIENTES UHE-Aimores(Liberando que a rede se conectar no ## #servidor em qualquer porta com qualquer flag) ##
    #################################################################
    $IPTABLES -A INPUT -s $REDEINT -i $IFEXT -j ACCEPT
    $IPTABLES -A INPUT -i $IFINT -j ACCEPT

    #######################################
    # LIBERANDO PORTA PARA LOTUS NOTES ####
    #######################################
    $IPTABLES -A INPUT -p tcp -s $REDEINT --dport 1352 -j ACCEPT
    $IPTABLES -A INPUT -p udp -s $REDEINT --dport 1352 -j ACCEPT

    Nesse caso foi definido as ethx e as rede envolvidas, ai funciona tranquilamente, apesar de que não sou muito adepto dessas marcações. Abaixo segue o inicio do script que utilizo.

    #!/bin/bash
    # Carregando módulos necessários e dando inicio ao firewall
    case "$1" in
    start)
    echo "Iniciando Firewall..."
    # depmod -a
    # modprobe ip_tables
    # modprobe iptable_nat
    # modprobe iptable_filter
    # modprobe ipt_MASQUERADE
    # modprobe ip_conntrack
    # modprobe ip_conntrack_ftp
    # modprobe ip_nat_ftp
    # modprobe ipt_mark
    # modprobe ipt_MARK
    # modprobe iptable_mangle
    # modprobe ipt_REJECT

    # Ativa Roteamento via kernel
    echo 1 > /proc/sys/net/ip_forward

    # Zerando as chains existentes
    iptables -F
    iptables -X
    iptables -F -t nat
    iptables -X-t nat
    iptables -F -t filter
    iptables -X -t filier

    # Definindo política padrão
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT


    Abraçao cara e boa sorte.

  9. #9

    Padrão mas...

    pra mim não mudar as regras do firewall como eu poderia substituir o 0/0 (qualquer ip) para algo do mesmo tipo, no sentido de geral, tanto faz se é da rede ou se é da internet?


    exemplo de uma regra que tem..

    $ipt -A INPUT -s $redeinterna -d $any -m state --state NEW,ESTABLISHED -j ACCEPT
    $ipt -A INPUT -s $redeexterna -d $any -m state --state NEW,ESTABLISHED -j ACCEPT

  10. #10

    Padrão

    Tenta ai :

    $ipt -A INPUT -s 200.200.200.200/24 -d 0/0 -m state --state NEW,ESTABLISHED -j ACCEPT

    $ipt -A INPUT -s $redeexterna -d 0/0 -m state --state NEW,ESTABLISHED -j ACCEPT

    Abraçao

  11. #11

    Padrão

    Tenta ai, e me fala uma coisa qual seria a função dessa regra, to achando muito vaga a tua ideia :

    $ipt -A INPUT -s 200.200.200.200/24 -d 0/0 -m state --state NEW,ESTABLISHED -j ACCEPT

    $ipt -A INPUT -s $redeexterna -d 0/0 -m state --state NEW,ESTABLISHED -j ACCEPT



    Abraçao

  12. #12

    Padrão é..

    meu problema não é o tipo de regra que vai ser aplicado..o problema é que ele não esta aceitando a regra 0/0...

    # /sbin/iptables -A INPUT -s $redeexterna -d 0/0 -m state --state NEW,ESTABLISHED -j ACCEPT
    Bad argument `0/0'
    Try `iptables -h' or 'iptables --help' for more information.

  13. #13

    Padrão

    Me diz duas coisas, primeiro pra que serve essa regra, e segundo da onde vc tirou ela.

  14. #14

    Padrão segue regras...

    aqui segue apenas um dos arquivos...pra vc tentar entender onde é utilizada a variavel any=0/0....quem fez o firewall não fui eu e sim um amigo que trabalha em uma empresa...ele apenas me mandou o modelo dele...

    arquivo input:

    # Descricao: Firewall Iptables
    #!/bin/bash
    # Descricao: Firewall Iptables

    echo "Carregando regras de entrada..."

    # Variaveis
    localhost="127.0.0.1/32"
    ipt="/sbin/iptables"
    any="0.0.0.0/0"

    IFCONFIG=`which ifconfig`

    ## para sistemas em portugues:
    ipexterno="200.206.138.203"
    ipinterno="192.168.0.1"

    bcastexterno="200.206.138.255"
    bcastinterno="192.168.0.255"

    redeexterna="200.206.138.193/26"
    redeinterna="192.168.0.0/24"

    # Ajusta politicas de acesso do firewall.
    $ipt -P INPUT DROP
    $ipt -F INPUT
    $ipt -Z INPUT

    # Aceita trafego na interface loopback.
    $ipt -A INPUT -i lo -j ACCEPT

    # Protecao contra port scanner.
    $ipt -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

    # Protecao contra ping da morte (Aceita ping).
    #$ipt -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    #$ipt -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

    # Aceita apenas novas conexoes, com flag de sincronismo ok.
    $ipt -A INPUT -p tcp -s $any -d $ipexterno ! --syn -m state --state NEW -j DROP


    # Hosts internos
    $ipt -A INPUT -s $redeinterna -d $any -i eth1 -j ACCEPT
    $ipt -A INPUT -s $redesinha -d $any -i eth1 -j ACCEPT

    # Nega pacotes destinados ao localhost.
    $ipt -A INPUT -i eth0 -d $localhost -j DROP
    $ipt -A INPUT -i eth1 -d $bcastinterno -j DROP

    # Rejeita pacotes na porta auth.
    $ipt -A INPUT -p tcp -s $any -d $any --dport 113 -j REJECT --reject-with tcp-reset

    ###############################################################################
    # Regras de ACCEPT #
    ###############################################################################
    # SSH.
    $ipt -A INPUT -p tcp -s $any -d $any --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    #$ipt -A INPUT -p tcp -s $any -d $any --dport 33000 -m state --state NEW,ESTABLISHED -j ACCEPT
    #$ipt -A Input -p tcp -s $any -d $any --dport 5500 -m state --state NEW, ESTABLISHED -j ACCEPT

    # Relatorio - HTTP.
    $ipt -A INPUT -p tcp -s $any -d $any --dport 81 -m state --state NEW,ESTABLISHED -j ACCEPT

    # Hosts internos
    $ipt -A INPUT -s $redeinterna -d $any -m state --state NEW,ESTABLISHED -j ACCEPT
    $ipt -A INPUT -s $redeexterna -d $any -m state --state NEW,ESTABLISHED -j ACCEPT

    ###############################################################################

    # Nega tudo e faz log.

    $ipt -A INPUT -i eth0 -p tcp -j LOG --log-level 6 --log-prefix "ALERTA-TCP ---> "
    $ipt -A INPUT -s $any -d $any -p tcp -j DROP

    $ipt -A INPUT -i eth0 -p udp -j LOG --log-level 6 --log-prefix "ALERTA-UDP ---> "
    $ipt -A INPUT -s $any -d $any -p udp -j DROP

    $ipt -A INPUT -i eth0 -p icmp -j LOG --log-level 6 --log-prefix "ALERTA-ICMP ---> "
    $ipt -A INPUT -s $any -d $any -p icmp -j DROP

    $ipt -A INPUT -i eth0 -j LOG --log-level 6 --log-prefix "ALERTA-DESCONHECIDO ---> "
    $ipt -A INPUT -s $any -d $any -j DROP

    # Fim das regras de entrada.

  15. #15

    Padrão

    Cara vc pode achar que eu sou um chato e ate sou na verdade !!! hehehe


    Mas esse negocio desse firewall foi meu amigo que fez e me mandou e bucha cara, eu poderia fazer um e te mandar, mas vai saber se ele se adapta as tuas necessidades.

    O ideal seria vc mesmo criar o seu script de firewall e realmente entender o que vc colocou nesse arquivo, pegar pronto de uma outra pessoa as vezes pode te dar mais dor de cabeça do que alegrias.


    Abraçao

  16. #16

    Padrão é..

    eu tbm acho que vc esta certo...mais o problema é que eu sou apenas o assistente por aqui rsrs...e me pediram apenas pra ver essa mensagem de erro....eu tenho um conhecimento médio sobre o firewall....o problema é que ja existe um na empresa que funciona com essas regras...e esse vai pra filial....e por azar esta dando a msg de erro do 0/0...mais tudo bem...eu vou ver o que eu consigo por aqui...vlw a ajuda...

  17. #17

    Padrão

    Na boa?

    O iptables quando você omite algum argumento, ele interpreta como todos. Sendo assim, se eu lançar isso:

    Código :
    # iptables -t filter -A FORWARD -s 192.168.1.33/32 -j DROP

    E isso:

    Código :
    # iptables -t filter -A FORWARD -s 192.168.1.33/32 -d 0/0 -j DROP


    É a mesma coisa. O quê pode estar ocasionando o não aceite do "$any" é um problema do próprio shell ou do próprio iptables. Para saber a resposta, altere os $any da vida do script para 0/0. Abraços!

  18. #18

    Padrão achei o erro

    o erro era que o pateta aqui tinha colocado isso aqui

    # Hosts internos
    $ipt -A INPUT -s $redeinterna -d $any -i eth1 -j ACCEPT
    $ipt -A INPUT -s $redesinha -d $any -i eth1 -j ACCEPT

    só que o $redesinha foi apagado das "variáveis" (tipo redesinha="x.x.x.x")....ai foi só acertar isso é ta tudo certo..vlw pela ajuda pessoal...