CentOS6 ocserv-radius
本文最后更新于 2344 天前,其中的信息可能已经有所发展或是发生改变。

安装环境:CentOS6 32bit

一、安装依赖

yum install -y pam-devel readline-devel http-parser-devel unbound gmp-devel tar gzip xz wget gcc make autoconf texinfo

以下所有 lib64 因为是64位系统,32系统是lib

二、安装nettle

wget ftp://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
tar zxvf nettle-2.7.1.tar.gz
cd nettle-2.7.1/
./configure --prefix=/usr/local/nettle
make && make install
echo '/usr/local/nettle/lib64/' > /etc/ld.so.conf.d/nettle.conf
ldconfig

三、安装gnutls

export NETTLE_CFLAGS="-I/usr/local/nettle/include/"
export NETTLE_LIBS="-L/usr/local/nettle/lib64/ -lnettle"
export HOGWEED_LIBS="-L/usr/local/nettle/lib64/ -lhogweed"
export HOGWEED_CFLAGS="-I/usr/local/nettle/include"
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.9.tar.xz
tar xvf gnutls-3.3.9.tar.xz
cd gnutls-3.3.9/
./configure --prefix=/usr/local/gnutls
make && make install
ln -sf /usr/local/gnutls/bin/certtool /usr/bin/certtool
echo '/usr/local/gnutls/lib/' > /etc/ld.so.conf.d/gnutls.conf
ldconfig

四、安装libnl

yum install -y bison flex
wget http://www.carisma.slowglass.com/~tgr/libnl/files/libnl-3.2.24.tar.gz
tar xvf libnl-3.2.24.tar.gz
cd libnl-3.2.24
./configure --prefix=/usr/local/libnl
make && make install
echo '/usr/local/libnl/lib/' > /etc/ld.so.conf.d/libnl.conf
ldconfig

五、安装radclifreeradius-client (可选项,仅需要用radius服务器验证的时候才用得上)

yum install freeradius-client -y
export LIBNL3_CFLAGS="-I/usr/local/libnl/include/libnl3"
export LIBNL3_LIBS="-L//usr/local/libnl/lib/ -lnl-3 -lnl-route-3"
export LIBGNUTLS_LIBS="-L/usr/local/gnutls/lib/ -lgnutls"
export LIBGNUTLS_CFLAGS="-I/usr/local/gnutls/include/"
wget https://github.com/radcli/radcli/releases/download/1.2.5/radcli-1.2.5.tar.gz
tar xvzf radcli-1.2.5.tar.gz
cd radcli-1.2.5
./configure --prefix=/usr/local/radcli
echo '/usr/local/radcli/lib/' > /etc/ld.so.conf.d/radcli.conf
make && make install
ldconfig

六、安装ocserv

export LIBNL3_CFLAGS="-I/usr/local/libnl/include/libnl3"
export LIBNL3_LIBS="-L//usr/local/libnl/lib/ -lnl-3 -lnl-route-3"
export LIBGNUTLS_LIBS="-L/usr/local/gnutls/lib/ -lgnutls"
export LIBGNUTLS_CFLAGS="-I/usr/local/gnutls/include/"
wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.10.10.tar.xz
tar xvf ocserv-0.10.10.tar.xz
cd ocserv-0.10.10

编辑 src/vpn.h

vim src/vpn.h

找到

#define DEFAULT_CONFIG_ENTRIES 96

改为

#define DEFAULT_CONFIG_ENTRIES 200

因为默认只能下发96条路由表,需要改成200,再改大也不生效。

./configure --prefix=/usr/local/ocserv
make && make install
echo 'export PATH=$PATH://usr/local/ocserv/sbin:/usr/local/ocserv/bin' >>/etc/profile
source /etc/profile

七、制作证书

编辑 ca.tmpl

vim ca.tmpl

添加以下内容:

cn = "Anyconnect VPN"
organization = "www.sproxy.info"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key

生成ca-key密匙

certtool --generate-privkey --outfile ca-key.pem

生成ca-cert证书

certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem

编辑 server.tmpl

vim server.tmpl

添加以下内容:

cn = "Your hostname or IP"
organization = "www.sproxy.info"
expiration_days = 3650
signing_key
encryption_key
tls_www_server

生成server-key.pem密匙

certtool --generate-privkey --outfile server-key.pem

生成server-cert.pem证书

certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem

编辑 user.tmpl

vim user.tmpl

添加以下内容:

cn = "Anyconnect VPN"
unit = "www.sproxy.info"
uid = "1024"
expiration_days = 3650
signing_key
tls_www_client

生成user-key密匙

certtool --generate-privkey --outfile user-key.pem

生成user-cert.pem证书

certtool --generate-certificate --load-privkey user-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template user.tmpl --outfile user-cert.pem

转化为user.p12证书

openssl pkcs12 -export -inkey user-key.pem -in user-cert.pem -certfile ca-cert.pem -out user.p12

转化的user.p12证书可用于iPhone客户端验证,执行命令的时候会要求输入密码,也可以直接按回车,输了密码之后导入证书的时候需要输入密码来验证。

八、freeradius-client 的设置

vim /etc/radiusclient/radiusclient.conf

yourserveraddress 改为 radius服务器的地址

authserver yourserveraddress:1812

acctserver yourserveraddress:1813

dictionary /etc/radiusclient/dictionary

vim /etc/radiusclient/servers

youserveraddress yourserversecret

Radius 服务端的通信密匙默认是:testing123

九、pam验证

再介绍一种pam验证的方式,可以用系统用户验证ocserv

yum install pam_radius

编辑 pam_radius.conf

vim /etc/pam_radius.conf

添加以下内容:

ip address password 5

3列内容:服务器ip地址、密码、超时秒数 (不是系统用户密码,随便设置一个)

编辑 server

vim /etc/raddb/server

ip address password

2列内容:服务器ip地址、密码(不是系统用户密码,随便设置一个,和上面对应)

编辑 ocserv

vim /etc/pam.d/ocserv

添加以下内容:

#%PAM-1.0
auth sufficient /lib64/security/pam_radius_auth.so
auth include password-auth
account required pam_nologin.so
account include password-auth
session include password-auth

其中/lib6464位系统,如果是32位系统,就是lib

创建 /etc/ocserv 目录

mkdir /etc/ocserv

复制 server-key.pem、server-cert.pem、ca-cert.pem 到 /etc/ocserv目录下

cp server-key.pem server-cert.pem ca-cert.pem /etc/ocserv

现在介绍下各种验证方式怎么配置

ocserv.conf配置文件中设置

1、密码验证

找到以下内容取消前面的#号注释,没有就自行添加(其它所有auth相关的选项都需要添加#注释)

auth = "plain[/etc/ocserv/passwd]"

生成password文件

ocpasswd -c /etc/ocserv/passwd test

会在/etc/ocserv目录下生成一个password文件,用户名为test,回车的时候会要求输入两次密码

2、freeradius-client 验证

找到以下内容取消前面的#号注释,没有就自行添加(其它所有auth相关的选项都需要添加#注释)

auth = "radius[config=/etc/radiusclient/radiusclient.conf,groupconfig=true]"

3、pam验证

找到以下内容取消前面的#号注释,没有就自行添加(其它所有auth相关的选项都需要添加#注释)

auth = "pam"

4、证书验证

找到以下内容取消前面的#号注释,没有就自行添加(其它所有auth相关的选项都需要添加#注释)

auth = "certificate"
ca-cert = /etc/ocserv/ca-cert.pem
cert-user-oid = 0.9.2342.19200300.100.1.1

不管用哪种验证方式,改了之后执行以下命令启动服务

ocserv -f -d 1

然后客户端连接测试以下

如果测试没问题, 我们可以用supervisor工具守护进程。

yum -y install python-setuptools
easy_install pip
pip install supervisor
echo_supervisord_conf >/etc/supervisord.conf

添加以下内容就再启动supervisord就可以守护进程了

[program:ocserv]

command=ocserv -f -d 1
autostart=true
autorestart=true
startsecs=3
redirect_stderr=true
stdout_logfile=/var/log/ocserv.log'

iptables 的设置

自动调整MTU

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

开启 NAT (记得把 eth0 改成自己的网卡名,openvz 的基本是 venet0,或是干脆去掉 -o ehto 选项 )

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

开启 IPv4 的转发

sysctl -w net.ipv4.ip_forward=1

放行 443 端口 (假如配置文件中是这个端口)

iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p udp --dport 443 -j ACCEPT

 

验证方式一次只能选择一种,一般使用制作个证书就完事儿了。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇