c4rt1y

AnyConnect ocserv 搭建教程

0x01 AnyConnect ocserv

AnyConnect为思科推出的VPN客户端,目前已有Windows、Android、iOS、OS X、Ubuntu、WebOS等操作系统的客户端。AnyConnect主要作用是方便员工在任何设备上安全地办公,也有部分中国大陆用户利用AnyConnect翻墙。

0x02 环境安装

环境安装为centos7下

安装软件,直接使用yum安装
yum install epel-release
yum install ocserv

#查看ocserv的配置文件(其中认证证书,直接使用过去文章里写的)
$grep  -Ev '^#|^$' /etc/ocserv/ocserv.conf
#ocserv支持多种认证方式,这是自带的密码认证,使用ocpasswd创建密码文件
#ocserv还支持证书认证,可以通过Pluggable Authentication Modules (PAM)使用radius等认证方式
auth = "plain[/etc/ocserv/users]"
#tcp和udp端口
tcp-port = 443
udp-port = 443
#运行用户和组
run-as-user = ocserv
run-as-group = ocserv
socket-file = ocserv.sock
chroot-dir = /var/lib/ocserv
isolate-workers = true
#同一个用户最多同时登陆数
max-clients = 160
#同一个用户最多同时登陆数
max-same-clients = 2
keepalive = 32400
dpd = 90
mobile-dpd = 1800
switch-to-tcp-timeout = 25
#是否优化
try-mtu-discovery = true
#证书路径(这里要自己加入证书,本文不讲解证书问题)
server-cert = /etc/ocserv/ssl/***.com.crt
server-key = /etc/ocserv/ssl/***.com.key
#从证书中提取用户名的方式,这里提取的是证书中的 CN 字段作为用户名
cert-user-oid = 2.5.4.3
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0"
auth-timeout = 240
min-reauth-time = 300
max-ban-score = 50
ban-reset-time = 300
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /var/run/ocserv.pid
device = vpns
predictable-ips = true
#域名
default-domain = vpn_back.***.com
#分配给VPN客户端的IP段
ipv4-network = 172.200.0.1
ipv4-netmask = 255.255.255.0
ping-leases = false
#IP内网网段
route = 10.0.0.0/255.0.0.0
cisco-client-compat = true
dtls-legacy = true


##重启ocserv
sudo systemctl enable ocserv
sudo systemctl start ocserv

##查看是否启动成功(debug权重为1,最高可以为10)
sudo ocserv -c /etc/ocserv/ocserv.conf -f -d 1

0x04 使用说明

##添加用户
ocpasswd -c /etc/ocserv/users 【用户名】
##添加用户至某个分组
ocpasswd -c /etc/ocserv/users -g 【分组名称】 【用户名】
##锁定用户
ocpasswd -c /etc/ocserv/users -l 【用户名】
##解锁用户
ocpasswd -c /etc/ocserv/users -u 【用户名】
##删除用户
ocpasswd -c /etc/ocserv/users -d 【用户名】

##查看当前服务运行状态:
occtl -n show status
##查看当前在线用户详情:
occtl -n show users

##踢掉当前在线用户:
通过用户名:
occtl disconnect user 【用户名】
通过id:
occtl disconnect id 【id号】

0x05 服务器配置

# 转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf


#通过nat将ocserv设置的虚拟网段172.200.0.1与线上网络打通

iptables -A FORWARD -s 172.17.200.1/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.17.200.1/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -o vpns+ -j ACCEPT
iptables -A FORWARD -i vpns+ -j ACCEPT

service   iptables save
service   iptables restart

0x06 验证

##创建一个账号
ocpasswd -c /etc/ocserv/users kitty

##4.1 软件下载地址:https://softs.loan/?dir=%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/PC/AnyConnect
连接cisco anyconnect 的设备,输入登录地址

测试内网域名
ping test.010sec.cn
PING test.010sec.cn (10.67.71.8) 56(84) bytes of data.
64 bytes from 10.67.71.8 (10.67.71.8): icmp_seq=1 ttl=250 time=3.98 ms

##4.2 使用第三方软件

#4.2.1 下载与使用方式

#4.2.1.1.Lunix
安装方式:sudo apt install -y network-manager-openconnect-gnome
使用为界面化模式

#4.2.1.2  mac
安装方式 :brew install  openconnect
使用方式:sudo openconnect vpn_back.***.com
#输入账号密码即可

#4.2.1.3 window
下载地址:https://github.com/openconnect/openconnect-gui/releases/latest
使用为界面化模式

##4.3 两款软件比较
状态 Cisco anyconnect vpn openconnect
缺点 无断网问题 断网就不可以,ssl证书过期则无法使用
优点 不可多开,iphone热点无法使用 该软件可以多开,可以使用iphone下的热点

0x07 小结

我测试中,使用是yum安装,而且直接使用Cisco anyconnect的路由进行转发,但是这里存在一个问题,就是Cisco anyconnect 最大支持的路由只要64个,所以很多人都会采用iptables进行转发。另外一个注意点,就是服务器必须开启ipv4转发
sysctl -w net.ipv4.ip_forward=1

0x08 资料来源

https://ipbgp.com/2017/08/29/cisco-anyconnect/
https://zh.wikipedia.org/wiki/AnyConnect
https://softs.loan/?dir=%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/PC/AnyConnect
https://www.logcg.com/archives/994
http://carlislebear.blogspot.com/2016/05/linode-centos-7-cisco-anyconnect-vpn-server.html
GoTop