IPsec en multidifusión

5

Estoy intentando implementar IPSec para la comunicación de multidifusión. Intenté strongSwan para configurar IPSec para unicast pero no es compatible con ningún estándar para ipsec de multidifusión como se indica aquí enlace .

Implementé exitosamente IPSec para multidifusión usando la herramienta iproute2 usando los siguientes comandos y configuraciones

Para el remitente (192.168.1.3)

ip xfrm state flush; ip xfrm policy flush

ip xfrm state add src 192.168.1.3 dst 232.1.1.1 proto esp spi 0x54c1859e mode tunnel reqid 0x67cea4aa  auth sha256 0xc8a8bf5ce6330699c3500bd8d2637bc1fa26929bab747d5ff2a1c4dddc7ce7ff enc aes 0xfdce8eaf81e3da02fa67e07df975c0111ecfa906561e762e5f3e78dfe106498e

ip xfrm policy add src 192.168.1.3 dst 232.1.1.1 dir out tmpl src 192.168.1.3 dst 232.1.1.1 proto esp reqid 0x67cea4aa mode tunnel

y para receptores (192.168.1.1 y 192.168.1.2)

ip xfrm state flush; ip xfrm policy flush

ip xfrm state add src 192.168.1.3 dst 232.1.1.1 proto esp spi 0x54c1859e mode tunnel reqid 0x67cea4aa  auth sha256 0xc8a8bf5ce6330699c3500bd8d2637bc1fa26929bab747d5ff2a1c4dddc7ce7ff enc aes 0xfdce8eaf81e3da02fa67e07df975c0111ecfa906561e762e5f3e78dfe106498e

ip xfrm policy add src 192.168.1.3 dst 232.1.1.1 dir in tmpl src 192.168.1.3 dst 232.1.1.1 proto esp reqid 0x67cea4aa mode tunnel

Este túnel IPSec creado con éxito para el grupo de multidifusión 232.1.1.1, pero el problema es que estoy usando un mecanismo de codificación manual. ¿Existe alguna herramienta o forma de configurar el grupo de SA y las políticas de grupo y actualizar las claves después de cierto intervalo?

    
pregunta Zaksh 13.04.2015 - 16:43
fuente

2 respuestas

1

Cisco y Juniper routers implementan GDOI.

También puede ver esta implementación: Manual de implementación de referencia de GDOI , pero es un poco antiguo.

    
respondido por el Nikolai 17.04.2015 - 08:53
fuente
0

Encontré una pregunta y una respuesta relacionadas con las claves y la política de grupo aquí ServerFault .

Además, el código que aparece en el enlace es:     Editar el usuario de Sudo con:

%AccessGroup ALL=(git-sync) NOPASSWD: /usr/bin/"Access"

y edita el gancho con:

sudo -u git-sync /usr/bin/"AccessGroup" push origin

También están los comandos:

#!/usr/sbin/setkey -f
#
# SPD for gateway A (172.16.72.1)
#
spdadd 192.168.1.0/24 10.42.23.0/24 any -P out ipsec
       esp/tunnel/172.16.72.1-172.16.72.254/require
       ah/tunnel/172.16.72.1-172.16.72.254/require;
spdadd 10.42.23.0/24 192.168.1.0/24 any -P in ipsec
        esp/tunnel/172.16.72.254-172.16.72.1/require
        ah/tunnel/172.16.72.254-172.16.72.1/require;
    # AH SAD entries with 160 bit keys
add 172.16.72.254 172.16.72.1 ah 0x200 -A hmac-sha1         0x46915c30ed7e2465b42861b6ab19f2772813020c;
add 172.16.72.1 172.16.72.254 ah 0x300 -A hmac-sha1 0xc4dac594f8228e0b94a54758f7fbf2fdf4e37f3e;

entradas ESP SAD con claves de 192 bits

add 172.16.72.254 172.16.72.1 esp 0x201 -E rijndael-cbc      0xa3993b3dfc41ef0a1aa8d168a8bf2c27e48249ac17b61e09;
add 172.16.72.1 172.16.72.254 esp 0x301 -E rijndael-cbc 0x8f6498928ba354bd45cfad147f54c67b3b742896b3bafc02;

esto debe modificarse, por supuesto ( fuente )

En cuanto a las claves de actualización, la siguiente secuencia de comandos podría ayudar:

auto

qué operación, si corresponde, se debe hacer automáticamente al iniciar IPsec; los valores actualmente aceptados son

 add (signifying an ipsec auto --add), 
route (signifying that plus an ipsec auto --route), 
start (signifying that plus an ipsec auto --up), 
manual (signifying an ipsec manual --up), 
and ignore (also the default) (signifying no automatic startup operation). 

  • Relevante solo localmente, el otro extremo no necesita estar de acuerdo (pero en general, para una conexión que se pretende que sea permanente, ambos extremos deben usar auto = start para garantizar que cualquier reinicio provoque una renegociación inmediata).
  • fuente

    Escribí el inicio de una secuencia de comandos de Python para ayudar a distribuir y agrupar claves de clientes: El código aún se está trabajando en ...

        void key (str x)
    def _init_(key, status):  
    class key:
    key.status = status
    #Getter function
    @status
    def status(key):
    return key.status
    #Setter Function
        @status.setter
        def status(key, value):
        if not isinstance(value, str):
        raise TypeError('Expected Key Not Found')
        key.status = value
    
    #Deleter function
     @status.deleter
     def status(key):
     raise AttibuteError("Can't Delete Attribute")
     from operator import itemgetter
     from ittertools import groupby
     rows.sort(key=itemgetter(key.status))
    for key.status, items in groupby(rows, key=itemgetter(key.status)):
    print(status)
    for i in items:
    print(' ', i)
    #Asserting Keys to Subclasses
    class key(group)
        @key
        def status(key):
        print("Adding Key to Group")
        return super().status
     @status.setter
     def name(status, value):
    print('Distributing Keys', value)
    super(Subclient, Subclient).status._set_(key, value)
        @key.deleter
        def status(key):
        print('Revoking Key')
        super(Subclient, Subclient).key._delete_(status)
    

    Esto no se ingresa en el terminal, ¡pero se ejecuta como un script!

        
    respondido por el user67862 18.04.2015 - 05:59
    fuente

    Lea otras preguntas en las etiquetas