安装 ocserv

yum -y install epel-release
yum -y install ocserv
yum install iptables-services

2. 准备证书

可以自签不过推荐申请免费证书

自签证书:

$ vi ca.tmpl

cn = "AnyConnect"
organization = "Pool"   
serial = 1  
expiration_days = 3650 
ca 
signing_key  
cert_signing_key  
crl_signing_key

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

生成服务器证书,cn 必须填自己服务器的 IP 或域名

$ vi server.tmpl

cn = "Your IP or Doname" 
organization = "Host"  
expiration_days = 3650  
signing_key
encryption_key 
tls_www_server

$ certtool --generate-privkey --outfile server-key.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

复制证书到对应目录

cp server-cert.pem /etc/pki/ocserv/public/server-cert.pem
cp server-key.pem /etc/pki/ocserv/private/server-key.pem

3. 配置ocserv

$vi /etc/ocserv/ocserv.conf

修改一下值

auth = "plain[passwd=/etc/ocserv/ocserv.passwd,otp=/etc/ocserv/ocserv.otp]"
tcp-port = 443 #可以自定义
udp-port = 443 #可以自定义
max-clients = 16
server-cert = /etc/pki/ocserv/public/server.pem
server-key = /etc/pki/ocserv/private/server.key
default-domain = 404sec.com
ipv4-network = 10.10.78.0/24
dns = 8.8.8.8
dns = 114.114.114.114
cisco-client-compat = true
route = default

在/etc/pam.d/ocserv 添加

auth requisite pam_oath.so debug usersfile=/etc/ocserv/ocserv.otp window=20

添加用户

1、常规密码登录用户添加

$ ocpasswd  404sec  -c /etc/ocserv/ocserv.passwd
然后输入两次密码

2、OTP账户设置

$ echo "HOTP 404sec - $(head -c 16 /dev/urandom |xxd  -c 256 -ps)" >>/etc/ocserv/ocserv.otp

查看 /etc/ocserv/ocserv.otp中的KEY粽子

您可以使用以下命令打印“404sec”的前5个密码

$ oathtool -w 5 KEY 生产5个

生产base32 密钥

$ echo 0xKEY| xxd -r -c 256 | base32

如果提示 base32: command not found 表示当前版本的coreutils里面没有BASE32 ,更新coreutils请看这里

二维码连接拼接

  otpauth://hotp/404sec@404sec.com?secret=BASE32KEY&issuer=COMPANY&counter=1

设置iptables

修改系统配置,允许转发

$ vi /etc/sysctl.conf
    net.ipv4.ip_forward = 1
$ sysctl -p

设置转发与访问权限

iptables -t nat -A POSTROUTING -s 10.10.78.0/24 -o eth0 -j MASQUERADE
iptables -D FORWARD -s 10.10.78.0/24 -j ACCEPT
iptables-A INPUT-p tcp-m state--state NEW--dport 443-j ACCEPT
iptables-A INPUT-p tcp-m state--state NEW--dport 443-j ACCEPT

启动OCSERV

ocserv -f -d 1
 客户端 Cisco anyConnect |  二次验证app:FreeOTP