Mr.Chan

导航

IP Security(IPSec)

IP Security(IPSec)的juniper配置案例(现在还没有开始看juniper...)
   配置IPSec全局和提议属性
        配置Security Associations安全联盟
        配置Dynamic Security Associations 动态安全联盟
        配置 IKE
        配置一个IPSec提议
        配置一条IPSec策略
       
        IPSec架构为IPv4和IPv6网络层提供了一个安全套件。这个套件提供了诸如对发起者认证、数据完整性、重放攻击、以及源不可抵赖性等功能。除了IPSec,JUNOS也提供动态密钥交换(IKE)的支持,IKE定义了密钥生成、交换的机制,并且管理安全联盟。IPSec也定义了能在任何网络层协议上使用的安全联盟和密钥管理框架。SA(security associations 安全联盟)规定了用来保护两个IP层实体间通信的策略。IPSec则在两个通信对端间提供了安全通道。
        为了使用IPSec安全服务,你需要在两个主机间创建安全联盟(SA)。SA可以通过IPSec为主机提供安全通信。共有两种类型的SA:
        无需协商的手动SA:所有的熟悉值,包括密钥,都是静态设置好的。即手动SA静态定义了安全参数索引,算法以及所使用的密钥,并且要求隧道两端有相匹配的参数。因此,通信两端若要正常通信必须有相同的配置。
        动态SA:使用动态SA时,你只需要先配置IKE(密钥交换协议)再配置SA。IKE产生动态SA。IKE的配置定义了两个安全网关之间创建安全IKE连接所需的算法和密钥。然后,这个IKE安全连接就可以被用来动态协商产生IPSec SA连接所需的密钥和其它数据。也就是说,IKE安全连接首先被协商创建,并用它来保护产生IPSec SA安全连接的协商过程。

JUNOS的IPSec实现支持两种类型的安全连接:主机到主机以及网关到网关。主机到主机的安全连接保护了到路由器的BGP会话。与BGP同时使用的SA必须时手工配置并且使用传输模式。也即安全连接两端的所有静态属性值都必须事先指定。为了使用端到端的安全保护,需要手工配置SA为传输模式,然后在[edit protocols bgp]中指定SA名称,从而保护与对端的会话。

网关到网关的安全保护两个网关间的流量。这种方式通常用来加密VPN流量。由于当前传输接口的高速度,这种功能需要ES PIC模块。所以要使用网关到网关的保护,必须配置IKE(只在动态SA下需要)、SA、ES PIC,以及其它一些参数。

IKE是一套用于产生动态SA的密钥管理协议;即它为IPSec协商产生SA。一套IKE配置则定义了与对端安全网关建立安全连接所需的算法和密钥。IKE负责协商和管理IKE以及IPSec参数、对密钥交换做认证、通过共享密钥(不是密码)和公钥对通信双方进行认证、同时提供对实体的保护(在主模式下)。IKE要经历两个阶段。在第一阶段里,它协商安全属性并且产生共享密钥来创建双向IKE SA。第二阶段,外向和内向IPSec SA都被建立起来。IKE SA对第二阶段密钥交换进行保护。IKE还产生了密钥生成数据,提供完全前向转发安全性(PFS),以及交换两端标识。

做以下步骤配置安全服务:
[edit security]
ike {
        numerous global IKE statements
        proposal ike-proposal-name {
                authentication-algorithm (md5 | sha1 );
                authentication-methor pre-shared-keys;
                dh-group (group1 | group2);
                encryption-algorithm (3des-cbc | des-cbc);
                lifetime-seconds seconds;
}
policy ike-peer-address {
    mode (aggressive | main);
    proposal [ike-proposal-names];
    pre-shared-key (ascii-text key  | hexadecimal key);
  }
}
ipsec {
  numerous global ipsec statements
  proposal ipsec-proposal-name {
    authentication-algorithm (hmac-md5-96 | hmac-sha1-96);
    encryption-algorithm (3des-cbc | des-cbc);
    lifetime-seconds seconds;
    protocol esp;
  }
  policy ipsec-policy-name {
    perfect-forward-secrecy {
      keys (group1 | group2);
    }
    proposal [ipsec-proposal-names];
  }
  security-association name {
    mode (tunnel | transport);
    replay-window-size (32 | 64);
    manual {
      direction (inbound | outbound | bi-directional) {
        authentication {
          algorithm (hmac-md5-96 | hmac-sha1-96);
          key (ascii-text key  | hexadecimal key);
        }
        encryption {
          algorithm (des-cbc | 3des-cbc);
          key (ascii-text key | hexadecimal key);
        }
        protocol (esp | ah);
        spi spi-value;
      }
    }
    dynamic ipsec-policy policy-name;
  }
}

下面是配置手动SA的基本步骤:
[edit security ipsec]
security-association name {
  manual {
    direction (inbound | outbound | bi-directional) {
      authentication {
        algorithm (hmac-md5-96 | hmac-sha1-96);
        key (ascii-text key  | hexadecimal key);
      }
      encryption {
        algorithm (des-cbc | 3des-cbc);
        key (ascii-text key | hexadecimal key);
      }
      protocol (esp | ah);
      spi spi-value;
    }
  }
}
下面是配置动态SA的基本步骤:
[edit security]
ike {
  proposal ike-proposal-name {
    authentication-algorithm (md5 | sha1);
    authentication-method pre-shared-keys;
    dh-group (group1 | group2);
    encryption-algorithm (3des-cbc | des-cbc);
  }
  policy ike-peer-address {
    proposal [ike-proposal-names];
    pre-shared-key (ascii-text key  | hexadecimal key);
  }
}
ipsec {
  policy ipsec-policy-name {
    proposal [ipsec-proposal-names];
  }
  proposal ipsec-proposal-name {
    authentication-algorithm (hmac-md5-96 | hmac-sha1-96);
    encryption-algorithm (3des-cbc | des-cbc);
    protocol esp;
  }
  security-association name {
    dynamic ipsec-policy policy-name;
  }
}
配置IPSec全局和提议属性
定义IPSec全局属性包含下面步骤,这些属性用来实现所有的IPSec提议。
[edit security ipsec]
authentication-algorithm (hmac-md5-96 | hmac-sha1-96);
encryption-algorithm (3des-cbc | des-cbc);
lifetime-seconds seconds;
protocol esp;

定义IPSec提议规定的属性包含下列步骤:

[edit security ipsec proposal ipsec-proposal-name]
authentication-algorithm (hmac-md5-96 | hmac-sha1-96);
encryption-algorithm (3des-cbc | des-cbc);
lifetime-seconds seconds;
protocol esp;

配置安全联盟(SA)
为IPSec配置SA,要使用security-association 语句,指定一个SA名字。
[edit security ipsec]
security-association name;

IPSec可以运行在两种模式下:传输模式以及隧道模式。其中隧道模式为默认模式。隧道模式保护安全网关之间的连接。隧道模式需要ES PIC。配置隧道模式需用mode语句指定transport选项。在传输模式下,JUNOS不支持AH和ESP(封装安全负荷)bundles。

[edit security ipsec security-association name]
mode transport;

配置重传窗口大小来保护接收端拒绝重传和过期的数据包,要使用replay-window-size语句。

[edit security ipsec security-association name]
replay-window-size (32 | 64);

手动SA无需协商,所有的值包括密钥,全部事先静态配置好。因此,两端必须有完全相同的配置。配置手动IPSec SA,使用manual语句:

[edit security ipsec security-association name]
manual {
  direction (inbound | outbound | bi-directional) {
    authentication {
      algorithm (hmac-md5-96 | hmac-sha1-96);
      key (ascii-text key  | hexadecimal key);
    }
    encryption {
      algorithm (des-cbc | 3des-cbc);
      key (ascii-text key | hexadecimal key);
    }
    spi spi-value;
    protocol (esp | ah);
  }
}

direction语句设置了内向和外向的IPSec处理。为了给两个方向分别设置不同的算法、密钥或安全参数索引值(SPI),需要配置inbound和outbound选项。也可以使用bidirectional选项使两个方向使用相同的属性参数。

IPSec使用两种协议保护IP流量:安全封装头部(ESP)和认证头部(AH)。对传输模式SA,ESP和AH都是支持的。配置IPSec协议,要使用protocol语句。

安全参数索引(SPI)是一个必选值,它唯一指定了接收主机所使用的SA。发送主机用SPI来选择和指定使用哪一个SA来加密数据包,而接收端则根据SPI来选择解密的算法和密钥。因此手工SA必须有唯一的SPI和协议组合。配置SPI,使用spi语句。

配置认证算法,使用authentication语句。认证算法可以为下面的任意一个:
        hmac-md5-96 对数据包采用哈希认证算法,产生128位认证头和96位摘要。
        hmac-sha1-96对数据包采用哈希认证算法,产生160位认证头和96位摘要。

认证密钥可以为下面的任意一个:
        ascii-text ASCII文本密钥。若使用hmac-md5-96认证方法,则密钥包含16个ASCII字符;若使用hmac-sha1-96认证方法,则密钥包含20个ASCII字符。
        hexadecimal 16进制密钥。若使用hmac-md5-96认证方法,则密钥包含32个16进制字符;若使用hmac-sha1-96认证方法,则密钥包含40个16进制字符。

配置IPSec加密方法,使用encryption语句。算法可以为下面的任意一个:
        des-cbc 这种加密算法块大小为8字节;密钥长度为64位。
        3des-cbc 这种加密算法块大小为24字节;密钥长度192位。对3des-cbc来说,前8字节不能和第二个8个字节相同,第二个8个字节则不能和第三个8个字节相同。

可以参考 RFC2409,Internet Key Exchange 查看DES等低强度的加密方法。

加密密钥可以为下面的任意一个:
        ascii-text ASCII文本密钥,在des-cbc下密钥包含8个ASCII字符;在3des-cbc下密钥包含24个ASCII字符。
        hexadecimal 十六进制密钥,在des-cbc下密钥包含16个十六进制字符;在3des-cbc下密钥包含48个十六进制字符。

另外,在使用AH协议时不能配置加密。
配置动态SA
可以通过安全网关的协商配置动态SA。密钥可以在协商时产生并不需要在配置中指定。动态SA包含一个或多个提议,这样就可以指定与对端协商时协议和算法的优先级。

为了激活动态SA,需要配置IKE协议和相关的IKE策略、配置IPSec协议和相关的IPSec策略、以及把一个SA和一个IPSec策略联系起来。为了把一个SA联系到一个IPSec策略,使用dynamic语句:
[edit security ipsec security-association name]
dynamic ipsec-policy policy-name;

配置一个IPSec提议
一个Ipsec提议罗列了要与对端协商的协议和算法。配置一个IPSec提议,使用proposal语句:
[edit security ipsec]
proposal ike-proposal-name {
  authentication-algorithm (md5 | sha1);
  authentication-method pre-shared-keys;
  dh-group (group1 | group2);
  encryption-algorithm (3des-cbc | des-cbc);
  lifetime-seconds seconds;
}

配置IPSec认证算法,使用authentication-algorithm语句。认证算法可以为下面的任意一个:
        hmac-md5-96 对数据包采用哈希认证算法,产生128位摘要。
        hmac-sha1-96对数据包采用哈希认证算法,产生160位摘要。

配置IPSec加密算法,使用encyption-algorithm语句。加密算法可以为下面的任意一个:
        3des-cbc 块大小为24字节,密钥长度192位。
        des-cbc 块大小为8字节,密钥长度48位。

IPSec生命期选项设定了一个IPSec SA的有效期。当SA超时是,它会被一个新的SA(包括SPI)提到,或是被终止。如果你不需要配置生命期或是对端没有回送生命期,则默认为28800秒。配置IPSec生命期,使用lifetime-seconds语句。

配置IKE
要使用动态SA,必须配置IKE。定义应用到所有IKE提议的全局IKE属性,使用下面的一个或多个语句:
[edit security ike]
authentication-algorithm (md5 | sha1);
authentication-method pre-shared-keys;
dh-group (group1 | group2);
encryption-algorithm (3des-cbc | des-cbc);
lifetime-seconds seconds;

定义与各个提议自有的属性,使用下面的一个或多个语句:
[edit security ike proposal ike-proposal-name]
authentication-algorithm (md5 | sha1);
authentication-method pre-shared-keys;
dh-group (group1 | group2);
encryption-algorithm (3des-cbc | des-cbc);
lifetime-seconds seconds;

可以配置一个或多个IKE提议。每个提议包含一系列用来保护IKE主机和其对端间IKE连接的IKE属性。配置IKE提议,使用proposal语句:
[edit security ike]
proposal ike-proposal-name;

配置IKE认证算法,使用authentication-algorithm语句:
authentication-algorithm (md5 | sha1);

认证算法可以为下面的任意一个:
        md5 产生一个128位的摘要
        sha1 产生一个160位的摘要

配置IKE认证方法,使用authentication-method语句,并可指定pre-shared-keys。
Authentication-method pre-shared-keys;

Diffie-Hellman算法是一个公开密钥系统,它允许两个对端在不安全的通信通道中协商得到一个共享密钥。在IKE中其被用来建立会话密钥。配置一个IkE Diffie-Hellman组,使用 dh-group 语句。

dh-group (group1 | group2);

Diffie-Hellman组可以为下面的其中一个
        group1 执行Diffie-Hellman交换时IKE使用768位Diffie-Hellman素数模数组。
        group2执行Diffie-Hellman交换时IKE使用1024位Diffie-Hellman素数模数组。group2提供更高的安全性,但也就需要更多的处理时间。

配置IKE加密算法,使用encryption-algorithm语句:
encryption-algorithm (3des-cbc | des-cbc);

加密算法可以为下面的其中一个:
        3des-cbc 块大小为24字节,密钥长度192位。
        des-cbc 块大小为8字节,密钥长度48位。

IKE SA有一个有效期。当SA超时是,它要么被新的SA(以及SPI)替代要么被终止。配置IKE有效期,使用lifetime-seconds 语句,并在其后设定时间秒数(从180秒到4,294,967,295秒);

lifetime-seconds seconds;

一个IKE策略定义了一组IKE协商时使用的安全参数(也叫IKE提议)。它定义了对端地址、预设共享密钥、以及连接需要的其它参数。在IKE协商中,IKE会寻找在两端都相同的IKE策略。其过程是,发起协商的一端发送它所有的可用策略到对端,远端则尝试找到一个匹配。

当两端都找到了包含相同参数的提议时,匹配就完成了。如果有效期没有被设置,则两端的策略中生命期短的被使用。预设共享密钥则必须两端相同。

可以在每一端创建多个以优先级区分的提议来保证至少会有一个提议匹配对端的提议。首先,配置一个或多个IKE提议;然后把这些提议联系到一个IKE策略。也可以用policy语句从上到下以优先级顺序罗列IKE使用的提议。

配置IKE策略,使用policy语句。IKE策略中的对端地址必须是IPSec隧道的目的地址。

[edit security ike]
policy ike-peer-address [ ike-proposal ];

IKE策略有两种模式:aggressive模式和main模式。默认情况下使用main模式。main模式使用6个消息、三次交换来建立IKE SA。(这三个步骤是IKE SA协商,Diffie-Hellman交换,和对端认证)。main模式允许一个端隐藏它的标识。aggressive模式也建立起一个经过认证的IKE SA和密钥。但是,aggressive模式只是用3个消息,协商能力较弱,并且不提供身份保护。一端可以使用aggressive和main模式开始IKE协商;另一端接受这个模式。配置IKE策略模式,使用mode语句:

[edit security ike policy ike-peer-address]
mode (aggressive | main);

IKE策略的提议是一系列联系到IKE策略的一个或多个提议。配置一个IKE策略提议使用proposal语句:
[edit security ike policy ike-peer-address]
proposal [ ike-proposal-names ];

使用IKE策略预共享密钥对两端进行认证,必须手工配置一个预共享密钥,而且两端的密钥必须一致。预共享密钥可以是ASCII文本(文字或数字)密钥或16进制密钥。配置IKE策略的预共享密钥使用pre-shared-key语句:

[edit security ike policy ike-peer-address]
pre-shared-key (ascii-text key | hexadecimal key);
配置IPSec策略

IPsec策略定义了在IPsec协商中用到的一整套安全参数。这套安全参数则定义了完全前向转发安全
性(FPS)和连接时需用到的其它提议。在IPsec协商中,通信双方会协商一套相同的IPsec提议,协商发起方会发送一套策略给对端,而对端则会尝试在自己的IPsec提议族中寻找一个相匹配的提议。

当两端为所有策略都找到各自配置属性相同的提议后就完成了匹配。如果两端策略的有效时间不同,则使用较短的一个。

可以在每一端创建多个以优先级区分IPsec提议来保证至少会有一个提议可以匹配远程对端的提议。
首先要配置一个或几个IPsec提议,然后把这些提议绑定到一个IPsec策略,接下来就可以在策略描述里以优先级的顺序罗列要使用到的提议。

为了配置一个IPsec策略,要使用 policy 语句,并指定策略名称以及一个或多个绑定到这个策略的提议

[edit security ipsec]
policy ipsec-policy-name;

完全前向转发安全性(PFS)通过Diffie-Hellman共享密钥提供了额外的安全性。使用PFS,即使一个密钥泄密了,之前和其后的密钥仍旧是保密的,因为它们不能从哪个泄密的密钥推导出。为了配置PFS,要使用 perfect-forward-secrecy 语句。

[edit security ipsec]
perfect-forward-secrecy{
        keys (group1 | group2);
}

语句中的 key 可以使用下面的一个:
        group1: IKE使用768位的Diffie-Hellman素数因子组来执行Diffie-Hellman密钥交换;
        group2:IKE使用1024位的Diffie-Hellman素数因子组来执行Diffie-Hellman密钥交换,group2比group1提供了更高的安全性,但要求更多的处理时间。

posted on 2005-03-23 22:27  cunshen  阅读(1927)  评论(0)    收藏  举报