CentOS6.2搭建使用Radius认证的OpenVPN

来源:互联网 发布:极光推送 php接口实例 编辑:程序博客网 时间:2024/06/04 22:28

第一阶段:

安装OpenVPN

(1)安装所需依赖包。

sudo yum -y install gcc gcc-c++sudo yum -y install openssl openssl-develsudo yum -y install lzo lzo-devel
(2)安装OpenVPN2.2.2

wget http://swupdate.openvpn.org/community/releases/openvpn-2.2.2.tar.gztar -zxvf openvpn-2.2.2.tar.gzcd openvpn-2.2.2./configure   makemake install

(3)生成keys

mkdir /etc/openvpncp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/cd /etc/openvpn/easy-rsa/2.0/ 改变所有文件可执行状态 chmod +rwx *source vars./clean-all./build-ca./build-dh./build-key-server server./build-key client1./build-key client2./build-key client3                       //创建3个key供3个用户上网./openvpn --genkey --secret ta.key        //生成ta.key防止遭到DDoS攻击

(4)创建openvpn启动快捷键

下载地址:http://download.csdn.net/detail/xiaoxinghehe/4842515

这两个文件我是从ubuntu里面的openvpn提取的

添加init-functions到库文件

/lib/openvpn/init-functions
创建快捷方式(直接拷贝openvpn过去)
/etc/rc.d/init.d/openvpn
注意加上执行权限,否则会permission deny


(5)开启NAT

sudo sysctl -w net.ipv4.ip_forward=1sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT \--to-source 11.22.33.44


第二阶段:

安装raidus,并配置mysql验证

(1)安装radius

yum install -y freeradius freeradius-mysql freeradius-utils

配置本地用户测试radius
vim /etc/raddb/users

在文件最后一行把前面的注释去掉
testuser Cleartext-Password := "testpassword"

然后执行

chkconfig radiusd onservice radiusd restart

radtest testuser testpassword localhost 1812 testing123
如果看到
Sending Access-Request of id 86 to 127.0.0.1 port 1812User-Name = "testuser"User-Password = "testpassword"NAS-IP-Address = 127.0.0.1NAS-Port = 1812rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=86, length=20

则表示radius服务器配置成功。


(2)为radius配置mysql验证

如果没有安装mysql,先安装之

sudo yum install mysql mysql-server

cp /etc/raddb/clients.conf /etc/raddb/clients.conf.bak

修改mysql密码,初始密码为空

格式:mysqladmin -u用户名 -p旧密码 password 新密码

1、例1:给root加个密码123。首先在DOS下进入目录C:/mysql/bin,然后键入以下命令:

    mysqladmin -uroot -password 123

    注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、例2:再将root的密码改为456

    mysqladmin -uroot -pab12 password 456


编辑client文件
vim /etc/raddb/clients.confclient  0.0.0.0 {    ipaddr=127.0.0.1    secret = testing123    shortname = localhost}

编辑用户文件,注释掉测试用户
vim /etc/raddb/users#testuser Cleartext-Password := "testpassword"

备份并导入数据库
cp /etc/raddb/sql/mysql/admin.sql /etc/raddb/sql/mysql/admin.sql.bak

vim /etc/raddb/sql/mysql/admin.sqlCREATE USER 'radius'@'localhost';SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('hehe123');GRANT All ON radius.* TO 'radius'@'localhost';

数据库为radius,密码为hehe123,默认密码原来是radpass我这里改为自己设置的hehe123,所以设置完成后还要修改sql.conf

vim /etc/raddb/sql.confchange the password 'radpass' to 'hehe123'


导入radius数据库
mysql -u root -pcreate database radius;exitmysql -u root -p radius < /etc/raddb/sql/mysql/admin.sqlmysql -u root -p radius < /etc/raddb/sql/mysql/schema.sqlmysql -u root -p radius  < /etc/raddb/sql/mysql/nas.sqlmysql -u root -p radius  < /etc/raddb/sql/mysql/ippool.sql

注意:后三个导入时可能会出错,在sql前面加上use radius;就好了。


编辑radius配置文件,使其使用sql认证,去掉INCLUDE sql.conf 前面的#号
vim /etc/raddb/radiusd.conf$INCLUDE sql.conf

修改sql.conf
vim /etc/raddb/sql.confserver = "localhost"port = 3306login = "radius"password = "hehe123"radius_db = "radius"readclients = yes

修改认证的方式
vim /etc/raddb/sites-enabled/default
authorize {    preprocess    chap    mschap    suffix    eap    pap       sql}accounting {    detail    sql} session {    radutmp    sql}

插入测试数据
mysql -u root -puse radius;INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('angel', 'Password','123456');exit
重启radius服务器
service radiusd restart
测试radius服务器执行
radtest angel 123456 localhost 1812 testing123
如果看到如下信息,表示radius服务器工作正常
Sending Access-Request of id 129 to 127.0.0.1 port 1812User-Name = "angel"User-Password = "hehe123"NAS-IP-Address = 127.0.0.1NAS-Port = 1812rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=129, length=20

如果看到以上信息,表示radius服务器可以用mysql验证了。


(3)安装radiusplugin


radiusplugin是radius的一个插件,可以让openvpn使用radius服务器来验证

yum install -y libgcrypt libgpg-error libgcrypt-develwget http://www.nongnu.org/radiusplugin/radiusplugin_v2.1.tar.gztar -zxvf radiusplugin_v2.1.tar.gzcd radiuspluginmakecp radiusplugin.so /etc/openvpncp radiusplugin.cnf /etc/openvpn

编辑radiusplugin.cnf
vim /etc/openvpn/radiusplugin.cnf
server{# The UDP port for radius accounting.acctport=1813# The UDP port for radius authentication.authport=1812# The name or ip address of the radius server.name=127.0.0.1# How many times should the plugin send the if there is no response?retry=1# How long should the plugin wait for a response?wait=1# The shared secret.sharedsecret=testing123

第三阶段:

编写openvpn服务端配置文件

port 53     #连接端口proto udp   #连接方式dev tunca /etc/openvpn/keys/ca.crtcert /etc/openvpn/keys/server.crtkey /etc/openvpn/keys/server.key    #This file should be kept secretdh /etc/openvpn/keys/dh1024.pemtls-auth ta.key 0server 10.8.0.0 255.255.255.0     #ip分配,不能跟本地冲突ifconfig-pool-persist ipp.txtpush "redirect-gateway"push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"duplicate-cn         #如果你要多人共用一个证书的话,请开启本项。keepalive 10 120     #连接测试,意思是10秒ping一次,120秒没有返回就断开重连comp-lzo             #开启压缩传输persist-keypersist-tun#这里是指定radiusplugin.so这个插件plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnfclient-cert-not-requiredusername-as-common-name#log日志存放目录log /var/log/openvpn.logstatus /var/log/openvpn-status.logverb 3


之后重启OpenVPN服务端

service openvpn restart

将OpenVPN服务加到开机启动

vim /etc/rc.d/rc.local末尾添加一句sudo service openvpn start

附:客户端配置文件
clientdev tunproto udpremote www.yourserver.com 53resolv-retry infinitenobindpersist-keypersist-tunca ca.crt;cert client.crt;key client.keytls-auth ta.key 1auth-user-passns-cert-type servercomp-lzoverb 3



查看占用端口

##根据端口查看进程信息 
lsof -i:53

kill 进程号


原创粉丝点击