OpenVPN 服务端的一些配置
VPN是企业内比较重要的一个资产,不能从网上乱下载,去官网看看 https://openvpn.net/,第一次不懂事,不清楚OpenVPN还有商业版,OpenVPN Access Server 和 OpenVPN Community,直接就安装了OpenVPN AS,没有网上说的那么难,还有图形化界面,登陆进行发现2个并发license???去官网注册购买需要花钱???
AS 版本破解
下载的最新版本的2.10.1,从网上搜了一下,这玩意还有破解版的,试一下最新版能不能破解
参考《XX Access Server 2.9.x 破解在线人数限制》,这是找到的最新的了,发现使用相同的办法,也能破解2.10.1
待破解的文件仍是 pyovpn-2.0-py3.6.egg,解压,反编译pyovpn/lic/uprop.pyc
修改uprop.py,搜索return ret,在上面添加一行ret['concurrent_connections'] = 4096
编译,替换
初始化AS
/usr/local/openvpn_as/bin/ovpn-init
配置VPN 路由、LDAP 、MFA,真丝滑
社区版OpenVPN
从官网上找教程
部署参考《openvpn部署》
server端配置文件 /etc/openvpn/server.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| port 1194 proto udp dev tun ca /etc/openvpn/server/certs/ca.crt cert /etc/openvpn/server/certs/server.crt key /etc/openvpn/server/certs/server.key dh /etc/openvpn/server/certs/dh.pem tls-auth /etc/openvpn/server/certs/ta.key 0 ifconfig-pool-persist ipp.txt push "route 10.0.0.0 255.0.0.0" push "route 192.168.0.0 255.255.0.0" push "route 172.16.0.0 255.240.0.0" server 10.8.0.0 255.255.255.0 push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"
compress lzo duplicate-cn keepalive 10 120 comp-lzo client-to-client persist-key persist-tun max-clients 1000 user openvpn group openvpn log /var/log/openvpn/server.log log-append /var/log/openvpn/server.log status /var/log/openvpn/status.log verb 3 explicit-exit-notify 1 cipher AES-256-CBC reneg-sec 0 auth-nocache
|
防火墙相关配置
1 2 3 4 5 6 7 8
| iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
iptables -nvL -t nat
|
客户端配置文件 config.ovpn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| client proto udp dev tun remote [open VPN服务端公网 ip,根据实际情况填写] 1194 //openvpn服务器的外网IP和端口(可以写多个做到高可用) ca ca.crt cert admin.crt key admin.key tls-auth ta.key 1 remote-cert-tls server //指定采用服务器校验方式 comp-lzo verb 3 //调试信息级别 mute-replay-warnings resolv-retry infinite //断线自动重新连接 nobind //不绑定特定的本地端口号 persist-key //与服务器端的保持一致 persist-tun //与服务器端的保持一致 cipher AES-256-CBC //指定数据对称加密算法
|
配置LDAP
这里参考《openvpn配置ldap》
LDAP接入还是很省事的,安装openvpn-auth-ldap插件
配置 /etc/openvpn/auth/ldap.conf
1 2 3 4 5 6 7 8 9 10 11 12
| <LDAP> URL ldap://xx.xx.xx.xx:389 Password xx Timeout 15 TLSEnable no FollowReferrals no </LDAP> <Authorization> BaseDN "ou=xx,dc=xx,dc=cn" SearchFilter "sAMAccountName=%u" RequireGroup false </Authorization>
|
编辑server配置文件,添加
1 2 3
| plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf" client-cert-not-required username-as-common-name
|
修改客户端配置
1 2
| ns-cert-type server auth-user-pass
|
测试成功
配置OTP
这个有点难啊,一直没有配置成功
参考《OpenVPN启用LDAP+GoogleAuthenticator认证》,
使用了https://github.com/evgeny-gridasov/openvpn-otp插件,一直没有成功,放弃了
参考《OpenVPN+AD+Google authenticator 安装、配置》,使用了google-authenticator-libpam,不是专业运维,配置pam头疼,放弃了
继续搜索可用教程
找到了https://github.com/wheelybird/openvpn-server-ldap-otp,通过docker部署,集成好了ldap和otp,丝滑,简单看了下配置参数,启动容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker run \ --name openvpn \ --volume /etc/openvpn:/etc/openvpn \ -v /etc/localtime:/etc/localtime:ro \ --detach=true \ --restart=always \ -p 61194:1194/udp \ -e "OVPN_SERVER_CN=vpn.pa55w0rd.com" \ -e "LDAP_URI=ldap://xx.xx.xx.xx" \ -e "LDAP_BASE_DN=OU=xx,DC=xx" \ -e "LDAP_BIND_USER_DN=CN=xx,OU=xx,DC=xx" \ -e "LDAP_BIND_USER_PASS=xx" \ -e "LDAP_LOGIN_ATTRIBUTE=sAMAccountName" \ -e "LDAP_FILTER=(objectClass=user)" \ -e "OVPN_NETWORK=10.118.0.0 255.255.0.0" \ -e "OVPN_ROUTES=172.16.0.0 255.240.0.0,10.0.0.0 255.0.0.0,192.168.0.0 255.255.0.0" \ -e "OVPN_DNS_SERVERS=192.168.1.2" \ -e "OVPN_IDLE_TIMEOUT=36000" \ -e "ENABLE_OTP=true" \ -e "FAIL2BAN_ENABLED=true" \ -e "FAIL2BAN_MAXRETRIES=20" \ --cap-add=NET_ADMIN \ wheelybird/openvpn-ldap-otp:v1.5
|
打印客户端配置文件 docker exec -ti openvpn show-client-config
添加OTP docker exec -ti openvpn add-otp-user <username>
where username matches the LDAP username.
还有fail2ban防止暴力破解
测试,登陆成功
客户端连接VPN
偷懒,阿里云都写好了 《客户端远程连接VPC》