+ Responder ao Tópico



  1. #1

    Padrão Redistribuir rotas nulas com roteamento dinâmico OSPF

    Prezados,

    Estou com uma dúvida quanto à (re)distribuição de rotas nulas com roteamento dinâmico OSPF. Para fins elucidativos, apresento o hipotético diagrama abaixo.

    Código :
    [Operadora]-----[srv-fw]-----[rtr-1]-----[rtr-2]-----[rtr-3]-----[rtr-4]
     
    srv-fw = FreeBSD 8.2-STABLE + OpenOSPFd
    rtr-*  = RB800/ROS5.11

    Meu objetivo é adicionar, em um único roteador ([srv-fw]), uma ou mais rotas nulas, e que estas rotas nulas sejam propagadas para todos os demais roteadores da rede ([rtr-*]). Entretanto, eu não quero criar um único blackhole server, e sim que cada roteador tenham essas rotas nulas (re)distribuídas, para que ataques, provenientes dos usuários da rede interna, sejam neutralizados na origem[1], o que é o mais recomendado.

    Um único blackhole server, neste caso, não é apropriado, pois caso um cliente conectado no [rtr-4] disparasse um ataque, eu teria degradação dos enlaces entre [rtr-4] e [srv-fw], até que a rota fosse "diluída cosmicamente" (hehe) no buraco negro.

    De certa forma, eu quero é fazer algo como o RTBH (Remotely-Triggered Black Hole) da Cisco. Mas como a rede é híbrida quanto à diversidade de tecnologias, a ideia é fazer a (re)distribuição de rotas nulas usando um protocolo que seja comum a todos os roteadores dessa rede, e de maneira autônoma, usando o OSPF do RouterOS e o OpenOSPFd do FreeBSD.

    Tudo bem que eu poderia fazer um script[2] usando Python + Paramiko, entrar em cada roteador via SSH, e adicionar/editar/excluir rotas nulas. Também poderia fazer um script dentros do ROS, para obter via requisição HTTP (fetching) a tabela de rotas nulas, exportas do servidor FreeBSD exportada por um webservice. Mas se existe uma forma menos hercúlia, como a (re)distribuição de rotas nulas com roteamento dinâmico OSPF, ficará bem mais fácil e elegante

    Resumindo, eu quero é poder criar rotas nulas em [srv-fw], como route add 66.150.14.111/32 127.0.0.1 -reject, e que todos os roteadores que rodam OSPF, também recebam essa rota nula. Isso não acontece, mesmo (re)distribuindo rotas estáticas. Rotas nulas não são propagadas. As demais rotas são perfeitamente propagadas.

    Caso isso acontecesse, teriamos então, diversos blackhole servers distribuídos, com diluição de rotas nulas no primeiro salto após a origem. A degradação ficaria em first mile/nexthop, na perspectiva de um ataque com origem em um cliente/estação da rede.

    Adiciono abaixo porções de configuração do OpenOSPFd, rodando no FreeBSD e o OSPF do RouterOS.
    Código :
    srv-fw# grep -i distr /usr/local/etc/ospfd.conf 
    redistribute        default
    redistribute        static
    redistribute        connected

    Código :
    [**********@rtr-4] > /routing ospf instance export
    /routing ospf instance
    set default disabled=no distribute-default=never in-filter=ospf-in metric-bgp=auto metric-connected=20 metric-default=1 metric-other-ospf=auto metric-rip=20 \
        metric-static=20 name=default out-filter=ospf-out redistribute-bgp=no redistribute-connected=as-type-1 redistribute-other-ospf=as-type-1 redistribute-rip=no \
        redistribute-static=no router-id=***.***.***.**

    Agradeço desde já por qualquer ajuda.

    [1] http://eng.registro.br/pipermail/gte...ne/032962.html
    [2] https://under-linux.org/f143/registrando-log-149969/

    Saudações,

    Trober
    Última edição por trober; 02-07-2013 às 16:28.

  2. #2
    Analista de Suporte em TI Avatar de demattos
    Ingresso
    Jul 2011
    Localização
    Criciuma/SC
    Posts
    1.923
    Posts de Blog
    3

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    boa noite amigo, nao sabia deste blackhole server muito interessante esta lendo no wiki, se vc ter material ai para da uma estudada fico agradecido

    abraco

  3. #3

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Citação Postado originalmente por demattos Ver Post
    ...nao sabia deste blackhole server muito interessante esta lendo no wiki, se vc ter material ai para da uma estudada fico agradecido...
    Boa noite demattos

    Não tenho um material pronto aqui, mas não me é problema fazer breve comentários sobre rotas nulas.

    Apontar rotas para um lugar nulo é uma forma computacionalmente mais econômica do que filtrar usando firewall. Supondo que você está usando FreeBSD, você pode criar uma rota nula[1] com negação implícita (blackhole) ou explícita (reject), conforme abaixo:

    Código :
    route add 200.200.200.1/32 127.0.0.1 -blackhole

    Código :
    route add 200.200.200.1/32 127.0.0.1 -reject

    Com blackhole, a negação é silenciosa. Com reject, a negação é explicita, com retorno do código 12 (Destination Host Unreachable), conforme descreve o RFC792[2].

    Da mesma forma, pode ser feita com MikroTik RouterOS, conforme um outro tópico[3] e o exemplos abaixo:

    Código :
    /ip route rule add action=drop disabled=no dst-address=200.200.200.1/32

    Código :
    /ip route rule add action=unreachable disabled=no dst-address=200.200.200.1/32

    Com drop, a negação é silenciosa. Com unreachable, a negação é explicita, com retorno do código 12 (Destination Host Unreachable), conforme descreve o RFC792[2].

    Enfim, não fiz o melhor dos materiais, mas espero ter ajudado você

    [1] https://www.dan.me.uk/blog/2009/05/2...ng-in-freebsd/
    [2] http://www.ietf.org/rfc/rfc792.txt
    [3] https://under-linux.org/f212/rotas-n...07/#post586176

    Saudações,

    Trober
    Última edição por trober; 02-07-2013 às 16:29.

  4. #4

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Citação Postado originalmente por demattos Ver Post
    ...se vc ter material ai para da uma estudada fico agradecido
    Boa noite.

    Envio um material[1], não muito novo (é de 2005) da Cisco, sobre blackhole.

    [1] http://www.cisco.com/web/about/secur.../blackhole.pdf

    Saudações,

    Trober
    Última edição por trober; 02-07-2013 às 16:29.

  5. #5

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Citação Postado originalmente por trober Ver Post
    Resumindo, eu quero é poder criar rotas nulas em [srv-fw], como route add 66.150.14.111/32 127.0.0.1 -reject, e que todos os roteadores que rodam OSPF, também recebam essa rota nula. Isso não acontece, mesmo (re)distribuindo rotas estáticas. Rotas nulas não são propagadas. As demais rotas são perfeitamente propagadas.
    Boa noite a todos.

    De forma não muito elegante, consegui implementar um "servidor distribuidor de buraco negro", para rotas indesejadas, com propagação para todos os roteadores de uma rede com roteamento dinâmico OSPF.

    O código que segue usa como exemplo dois destinos que estão sob ataque, sendo a rede 6.6.6.0/30 e 7.7.7.0/24. Os atacantes são usuários da sua própria rede.

    A primeira porção de código refere-se ao servidor "mestre", que distribuirá as rotas que serão neutralizadas. A estratégia consiste em distribuir rotas estáticas, somente na RB "mestre" ([rtr-blackhole-master]), como "type 2".

    Em todas as demais RBs, marcar como blackhole qualquer rota OSPF do tipo "external type 2". O cara que implementar isso, precisa ter a mais monstruosa certeza, maior que o Cosmos inteiro, que não fará uso de qualquer rota produtiva com "type 2".
    Código :
    ########## [rtr-blackhole-master]
     
    ### Bridge que recebe apontamento de rotas mortas.
    /interface bridge add disabled=no name=blackhole
     
    ### Definir que rotas estaticas serao redistribuidas como tipo 2.
    /routing ospf instance set default redistribute-static=as-type-2
     
    ### Repita quantas vezes for, para cada rota que deseja declarar como morta.
    /ip route add disabled=no dst-address=6.6.6.0/30 gateway=blackhole
    /ip route add disabled=no dst-address=7.7.7.0/24 gateway=blackhole

    Agora o código que deve ser executado em todas as RBs da rede, exceto rtr-blackhole-server.

    Código :
    ########## [rtr-N]
    ### Sendo para 'N', toda e qualquer RB da rede, com OSPF, exceto [rtr-blackhole-server].
     
    /routing filter add action=accept chain=ospf-in disabled=no ospf-type=external-type-2 set-type=blackhole

    Funciona, isso é fato. Entretanto, é muito mais elegante trabalhar com Communities[1] em BGP. Essa "adaptação técnica", de contar que só terá anúncios "type 1" na rede, é arriscado, por mais bem descrita tal "feature braçal", na documentação da rede.

    [1] http://wiki.mikrotik.com/wiki/Manual...Filter_Example

    Saudações,

    Trober
    Última edição por trober; 02-07-2013 às 16:30.

  6. #6
    Moderador Avatar de gamineiro
    Ingresso
    Jan 2008
    Localização
    RS
    Posts
    423
    Posts de Blog
    2

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Boa tarde amigo,

    Eu iria te sugerir usar filtros OSPF de saida no [srv-fw], marcando as rotas com Route Tag, Router Targets, Site Of Origin ou qualquer outro tipo de marcação de rotas que possa ser manipulado com filtros, então em cada roteador um filtro de entrada com base nesse atributo, fazer a adição da rota no blackhole. Vou fazer uns testes, pois nunca usei isso.

    Abraço

  7. #7

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Citação Postado originalmente por gamineiro Ver Post
    Boa tarde amigo
    Boa tarde Gabriel

    Citação Postado originalmente por gamineiro Ver Post
    Eu iria te sugerir usar filtros OSPF de saida no [srv-fw], marcando as rotas com Route Tag, Router Targets, Site Of Origin ou qualquer outro tipo de marcação de rotas que possa ser manipulado com filtros, então em cada roteador um filtro de entrada com base nesse atributo, fazer a adição da rota no blackhole.
    Como estão seus testes?

    srv-fw é um FreeBSD + OpenOSPFd, não MikroTik RouterOS, mas, de qualquer forma, vejo que você captou a ideia

    Fui então, seguindo sua lógica, fazer os testes em rtr-1.

    Nos meus testes, detectei que na implementação OSPF, do MikroTik RouterOS, os atributos possível ao protocolo, sem extensões, são:

    scope
    next-hop
    origin-type
    origin-instance-id
    route-tag
    ospf-metric
    ospf-type


    Com isso, sua sugestão de "Router Targets" e "Site Of Origin" (atributos de BGP), fica descartada.

    Resta então route-tag (que era também uma de suas sugestões ), mas, no entanto, não é possível filtrar rotas internas do OSPF, conforme consta na documentação[1] (destaque abaixo), e reforçado por mrz[2], do MikroTik Team.

    that internal RIP filtering is done using prefix lists [and internal (intra-area) OSPF filtering is not supported yet]
    You can filter only external OSPF routes.
    Ou seja, redistribuição de blackhole routes, da mesma forma como feito no Cisco com RTBH (Remotely-Triggered Black Hole), no MikroTik RouterOS, até a versão 5.20, só consegui da forma como sugeri[3], nesse tópico.

    Citação Postado originalmente por gamineiro Ver Post
    Vou fazer uns testes, pois nunca usei isso.
    Mantenha-nos informado sobre seu progresso nos testes. Vou informando daqui

    [1] http://wiki.mikrotik.com/wiki/Manual...outing_filters
    [2] http://forum.mikrotik.com/viewtopic....=64078#p328002
    [3] https://under-linux.org/showthread.p...931#post604730

    Abraço,

    Trober
    Última edição por trober; 02-07-2013 às 16:31.

  8. #8
    Moderador Avatar de gamineiro
    Ingresso
    Jan 2008
    Localização
    RS
    Posts
    423
    Posts de Blog
    2

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Bom dia!

    Realmente falei asneira, nenhuma das sugestões funcionam, já que não é possível filtrar as rotas internas, como você descobriu.

    MAS, viajando um pouco na topologia.

    Junto ao seu blackrole server, criei um sessão BGP com mais um servidor, esse outro é que fará os anúncios de blackrole.

    No Servidor que irá rodar o BGP + OSPF criei um filtro dizendo que tudo o que entrar pelo peer BGP terá o route-tag=10. Na instância OSPF ativar a opção que redistribui rotas BGP.

    Fui correndo nos outros roteadores ver se o route-tag estava com valor 10, não obtive sucesso, ele não é alterado na FIB.

    Agora vem a curiosidade, observando o LSA do router que recebeu o anúncio (Qualquer um que rode apenas OSPF), a entrada correspondente a rota anunciada lá no blackrole server, está com o route-tag setado, nessa caso em hexadecimal, com valor 0xa.

    Mesmo assim não conseguimos manipular a rota usando esse atributo. Parece que falta pouco para dar certo, hehehehe.

    O que você acha?

    Abraço

  9. #9

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Bom dia

    Citação Postado originalmente por gamineiro Ver Post
    Realmente falei asneira, nenhuma das sugestões funcionam, já que não é possível filtrar as rotas internas, como você descobriu.
    Eu não diria asneira. A sugestão foi válida, pois encontrei outras várias funcionalidades das quais eu precisava, mas não aplicáveis aqui.

    Citação Postado originalmente por gamineiro Ver Post
    Junto ao seu blackrole server, criei um sessão BGP com mais um servidor, esse outro é que fará os anúncios de blackrole.

    No Servidor que irá rodar o BGP + OSPF criei um filtro dizendo que tudo o que entrar pelo peer BGP terá o route-tag=10. Na instância OSPF ativar a opção que redistribui rotas BGP.
    Não quero usar BGP, e se for para usar, então eu usaria communities[1]. A maioria das operadoras usa a communities[1] 666 para mandar a "rota para o inferno", hehehe.

    Citação Postado originalmente por gamineiro Ver Post
    Agora vem a curiosidade, observando o LSA do router que recebeu o anúncio (Qualquer um que rode apenas OSPF), a entrada correspondente a rota anunciada lá no blackrole server, está com o route-tag setado, nessa caso em hexadecimal, com valor 0xa.
    Você perde esse atributo se possuir roteadores em outras áreas, diferentes da zero (backbone).

    Citação Postado originalmente por gamineiro Ver Post
    Mesmo assim não conseguimos manipular a rota usando esse atributo. Parece que falta pouco para dar certo, hehehehe.

    O que você acha?
    Penso que podemos solicitar à MikroTik a feature (like a Cisco), que possibilita redistribuição de rotas blackhole. Por outro lado, ao solicitarmos isso, será mais um vendor a ferir o RFC2328[2]. A MikroTik já faz muitas feridas às normas (um exemplo é a desobediência ao RFC3021[3]).

    Citação Postado originalmente por gamineiro Ver Post
    Abraço
    Abraço!

    [1] http://wiki.mikrotik.com/wiki/Manual...Filter_Example
    [2] http://www.ietf.org/rfc/rfc2328.txt
    [3] http://tools.ietf.org/html/rfc3021

    Trober
    Última edição por trober; 02-07-2013 às 16:33.

  10. #10
    Moderador Avatar de gamineiro
    Ingresso
    Jan 2008
    Localização
    RS
    Posts
    423
    Posts de Blog
    2

    Padrão Re: Redistribuir rotas nulas com roteamento dinâmico OSPF

    Mas esse BGP seria apenas entre esses 2 routers, para que as rotas chegassem ao OSPF como EXTERNAS, assim seria possível usar os filtros, ao menos eu pensei assim, e consegui com que o route-tag chegasse até os LSAs de todos os routers, porém não sendo ativado na FIB.

    Vi essa discussão do /31 na lista do GTER, uma pena.