利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(下篇)

续篇——

 利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(上篇)

 上篇文章写了如何构建一个支持IKEv2的VPN,本篇记录的是如何利用freeradius,以及结合Daloradius进行VPN的 Web 管理。先让freeradius做个自述吧。

一、Radius 介绍

 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authentication)、授权(authorization)及计费(accounting)三种服务的一种网络传输协议(protocol),通常用于网络存取、或流动IP服务,适用于局域网及漫游服务。

 架构:client/server模式。Radius 是个服务端。NAS相对于Radius 是客户端,但相对于用户来说是个网络访问服务器。

 共享密钥:radius服务端与客户端使用共享key 来进行通信,该key不在互联网上流通。(但没有绝对的安全,该密码要设置成强复杂度,防止被坏人给暴力破解)

 代理:radius 还有代理,可以处理请求转发到其它的radius服务器上。

 具体介绍可参考RFC 2865 RADIUS验证协议、RFC2866计费协议文档,强烈建议大家读下这俩RFC。苦于英文太多。还好找到两篇CSDN大牛的翻译文章,大家可以进去看下。

二、FreeRADIUS 的介绍安装配置

 号称世界上最流行的radius服务器。FreeRADIUS包括一个RADIUS服务器,一个BSD许可证的客户端库,一个PAM库,一个Apache模块。还有一个好处就是用基于FreeRADIUS的 daloradius web界面管理‘vpn’。(可以实现动态添加’vpn‘账号,无需重启ipsec。)

1.环境介绍

 基础环境参考上篇文章,本篇环境需Mysql、php、apache环境。

 mysql:用于daloradius wen界面管理,用来存储freeradius服务器的相关认证信息。

 apache:网站支持

 php:daloradius 程序需要。web界面管理

2.安装freedadius 以及dolaradius所需要的php、mysql、apache环境

yum groupinstall "Development tools“ -y
yum install wget telnet net-tools httpd mariadb-server php php-mysql php-gd php-ldap php-odbc php-pear php-pear-DB php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel -y

安装freeradius程序以及数据库库文件

yum install freeradius freeradius-mysql freeradius-utils -y

3.启动apache 和mysql,并设置开机启动

systemctl start mariadb
systemctl enable mariadb

systemctl start httpd
systemctl enable httpd

4.创建radius数据库,添加并授权radius用户,然后导入数据库文件

mysql -uroot -p
create database radius;
grant all privileges on radius.* to [email protected] identified by ‘iloveworld‘;

use radius;
source /etc/raddb/mods-config/sql/main/mysql/schema.sql
exit

5.创建软连接(将radius有效的的sql模块放到启用列表里),启用sql模块

ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

修改sql 模块连接数据库信息,文件路径/etc/raddb/mods-available/sql,按照如下修改

31行    driver = "rlm_sql_mysql"

73-83行:
dialect = "mysql"

server = "localhost"
port = 3306
login = "radius"
password = " iloveworld "
radius_db = "radius"

211行    去掉注释read_clients = yes

6.检查模块目录启用,修改文件/etc/raddb/radiusd.conf

确保以下内容没有被注释:

$INCLUDE mods-enabled/
$INCLUDE sites-enabled/

开启认证的日志记录,记录log日志文件(321行左右)

auth = yes
auth_badpass = yes
auth_goodpass = yes

7.开启sql 模块的支持,修改文件/etc/raddb/sites-available/default

去掉以下行的sql注释,这里注释是 ‘-’,前面是行号,找到后去掉 ‘-’ 即可

372 sql
602 sql
650 sql
676 sql
779 sql

8.启动radiusd 服务,检查配置

这里以测试方式启动,出现以下即为正常:

结束测试启动,将radiusd加入开机启动,并启动服务

systemctl enabled radiusd
systemctl start radiusd

三、Daloradius Web界面的安装配置

1.下载daloradius 最新软件0.9.9

wget -O daloradius-0.9-9.tar.gz  https://sourceforge.net/projects/daloradius/files/latest/download

2.解压软件,然后将程序放到web网站目录下

tar -xf daloradius-0.9-9.tar.gz
mv daloradius-0.9-9 /var/www/html/daloradius

导入daloradius 的表文件导到radius数据库中

mysql -u radius -p radius < /var/www/html/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

3.修改daloradius 连接数据库的php文件,文件 /var/www/html/daloradius/library/daloradius.conf.php

大概是27行到33行内容,就不备注解释了

$configValues[‘FREERADIUS_VERSION‘] = ‘3‘;
$configValues[‘CONFIG_DB_ENGINE‘] = ‘mysql‘;
$configValues[‘CONFIG_DB_HOST‘] = ‘localhost‘;
$configValues[‘CONFIG_DB_PORT‘] = ‘3306‘;
$configValues[‘CONFIG_DB_USER‘] = ‘radius‘;
$configValues[‘CONFIG_DB_PASS‘] = ‘iloveworld‘;
$configValues[‘CONFIG_DB_NAME‘] = ‘radius‘;

4.访问web页面,地址http://192.168.30.57/daloradius

查看服务器信息

注:本文属于飞走不可原创,如有转载,请务必在文首注明出处。飞走不可 ^_^ http://www.cnblogs.com/hanyifeng/p/6147783.html

 

添加一个NAS,之后添加帐户,如下图:

添加一个用户

点击应用。之后检查用户列表

5.测试radius服务

使用刚新建的用户,对radius服务运行是否正常进行检测,命令如下:

radtest yifeng passwd-user 127.0.0.1 1812 testing123

备注: radtest 是freeradius 测试的命令

    1812 是默认端口号

    testing123  默认的共享密钥 (建议修改为强复杂度的密码)

出现Access-Accept表示运行正常。表明Web界面新建的radius用户(相当于NAS)可以访问Radius 服务器。

下面是进行freeradius 与 VPN 的结合。实现通过radius 认证来连接访问VPN

四、FreeRADIUS 与 IPsec VPN 服务连接

首先,先修改strongSwan ,之后修改freeradius服务

1.修改ipsec.conf,文件完整内容如下:(注:leftid 填写自己的公网IP)

config setup
    uniqueids=never  

conn %default
     ikelifetime=60m
     keylife=20m
     rekeymargin=3m
     rekey=no
     keyingtries=1
     keyexchange=ike
     leftsubnet=0.0.0.0/0
     right=%any
     rightsourceip=10.31.2.0/24
     dpdaction=clear
     dpddelay=300s
     dpdtimeout=1h

conn Windows7-os+
     keyexchange=ikev2
     auto=add
     leftauth=pubkey
     #leftcert=serverCert.pem
     leftcert=server.cert.pem
     rightauth=eap-radius
     rightsendcert=never
     eap_identity=%identity
     compress=yes

conn IOS_Mac_IKEv2
    keyexchange=ikev2
    ike=aes256-sha256-modp2048,3des-sha1-modp2048!
    esp=aes256-sha256,3des-sha1!
    rekey=no
    left=%defaultroute
    leftid=192.168.30.57
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=eap-radius
    rightsourceip=10.31.2.0/24
    rightsendcert=never
    eap_identity=%any
    dpdaction=clear
    fragmentation=yes
    auto=add

conn Android_xauth_psk
    keyexchange=ikev1
    left=%defaultroute
    leftauth=psk
    leftsubnet=0.0.0.0/0
    right=%any
    rightauth=psk
    rightauth2=xauth
    auto=add

conn CiscoIPSec
    keyexchange=ikev1
    auto=add
    aggressive=yes
    compress=yes
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    dpdaction=clear
    leftid=blackberry
    type=tunnel
    xauth=server
    leftauth=psk
    rightauth=psk
    rightauth2=xauth-eap
    leftfirewall=yes

2. 修改strong.conf 文件,完整内容如下:

cat /usr/local/etc/strongswan.conf
charon {
        i_dont_care_about_security_and_use_aggressive_mode_psk = yes
        load_modular = yes
        duplicheck.enable = no
        threads = 16
        compress = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
        dns1 = 114.114.114.114
        dns2 = 8.8.8.8
        nbns1 = 8.8.8.8
        nbns2 = 8.8.4.4
}
include strongswan.d/*.conf

备注:threads=16        程序开启线程数

    i_dont_care_about_security_and_use_aggressive_mode_psk   只对5.0以后的版本有效,使系统在使用IKE模式时,支持aggrisive模式

3. 修改strongSwan的eap-radius插件,文件/usr/local/etc/strongswan.d/charon/eap-radius

修改 accounting = yes

备注:所有插件路径在:/usr/local/etc/strongswan.d/charon/

添加一个server

servers {
    primary {
             secret = testing123
             address = 127.0.0.1
    }

}

备注:这里可以设置多个servers,pritmary这里的共享密钥我们使用默认的testing123,也可以更改为其它的,推荐更改为强密码,以防止被穷举。也可以更改端口号:在server里添加 auth_port = ‘’,acct_port =’’ . 另外address 是radius 服务器的ip,如果两个服务在一台主机,写localhost 也是可以得。

4. 配置IPsec插件 xauth-eap,支持IKEv1. 即思科的IPSec模式

文件路径:/usr/local/etc/strongswan.d/charon/xauth-eap.conf

去掉注释
backend = radius

5. 配置Freeradius

修改eap文件,默认路径:/etc/raddb/mods-enabled/eap

default_eap_type = mschapv2

五、调试进行验证

调试验证Freeradius 和strongSwan 是否正常工作。在这里,用之前在Daloradius web界面上创建的yifeng用户进行测试(注:web界面添加的NAS可暂时不用)。

调试之前停止strongSwan 和radius 的daemon 运行模式,调试模式运行,如下:

?    调试启动strongswan
ipsec start –nofork

?    新开一个终端,启动radius
Radius -Xx

1.Windows 用户测试

查看链接状态

检查服务器的ipsec 状态

ok,mac和iOS用户的话,上面的ipsec.conf 文件已经修改配置好。可以正常连,如果连接vpn时出现错误,可检查服务器配置以及运行日志。附上一张vpn用户登录的统计记录信息

六、关于Cenots7上运行Daloradius兼容性错误修复记录

问题1:Accounting 页面查看不了在线用户,以及历史登陆统计。

在登陆时,调试模式下看到了sql 的错误,找不到表字段。gg后也搜索到相关插入语句

解决:登陆数据库,插入内容如下:

alter table radacct add acctupdatetime datetime NULL default NULL after acctstarttime, add acctinterval int(12) default NULL after acctstoptime, add KEY acctinterval (acctinterval),drop KEY acctuniqueid, add UNIQUE KEY acctuniqueid (acctuniqueid);

问题2:在主页面,Server status 的状态显示不正确。

后查找web获取本机的server信息时的php页面,发现php文件定义的是ethxxx(当然如果你的centos7中网卡是ethxx,可以忽略下面网卡获取的修改),且mask 和mac 的显示,在该文件的定义中re模块也是centos6.X之前能用的,centos7之后就不能用了。错误显示图如下:

解决:修改监控状态页面的php文件,默认相对(网站)路径:daloradius/library/exten-server_info.php 。修改如下:
注:本文属于飞走不可原创,如有转载,请务必在文首注明出处。飞走不可 ^_^ http://www.cnblogs.com/hanyifeng/p/6147783.html

网卡设备名:(注:7默认安装完是enoxxxxxxxx,如果你的设备是显示eth0,可不修改此条),180 行:

将/eth[0-9][0-9]*
修改成    /eno[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]*

Ip 地址:203 行、204行

将    /inet addr:[0-9\.]*
修改成    /inet [0-9\.]*

然后将split(":", $match[0])
修改成    split(" ", $match[0])

Mask 地址: 240 行、241行

将    /mask:[0-9\.]*
修改成    /netmask [0-9\.]*

然后将split(":", $match[0])
修改成    split(" ", $match[0])

MAC 地址:221 行

将    hwaddr
修改成    ether

修改完成后,显示正常,如下图:

问题3:在Report 页面,无法正常显示相关日志

如下图:

解决:主要是权限,或者没有开启功能的原因。

daloRADIUS Log,修改daloradius/library/daloradius.conf.php 文件

$configValues[‘CONFIG_LOG_PAGES‘] = ‘yes‘;
$configValues[‘CONFIG_LOG_ACTIONS‘] = ‘yes‘;
$configValues[‘CONFIG_LOG_QUERIES‘] = ‘yes‘;
注: 顺手打开下面这行内容,隐藏web界面 user 列表的明文密码
$configValues[‘CONFIG_IFACE_PASSWORD_HIDDEN‘] = ‘yes‘;

System Log,权限问题(不设置也可以,如果不看messages的话),设置其它用户可读即可

chmod o+r /var/log/messages

Radius Log 权限问题

chmod o+x /var/log/radius/
chmod o+r /var/log/radius/radius.log

注:由于目录需要有执行权限,其它用户才可以进入查看,所以赋予radius 目录 执行权限

七、思考总结

  英文不好,很蹩脚啊。参考的相关资料文章链接都在上篇中,针对那些lt2p不能使用的企业来说,IKEv2是个不错的选择,我觉得最好的地方就是所有用户客户端不需要单独安装特殊软件来进行拨号认证。后期mysql数据库建议考虑主从,及时备份,因为所有认证用户信息都存储在库中!!后面如果大家有什么疑问也可以留言交流哈,文中如果有错误,一定要及时帮我指出来哟,我会及时的修正。哈哈,多谢。

注:本文属于飞走不可原创,如有转载,请务必在文首注明出处。飞走不可 ^_^ http://www.cnblogs.com/hanyifeng/p/6147783.html

时间: 2024-08-15 11:57:26

利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(下篇)的相关文章

利用开源软件搭建JAVA工程CI&CD自动化工具链

JAVA传统项目交付流程的问题 开发和运维间环境有明显差异 代码缺乏统一质量度量 客户要求上线时间紧,人工测试慢,导致测试不充分,时常做线上BUG修复 打造工具链 ● 源码管理Gitlab● 持续集成Jenkins● 代码扫描SonarQube● 接口测试PostMan+NewMan● 制品管理ArtifactoryOSS版本(仅支持Maven)● 自动部署Ansible GitLab安装 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=

利用开源软件 Hugin 实现照片的景深合成

利用开源软件 Hugin 实现照片的景深合成 本文主要参考了下面的文章:http://macrocam.blogspot.jp/2013/09/using-hugin-for-focus-stacking.html 根据我自己的理解做了少量的增删.首先感谢原作者. Hugin 是一个很出名的全景照片拼接软件.但其实除了全景拼接功能外, hugin 还提供了一系列的命令行工具,可以用来操纵和融合多张图像,实现高动态图像(HDR).景深合成(Focus Stacking)等各种高级功能.本文就来介绍

利用开源软件自建WAF系统--OpenResty+unixhot

目录 介绍 安装Openresty 修改nginx.conf 部署WAF 测试WAF 简介:利用OpenResty+unixhot自建WAF系统 介绍 ??OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 Web 应用.Web 服务和动态网关. ??OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从

利用开源软件打造自己的全功能远程工具

我们在开始之前,需要准备3个开源软件工具: Xming      开源的X服务器 winscp    开源的sftp/scp工具 mRemoteNG   开源的多协议远程连接工具 这3个工具组合,可以实现几乎一切远程连接和文件传输的需求. 这里主要介绍2个常用功能的配置: 1,启用图型界面转发 在mRemote的putty配置中打开X11的转发即可,启动Xming后,在终端有关X的窗口会自动转发到windows桌面上. 2,集成winscp实现远程与本地的文件互相传输. winscp并未直接在m

开源软件与知识产权

目录 1.      软件与知识产权... 2 1.1.      引言... 2 1.2.      著作权法与软件... 3 2.      开源软件概述... 3 2.1.      自由软件运动... 3 2.2.      开源软件的发展... 4 2.3.      开源软件涉及的主要权益... 4 2.3.1.       著作权... 4 2.3.2.       专利权... 4 2.3.3.       商标权... 5 2.4.      开源软件的优势与劣势... 5 3

开源软件之七宗罪以及背后的阴谋

开源软件之七宗罪以及背后的阴谋 jopen 2012-10-29 11:31:22 ? 发布 摘要:我们每天使用着大量的开源软件,我们歌颂她赞美她.当有人站出来说一句开源不好 肯定会激起N多人站出来批评.然后给你列举出N多开源的好处和闭源的坏处. 我们每天使用着大量的开源软件,我们歌颂她赞美她.当有人站出来说一句开源不好 肯定会激起N多人站出来批评.然后给你列举出N多开源的好处和闭源的坏处. 首先我不反对开源,本文只是无聊时候的自己一点思考.想喷的各位请看完再喷.谢谢 自从开源运动发起以后.各种

(转)10款微信公众平台相关的开源软件

1.微信公共帐号机器人 WeBot WeBot ( Weixin Robot) 的设计目标就是让你傻瓜化的接入微信公众平台.是 微信公众平台提供的开放信息接口的自动回复系统,基于node.js 实现. 功能: 清晰独立的 router ,轻松实现文本匹配流程控制 基于正则表达式的对话设定,配置简单,可以给一句话随机回复不同内容 支持等待后续操作模式,如可以提示用户"需要我执行xxx操作吗?" 授权协议: 未知开发语言: JavaScript 源码地址:https://github.co

100款开源软件

不知道这些你就OUT了!100款开源软件 好的软件可以极大提高工作效率,完成一些不可能完成工作.然而我们也常常为选择哪款软件而头疼,本次为大家推出的100款软件都是经过整理分类的,而且最重要的是100款软件都是开源免费且使用于Linux环境下,大部分都可以直接从官网上下载使用.如果你完全没有接触过以下我介绍的这100款软件,我只能说一句你OUT了! 图:100款软件分类图 接下来将要介绍的100款开源应用程序,是我花了很多时间为大家整理的,这些软件对大家来说是很有用的.我希望通过这100款软件告

2015 年度新增开源软件排名TOP100

本榜单包含 2015 年开源中国新收录的 5977 款开源软件中,根据软件本身的关注度.活跃程度进行排名前 100 名的软件.从这份榜单中或许可以了解到最新业界的趋势. 1.SwitchyOmega 项目简介:SwitchyOmega 是 SwitchySharp 的新版本.这是一个 Chrome 浏览器用来切换不同代理的插件.SwitchyOmega 初次安装时会检查是否存在 SwitchySharp ,如果有的话则会自动升级设置,无须手动配置.如果您使用的是非谷歌应用商店版,或者无法自动升级