• {{ item.name }}
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

CentOS6 ocserv-radius

  • iansiu
  • 2016-04-10
  • 0

安装环境: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

五、安装radcli和freeradius-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

其中/lib64是64位系统,如果是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

 

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

© 2023 laowang's blog
Theme by Wing