Strongswan+freeradius+daloradius+ad认证实现ikev2接入服务一

Strongswan+freeradius+daloradius+ad认证实现ikev2接入服务一


Centos7 strongswan安装配置支持 Windows7  ikev2 eap-machapv2模式、计算机证书模式


实验时间:2018年8月6日-2018年8月6日


拓扑图:


拓扑.PNG 


环境:

    防火墙1:USG2200

           

    IP地址外网:10.99.101.170    域名:strongswan.test.com

    IP地址内网:192.168.20.3

    

    防火墙2:USG2200


     IP地址外网:10.99.101.129    域名:mystrongswan.test.com

    IP地址内网:192.168.20.2

      

    服务器:Centos7

        

        IP地址192.168.20.29

        Strongswan-5.6.3


    客户端:Windows7

        

        自带客户端 epa-mschapv2模式 、 计算机证书模式

   

1、 CentOS 7 最小安装,随意,其他也可以。

 

    设置IP地址

 

    cd /etc/sysconfig/networks-scripts

 

    vi ifcfg-ens32

 

    BOOTPROTO=static

    ONBOOT=yes

    IPADDR=192.168.20.29

    NETMASK=255.255.255.0

    GATEWAY=192.168.20.2

    DNS1=192.168.20.10

 

    reboot

 

2、 安装vim,可选步骤,不安装也可以。

 

    yum install -y vim

 

3、 安装完后升级系统,可选步骤,不升级也可以。

 

    yum -y upgrade

 

    升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

 

    yum -y update

          

    升级所有包,改变软件设置和系统设置,系统版本内核都升级

4、 关闭selinux

 

    vim /etc/sysconfig/selinux

   

    SELINUX=disabled

   

        reboot

   

        sestatus

   

        SELinux status:   disabled

   

5、 安装strongswan

 

    yum -y install epel-release


    yum -y install strongswan

 

    strongswan的配置文件在/etc/strongswan/

 

    查看版本

 

       strongswan version

 

    Linux strongSwan U5.6.3/K3.10.0-862.9.1.el7.x86_64

    Institute for Internet Technologies and Applications

    University of Applied Sciences Rapperswil, Switzerland

    See 'strongswan --copyright' for copyright information.

 

6、 制作证书

 

    (1)strongswan官方对Windows 7 客户端对证书的要求的说明:

          

    链接:https://wiki.strongswan.org/projects/strongswan/wiki/Win7CertReq

          

    关于strongswan pki 的官方说明看下面的链接:

 

    https://wiki.strongswan.org/projects/strongswan/wiki/IpsecPKI

                     

    (2)建一个目录保存要生成的证书,在哪建都行:

          

    mkdir /etc/strongswan/ca

          

    cd /etc/strongswan/ca

          

    (3)生成一个私钥用作CA根证书的私钥,文件名为YIMIDECA.key.pem,文件名可以自己随便改。

          

    strongswan pki --gen -- outform pem > YIMIDECA.key.pem                     

    (4)自签名形式生成CA根证书

        strongswan pki --self --in YIMIDECA.key.pem --dn "C=CN, O=YIMIDEZUZHI, CN=YIMIDE CA" --ca --lifetime 3650 --outform pem > YIMIDECA.cert.pem

                     

    C=CN  国家代码,填CN     跟其他证书的C要一致

    O=YIMIDEZUZHI 组织代码,自己随便填的,1米的组织   跟其他证书的O要一致

    CN=YIMIDE CA 自己随便填。

                 

    (5)生成一个私钥用作strongswan服务器的私钥,文件名为YIMIDESERVER.key.pem

                 

    strongswan pki --gen -- outform pem > YIMIDESERVER.key.pem

 

    从这个私钥文件YIMIDESERVER.key.pem中提取公钥,文件名为YIMIDESERVER.pub.pem

                 

    strongswan pki --pub --in YIMIDESERVER.key.pem --outform pem > YIMIDESERVER.pub.pem

                 

    用提取的公钥文件YIMIDESERVER.pub.pem和刚才生成的CA证书YIMIDECA.cert.pem签发一个服务器证书,文件名为YIMIDESERVER.cert.pem

                 

    strongswan pki --issue --lifetime 1200 --cacert YIMIDECA.cert.pem --cakey YIMIDECA.key.pem --in YIMIDESERVER.pub.pem --dn "C=CN, O=YIMIDEZUZHI, CN= strongswan.test.com" --san "dns:192.168.20.29"  --san "dns:10.99.101.170" --san "dns:10.99.101.129" --san "strongswan.test.com" --san "mystrongswan.test.com" --flag serverAuth --flag ikeIntermediate --outform pem > YIMIDESERVER.cert.pem

 

    C=CN  国家代码,我没试乱填会怎样,老实填CN     跟其他证书的C要一致

 

    O=YIMIDEZUZHI 组织代码,自己随便填的,一米的组织   跟其他证书的O要一致

 

    CN=strongswan.test.com  这个填strongswan服务器的域名

 

    --san "dns:10.99.101.129"这个填strongswan服务器的ip地址,使用防火墙的外网ip。

                     

    --san --flag   的设置还是看这个:

                     

    strongswan官方对Windows 7 客户端对证书的要求的说明:

          

    链接:https://wiki.strongswan.org/projects/strongswan/wiki/Win7CertReq

                        

(6)生成一个私钥用作客户端的私钥,文件名为YIMIDECLIENT.key.pem

                 

    strongswan pki --gen --outform pem > YIMIDECLIENT.key.pem

                 

    从这个私钥文件YIMIDECLIENT.key.pem中提取公钥,文件名为YIMIDECLIENT.pub.pem

                        

    strongswan pki --pub --in YIMIDECLIENT.key.pem --outform pem > YIMIDECLIENT.pub.pem

                                                           

    用提取的公钥文件YIMIDECLIENT.pub.pem和刚才生成的CA证书YIMIDECA.cert.pem签发一个服务器证书,文件名为YIMIDECLIENT.cert.pem

                        

    strongswan pki --issue --lifetime 1200 --cacert YIMIDECA.cert.pem --cakey YIMIDECA.key.pem --in YIMIDECLIENT.pub.pem --dn "C=CN, O=YIMIDEZUZHI, CN=YIMIDECLIENT" --outform pem > YIMIDECLIENT.cert.pem

                        

    C=CN  国家代码,填CN     跟其他证书的C要一致

    O=YIMIDEZUZHI  组织代码,自己随便填的,一米的组织   跟其他证书的O要一致

    CN=YIMIDECLIENT 这个自己起名。

                     

    生成一个pkcs12格式的证书,把证书导入到客户端时使用。

                        

    openssl pkcs12 -export -inkey YIMIDECLIENT.key.pem -in YIMIDECLIENT.cert.pem -name "YIMIDECLIENT" -certfile YIMIDECA.cert.pem -caname "YIMIDE CA" -out YIMIDECLIENT.cert.p12

                     

    这条命令会要求输入两次证书密码,用于导入计算机时填入。

                     

    证书制作完毕!!!!!!!!!!

                     

    现在这个文件夹有9个文件:

                     

    YIMIDECA.key.pem

                     

    YIMIDECA.cert.pem

                     

    YIMIDESERVER.key.pem

                     

    YIMIDESERVER.pub.pem

                     

    YIMIDESERVER.cert.pem

                     

    YIMIDECLIENT.key.pem

                     

    YIMIDECLIENT.pub.pem

                     

    YIMIDECLIENT.cert.pem

                     

    YIMIDECLIENT.cert.p12

                     

    为strongswan服务器安装证书,就是将证书复制到规定的目录

 

    cp -r YIMIDECA.cert.pem /etc/strongswan/ipsec.d/cacerts/

    cp -r YIMIDESERVER.cert.pem /etc/strongswan/ipsec.d/certs/

    cp -r YIMIDECLIENT.cert.pem /etc/strongswan/ipsec.d/certs/

    cp -r YIMIDECA.key.pem /etc/strongswan/ipsec.d/private/

    cp -r YIMIDESERVER.key.pem /etc/strongswan/ipsec.d/private/

    cp -r YIMIDECLIENT.key.pem /etc/strongswan/ipsec.d/private/


7、 编辑strongswan配置文件,共三个/etc/strongswan/ipsec.conf、/etc/strongswan/strongswan.conf、/etc/strongswan/ipsec.secrets

 

    vim /etc/strongswan/ipsec.conf

 

config setup

uniqueids=never           #关闭ID唯一性,即允许多个客户端使用同一个证书,多设备同时在线

 

conn %default                #默认配置项,其他conn配置项都会调用此默认项

left=%any                #left表示local,即本地端(服务器端)IP地址;%any是魔数字,表示任意地址

leftsubnet=0.0.0.0/0          #本地端网络,0.0.0.0/0为通配,表示所有IP网段

right=%any               #right表示remote,即远程端(客户端)IP地址可为任意地址

rightsourceip=192.168.20.0/24      #分配给远程端的虚拟IP地址段,尽量避免使用常用私网地址段以免冲突

dpdaction=clear           #dpd表示Dead Peer Detection,对端失效检测,clear表示对端失效时关闭连接

 

ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!

    esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1!

 

conn IKEv1-CERT-XAUTH             #供老版本IOS使用。IKEv1,使用证书和XAUTH验证

keyexchange=ikev1         #密钥交换使用IKEv1

fragmentation=yes             #允许分片

leftauth=pubkey           #本地端使用公钥验证

leftcert= YIMIDESERVER.cert.pem #指定本地端证书

rightauth=pubkey              #远程端使用公钥验证

rightauth2=xauth              #远程端使用用户账号验证

rightcert=YIMIDECLIENT.cert.pem #指定远程端证书

auto=add                 #auto定义strongSwan服务启动时该连接的行为,add是添加连接类型但不启动

 

conn IKEv1-PSK-XAUTH              #供IOS, Android使用。IKEv1,使用预共享密钥和XAUTH验证

keyexchange=ikev1         #密钥交换使用IKEv1

leftauth=psk                 #本地端使用预共享密钥验证

rightauth=psk             #远程端使用预共享密钥验证

rightauth2=xauth              #远程端使用用户账号验证

auto=add                 #strongSwan启动时添加连接类型但不启动

 

conn IKEv2-CERT              #供Windows 7+, Linux使用。IKEv2,使用证书验证

keyexchange=ikev2         #密钥交换使用IKEv2

leftauth=pubkey           #本地端使用公钥验证

leftcert= YIMIDESERVER.cert.pem #指定本地端证书

rightauth=pubkey              #远程端使用公钥验证

rightcert= YIMIDECLIENT.cert.pem   #指定远程端证书

auto=add                 #strongSwan启动时添加连接类型但不启动

 

conn IKEv2-EAP               #供Windows 7+, IOS9+使用。IKEv2,EAP验证

keyexchange=ikev2         #密钥交换使用IKEv2

ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024! #第一阶段加密方式

esp=aes256-sha256,3des-sha1,aes256-sha1!                        #ESP的顺序与IKE一致

rekey=no                 #本地端对Windows远程端发出rekey请求会断开连接,所以需配置为no

leftfirewall=yes          #添加防火墙规则

leftauth=pubkey           #本地端使用公钥验证

leftcert=YIMIDESERVER.cert.pem #指定本地端证书

leftsendcert=always       #本地端总是发送证书

[email protected]    #本地端标识,使用本地端公网IP地址作为标识,和生成服务器证书时的--san参数对应

rightauth=eap-mschapv2        #远程端使用eap-mschapv2验证

rightsendcert=never       #不要求远程端发送证书

rightsourceip=%dhcp        #使用dhcp获取ip

eap_identity=%any             #指定EAP验证身份,任意账户

fragmentation=yes             #允许分片

auto=add                 #strongSwan启动时添加连接类型但不启动

                                                                                

        vim /etc/strongswan/strongswan.conf

 

charon{

filelog {

/var/log/strongswan.charon.log {

time_format = %b %e %T

default = 2

append = no

flush_line = yes

}

}

 

load_modular = yes

 

duplicheck.enble = no

 

compress = yes

 

plugins {

include strongswan.d/charon/*.conf

}

 

dns1 = 192.168.20.10

 

nbns1 = 192.168.20.10

 

nbns2 = 192.168.20.100

 

}

 

include strongswan.d/.conf


        vim /etc/strongswan/ipsec.secrets

 

: RSA YIMIDESERVER.key.pem

: PSK "psk123456"

: XAUTH "xauth123456"

eapuser : EAP "eap123456"

 

8、 firewalld防火墙配置

 

    打开防火墙端口

 

    firewall-cmd --permanent --add-port=500/udp

    firewall-cmd --permanent --add-port=4500/udp

    firewall-cmd --reload

 

    允许esp ah 协议

 

    firewall-cmd --permanent --add-rich-rule='rule protocol value="esp" accept'

    firewall-cmd --permanent --add-rich-rule='rule protocol value="ah" accept'

    firewall-cmd --reload

 

    开启内核转发

 

    编辑 /etc/systcl.conf


    vim /etc/sysctl.conf

    net.ipv4.ip_forward=1

    net.ipv6.conf.all.forwarding=1

    net.ipv4.conf.all.accept_redirects = 0

    net.ipv4.conf.all.send_redirects = 0

 

9、 启动服务

 

    systemctl enable strongswan

    systemctl start strongswan

    systemctl status strongswan

 

    查看加载的CA证书

    strongswan listcacerts

       显示:

 

    List of X.509 CA Certificates

    subject:  "C=CN, O=YIMIDEZUZHI, CN=YIMIDE CA"

    issuer:   "C=CN, O=YIMIDEZUZHI, CN=YIMIDE CA"

    validity:  not before Jul 24 16:05:12 2018, ok

    not after  Jul 21 16:05:12 2028, ok (expires in 3649 days)

    serial:    07:f8:c4:ad:18:64:7d:4c

    flags:     CA CRLSign self-signed

    subjkeyId: ff:e1:cb:fc:c0:91:37:c7:cd:6e:66:f6:40:f0:77:a1:5d:d2:fa:a4

    pubkey:    RSA 2048 bits

    keyid:     78:93:01:ae:43:76:f1:b3:ed:6a:58:1e:73:23:ae:b1:09:ce:52:b5

    subjkey:   ff:e1:cb:fc:c0:91:37:c7:cd:6e:66:f6:40:f0:77:a1:5d:d2:fa:a4

 

10、 设置USG2200端口映射

        添加转发策略:

        untrust  >   truse   any    192.168.20.29/32     udp   permit

        blob.png


        添加目的NAT

        udp   500   4500   

        blob.png


        添加源NAT untrust >  trust    any    192.168.20.29/32    NAT转换    内网接口地址

        blob.png

        

     

11、为Windows 7安装客户端证书

 

    想办法把客户端证书文件YIMIDECLIENT.cert.p12复制到Windows 7 客户端计算机


    运行mmc    文件-->添加/删除管理单元-->证书-->计算机账户

    

    blob.png

    

    blob.png

    

    blob.png

    

    blob.png


    blob.png

    

   证书安装完毕!!!!!!!!!!!!!!!!!!!

 

11、 第一种链接--建立使用证书验证的连接:

    目的地址使用建立YIMIDESERVER.cert.pem 时使用的 --san 参数    strongswan.test.com mystrongswan.test.com  10.99.101.129  10.99.101.170 各建立一个,进行测试

    

    blob.png





    blob.png


    blob.png

 

12、 第二种链接--建立使用证书+密码验证的连接:


    blob.png


    用户密码使用ipsec.secret 中的 eapuser  密码  eap123456



    blob.png






 

猜你喜欢

转载自blog.51cto.com/yimiyinei/2155652