Podcast de Redes de Eduardo Collado

MANRS


Listen Later

MANRS (Normas mutuamente acordadas para en encaminamiento seguro) son un conjunto de normas a las que puedes adherirte voluntariamente después de demostrar que cumples todos los requisitos. MANRS persigue eliminar las amenazas de encaminamiento más comunes:

  1. Secuestro de prefijos.
  2. Fugas de ruta.
  3. Suplantación de direccionamiento IP.
  4. Aquí vamos a centrarnos en MANRS para proveedores de servicios, pero también se puede aplicar MANRS para IXP, redes de distribución de contenidos, proveedores en la nube o incluso fabricantes.

    En cuanto a los proveedores de servicios de Internet (ISP) los beneficios de adherirse a MANRS son varios como por ejemplo:

    • Reconocimiento por la comunidad como buenos ciudadanos de la red y contribuidores de la estabilidad en Internet.
    • Demostrar competencia en seguridad y compromiso con clientes.
    • Ofrecer un servicio de conectividad acorde a los estándares más altos.
    • Contribuir a reducir los problemas de seguridad de routing.
    • Las fases para cumplir MANRS son cuatro:

      1. Validación: Publicar información de routing en lugares que se puedan validar por cualquiera.
      2. Filtrado: Filtrar para anunciar con exactitud los prefijos propios y de sus clientes, filtrando el resto.
      3. Antisuplantación: Impedir el tráfico desde IPs suplantadas.
      4. Coordinación: Mantener información de contacto actualizada.
      5. Validación

        Antes de nada contar que Internet se divide en 5 regiones, cada una de ellas funciona de forma similar, pero no exacta en cuanto a procedimientos y yo voy a centrarme en los que a mi zona respecta que comprende Europa, Oriente Medio, lo que era la Unión Soviética y Mongolia y su RIR (Registro Regional de Internet) que se llama RIPE (del francés Réseaux IP Européens) y el punto de coordinación es RIPE NCC.

        Para realizar las tareas de validación es necesario que los operadores publiquen la información de su red en varios repositorios públicos:

        • IRR (Registros de Encaminamiento de Internet): En mi caso RIPE NCC
        • RPKI (Infraestructura de clave pública de recursos)
        • PeeringDB
        • La información para mantener un estándar se sube utilizando el Lenguaje de especificación de políticas de enrutamiento (RPSL).

          El RPSL nos sirva para almacenar la información relativa a los objetos como INETNUM, ROUTE / ROUTE6 o AS-SET dentro de la base de datos de un IRR (Registro de Routing de Internet):

          Un objeto route de Tecnocrática

          route: 31.47.72.0/21
          descr: Tecnocratica Centro de Datos IPv4 network
          origin: AS15954
          mnt-by: TECNOCRATICA-MNT
          created: 2018-05-22T14:48:50Z
          last-modified: 2018-05-22T14:51:19Z
          source: RIPE

          Un objeto inetnum de Tecnocrática

          inetnum: 31.47.77.0 - 31.47.77.255
          netname: Neodigit-Managed-Hosting-4
          descr: Managed Hosting Group 4
          country: ES
          admin-c: TECN2-RIPE
          tech-c: TECN3-RIPE
          status: ASSIGNED PA
          mnt-by: TECNOCRATICA-MNT
          created: 2019-06-25T10:27:56Z
          last-modified: 2019-06-25T10:27:56Z
          source: RIPE # Filtered

          Un objeto inet6num de Tecnocrática

          inet6num: 2a01:a940::/31
          netname: ES-TECNOCRATICA-20120822
          country: ES
          org: ORG-NS101-RIPE
          admin-c: TECN2-RIPE
          tech-c: TECN3-RIPE
          status: ALLOCATED-BY-RIR
          remarks: For abuse/spam related issues please contact [email protected]
          mnt-by: RIPE-NCC-HM-MNT
          mnt-by: TECNOCRATICA-MNT
          mnt-lower: TECNOCRATICA-MNT
          mnt-routes: TECNOCRATICA-MNT
          created: 2019-07-25T13:02:27Z
          last-modified: 2019-07-25T13:02:27Z
          source: RIPE # Filtered

          Pero con agregar los objetos al IRR que nos corresponda nos es suficiente además necesitaremos objetos ROA (Autorización de Origen de Ruta) para asegurar que esas rutas son realmente nuestras. Para asegurar esto firmaremos critográficamente esa información y la depositaremos en un repositorio RPKI.

          Y por último tenemos a PeeringDB que es donde podemos poner otra información, como por ejemplo los IXPs a los que estamos conectados, la velocidad de nuestros puertos de intercambio y otra información.

          Filtrado

          Con la información del IRR podemos obtener por cada Sistema Autónomo la lista de ASs con los que comparte información tanto entrante como saliente y con eso podemos construir unos filtros que impidan que un AS anuncie algo que no deba.

          Por poner un ejemplo, si nos conectamos contra el AS65555 (es privado) y ese AS le da tránsito al 65554 podemos deducir que vamos a recibir prefijos del 65555 y del 65554, así que si recibimos prefijos del AS23454 significa que algo está mal porque ese AS no puede anunciar prefijos de ese AS pues no está conectado y no nos proporciona tránsito.

          Esa información está en el objeto aut-num que se obtiene simplemente poniendo en la consola:

          $ whois as65555

          En el caso de Tecnocrática podemos obtener el siguiente:

          aut-num: AS15954
          as-name: Tecnocratica
          descr: Tecnocratica Centro de Datos, S.L.
          org: ORG-NS101-RIPE
          remarks: ----------------------------------------------
          remarks: ------------------ IMPORTS -------------------
          remarks: ----------------------------------------------
          remarks: ----------------------------------------------
          remarks: ------------------ TRANSITS ------------------
          remarks: ----------------------------------------------
          import: from AS174 accept ANY
          import: from AS2914 accept ANY
          import: from AS3257 accept ANY
          import: from AS8928 accept ANY
          mp-import: afi any from AS174 accept ANY
          mp-import: afi any from AS2914 accept ANY
          mp-import: afi any from AS3257 accept ANY
          mp-import: afi any from AS8928 accept ANY
          remarks: ----------------------------------------------
          remarks: ------------------ PEERINGS ------------------
          remarks: ----------------------------------------------
          import: from AS42 accept AS-PCH
          import: from AS2906 accept AS-NFLX
          import: from AS3856 accept AS-PCH
          import: from AS6939 accept AS6939
          import: from AS8075 accept AS-MICROSOFT
          import: from AS13030 accept AS-INIT7
          import: from AS13335 accept AS-CLOUDFLARE
          import: from AS15169 accept AS-GOOGLE
          import: from AS15704 accept AS-MUNDI
          import: from AS16276 accept AS-OVH
          import: from AS16509 accept AS-AMAZON
          import: from AS20940 accept AS-AKAMAI
          import: from AS24768 accept AS24768
          import: from AS33891 accept AS-CORE-BACKBONE
          import: from AS-DECIX-MAD accept AS-DECIX-MAD
          import: from AS-DECIX-MAD accept AS-DECIX-MAD
          mp-import: afi any from AS42 accept AS-PCH
          mp-import: afi any from AS2906 accept AS-NFLX
          mp-import: afi any from AS3856 accept AS-PCH
          mp-import: afi any from AS6939 accept AS6939
          mp-import: afi any from AS8075 accept AS-MICROSOFT
          mp-import: afi any from AS13030 accept AS-INIT7
          mp-import: afi any from AS13335 accept AS-CLOUDFLARE
          mp-import: afi any from AS15169 accept AS-GOOGLE
          mp-import: afi any from AS15704 accept AS-MUNDI
          mp-import: afi any from AS16276 accept AS-OVH
          mp-import: afi any from AS16509 accept AS-AMAZON
          mp-import: afi any from AS20940 accept AS-AKAMAI
          mp-import: afi any from AS24768 accept AS24768
          mp-import: afi any from AS33891 accept AS-CORE-BACKBONE
          mp-import: afi ipv4.unicast from AS-DECIX-MAD accept AS-DECIX-MAD
          mp-import: afi ipv4.unicast from AS-DECIX-MAD accept AS-DECIX-MAD
          mp-import: afi ipv6.unicast from AS-DECIX-MAD-V6 accept AS-DECIX-MAD-V6
          mp-import: afi ipv6.unicast from AS-DECIX-MAD-V6 accept AS-DECIX-MAD-V6
          remarks: ----------------------------------------------
          remarks: ------------------ CLIENTS -------------------
          remarks: ----------------------------------------------
          import: from AS6750 action pref=160; accept AS6750
          import: from AS16134 action pref=160; accept AS16134
          import: from AS20144 action pref=160; accept AS20144
          import: from AS29117 action pref=160; accept AS29117
          import: from AS43520 action pref=160; accept AS43520
          import: from AS51718 action pref=160; accept AS51718
          import: from AS197518 action pref=160; accept AS-RACKMARKT
          import: from AS201446 action pref=160; accept AS201446
          import: from AS202207 action pref=160; accept AS-ASPA
          mp-import: afi any from AS6750 accept AS6750
          mp-import: afi any from AS16134 accept AS16134
          mp-import: afi any from AS20144 accept AS20144
          mp-import: afi any from AS29117 accept AS29117
          mp-import: afi any from AS43520 accept AS43520
          mp-import: afi any from AS51718 accept AS51718
          mp-import: afi any from AS197518 accept AS-RACKMARKT
          mp-import: afi any from AS201446 accept AS201446
          mp-import: afi any from AS202207 accept AS-ASPA
          remarks: ----------------------------------------------
          remarks:
          remarks: ----------------------------------------------
          remarks: ------------------ EXPORTS -------------------
          remarks: ----------------------------------------------
          remarks: ----------------------------------------------
          remarks: ------------------ TRANSITS ------------------
          remarks: ----------------------------------------------
          export: to AS174 announce AS-Tecnocratica
          export: to AS2914 announce AS-Tecnocratica
          export: to AS3257 announce AS-Tecnocratica
          export: to AS8928 announce AS-Tecnocratica
          mp-export: afi any to AS174 announce AS-Tecnocratica
          mp-export: afi any to AS2914 announce AS-Tecnocratica
          mp-export: afi any to AS3257 announce AS-Tecnocratica
          mp-export: afi any to AS8928 announce AS-Tecnocratica
          remarks: ----------------------------------------------
          remarks: ------------------ PEERINGS ------------------
          remarks: ----------------------------------------------
          export: to AS42 announce AS-Tecnocratica
          export: to AS2906 announce AS-Tecnocratica
          export: to AS3856 announce AS-Tecnocratica
          export: to AS6939 announce AS-Tecnocratica
          export: to AS8075 announce AS-Tecnocratica
          export: to AS13030 announce AS-Tecnocratica
          export: to AS13335 announce AS-Tecnocratica
          export: to AS15169 announce AS-Tecnocratica
          export: to AS15704 announce AS-Tecnocratica
          export: to AS16276 announce AS-Tecnocratica
          export: to AS16509 announce AS-Tecnocratica
          export: to AS20940 announce AS-Tecnocratica
          export: to AS24768 announce AS-Tecnocratica
          export: to AS33891 announce AS-Tecnocratica
          export: to AS-DECIX-MAD announce AS-Tecnocratica
          export: to AS-DECIX-MAD announce AS-Tecnocratica
          mp-export: afi any to AS42 announce AS-Tecnocratica
          mp-export: afi any to AS2906 announce AS-Tecnocratica
          mp-export: afi any to AS3856 announce AS-Tecnocratica
          mp-export: afi any to AS6939 announce AS-Tecnocratica
          mp-export: afi any to AS8075 announce AS-Tecnocratica
          mp-export: afi any to AS13030 announce AS-Tecnocratica
          mp-export: afi any to AS13335 announce AS-Tecnocratica
          mp-export: afi any to AS15169 announce AS-Tecnocratica
          mp-export: afi any to AS15704 announce AS-Tecnocratica
          mp-export: afi any to AS16276 announce AS-Tecnocratica
          mp-export: afi any to AS16509 announce AS-Tecnocratica
          mp-export: afi any to AS20940 announce AS-Tecnocratica
          mp-export: afi any to AS24768 announce AS-Tecnocratica
          mp-export: afi any to AS33891 announce AS-Tecnocratica
          mp-export: afi ipv4.unicast to AS-DECIX-MAD announce AS-Tecnocratica
          mp-export: afi ipv4.unicast to AS-DECIX-MAD announce AS-Tecnocratica
          mp-export: afi ipv6.unicast to AS-DECIX-MAD-V6 announce AS-Tecnocratica
          mp-export: afi ipv6.unicast to AS-DECIX-MAD-V6 announce AS-Tecnocratica
          remarks: ----------------------------------------------
          remarks: ------------------ CLIENTS -------------------
          remarks: ----------------------------------------------
          export: to AS6750 announce ANY
          export: to AS16134 announce ANY
          export: to AS29117 announce ANY
          export: to AS20144 announce ANY
          export: to AS43520 announce ANY
          export: to AS51718 announce ANY
          export: to AS197518 announce ANY
          export: to AS201446 announce ANY
          export: to AS202207 announce ANY
          mp-export: afi any to AS6750 announce ANY
          mp-export: afi any to AS16134 announce ANY
          mp-export: afi any to AS20144 announce ANY
          mp-export: afi any to AS29117 announce ANY
          mp-export: afi any to AS43520 announce ANY
          mp-export: afi any to AS51718 announce ANY
          mp-export: afi any to AS197518 announce ANY
          mp-export: afi any to AS201446 announce ANY
          mp-export: afi any to AS202207 announce ANY
          remarks: ----------------------------------------------
          remarks:
          admin-c: TECN2-RIPE
          tech-c: TECN3-RIPE
          status: ASSIGNED
          mnt-by: RIPE-NCC-END-MNT
          mnt-by: TECNOCRATICA-MNT
          created: 1970-01-01T00:00:00Z
          last-modified: 2021-09-24T15:13:32Z
          source: RIPE # Filtered

          Ahí lo que podemos ver es de quien se hace import, a quien se le hace export y qué es lo qué se espera recibir y transmitir. Por poner un ejemplo de lo que podemos ver ahí:

          import: from AS15169 accept AS-GOOGLE
          mp-import: afi any from AS15169 accept AS-GOOGLE
          export: to AS15169 announce AS-Tecnocratica
          mp-export: afi any to AS15169 announce AS-Tecnocratica

          Estas de arriba serían las políticas entre Google y  nosotros, por un lado tenemos los import y export, que sólo son para IPv4 y el mp-import y mp-export que sirven para todo. Están duplicadas porque todavía hay gente no soporta los mp-import y mp-export, así que ante la duda duplicas y ya te quitas problemas, pero relamente con el mp-import y  mp-export debería de servir.

          Ahí lo que decimos es que aceptamos lo que vvena en el as-set AS-GOOGLE  y nosotros le anunciamos lkoq ue venga en el as-set AS-Tecnocratica.

          Para generar esos filtros podemos hacerlo a mano, pero no os lo aconsejo porque hay que ser un campeón y lo normal es que se te pasen cosas constantemente, así que lo mejor es usar una herramienta para ello como son: IRRToolset, BGPQ3, BGPQ4, IRRPT. Esas herramientas nos darán la configuración para copiar y pegar, muy facilito todo.

          Todo lo que no esté debidamente documentado en el IRR debería de ser descartado y en un mundo ideal todo lo que no esté en RPKI también, pero es más complicado ya que por desgracia no está totalmente implementado por mucha gente por desconocimiento y por limitaciones del hardware que utilizan.

          Antisuplantación

          Para evitar la suplantación de direcciones IP podemos hacer básicamente dos cosas:

          1. uRPF.
          2. Bloqueo de IPs en interfaces que no deberían de estar.
          3. El uRPF simplemente sería habilitar ip verify unicast reachable-via rx y ipv6 verify unicast reachable-via rx.

            En cuanot al bloqueo de IPs en interfaces es simplemente aplicar un access list que no se acepta nada con la ip de origen fuera del rango del interfaz.

            ...more
            View all episodesView all episodes
            Download on the App Store

            Podcast de Redes de Eduardo ColladoBy Eduardo Collado