2020年6月

安装服务

yum -y install epel-release
yum -y install ocserv

创建一个文件夹用来生成证书

mkdir ssl & cd ssl

创建ca证书模板:

cat > ca.tmpl <<EOF
cn = "xxxx"
organization = "xxx"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
EOF

生成私钥和证书:

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

创建本地服务器证书模板

cat >server.tmpl <<EOF
cn = "you_hostname"
organization = "xxx"
serial = 2
expiration_days = 3650
encryption_key
signing_key
tls_www_server
EOF

生成私钥和证书

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

把证书文件用拷贝到Ocserv默认的目录下

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

编辑配置文件

vim /etc/ocserv/ocserv.conf

按照如下修改

#auth(验证方式)改为密码验证
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
#服务监听端口,默认为443
tcp-port = 443
udp-port = 443
#欢迎语,自己用可注释掉
banner = "Welcome LALA.IM"
#允许同时连接的客户端数量(可默认)
max-clients = 16
#限制同一客户端的并行登陆数量(可默认)
max-same-clients = 2
#服务器证书以及私钥的路径
server-cert = /etc/pki/ocserv/public/server-cert.pem
server-key = /etc/pki/ocserv/private/server-key.pem
#去掉注释,分发给VPN客户端的IP地址范围,DNS地址  
ipv4-network = x.x.x.x
ipv4-netmask = 255.255.255.0
ipv4-network = x.x.x.x/24
tunnel-all-dns = true
dns = x.x.x.x

管理VPN用户:

#新建用户
ocpasswd -c /etc/ocserv/ocpasswd xxxx
#删除用户
ocpasswd -c /etc/ocserv/ocpasswd -d xxxx
#锁定用户
ocpasswd -c /etc/ocserv/ocpasswd -l xxxx
#解锁用户
ocpasswd -c /etc/ocserv/ocpasswd -u xxxx

系统网络设置

#开启机器的IPV4转发
echo 1 > /proc/sys/net/ipv4/ip_forward
#启动CentOS7的Firewalld防火墙
systemctl start firewalld.service
#放行ocserv的端口
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
#设置防火墙转发(eth0为网卡名称)
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#防火墙重新加载
firewall-cmd --reload

启动服务器

启动服务
systemctl start ocserv
设置开机自启动
systemctl enable ocserv

配置服务器ssl证书

申请证书,这一步我之前一篇博客专门讲到 使用acme.sh 从Let’ s Encrypt 生成免费的证书
将申请到的证书替换一下路径

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

配置VPN认证方式为证书

上面是介绍的是使用用户名和密码的方法进行登录,但是每次登录都要输入密码,很麻烦,这里介绍一下如何使用证书登录。

建立相关证书配置文件夹

mkdir -p /etc/ocserv/template

建立ca证书模板

cat >/etc/ocserv/template/ca.tmp<<EOF
cn = "xxxx CA"
organization = "xxx"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
EOF

生成ca证书的密钥

openssl genrsa -out /etc/ocserv/template/ca.key.pem 2048
certtool --generate-self-signed --hash SHA256 --load-privkey /etc/ocserv/template/ca.key.pem --template /etc/ocserv/template/ca.tmp --outfile /etc/ocserv/template/ca.cert.pem

建立user证书模板

cat >/etc/ocserv/template/user.tmp<<EOF
cn = "xxxx"
unit = "xxx"
expiration_days = 1825
signing_key
tls_www_client
EOF

生成user证书的密钥

openssl genrsa -out /etc/ocserv/template/user.key.pem 2048
certtool --generate-certificate --hash SHA256 --load-privkey /etc/ocserv/template/user.key.pem --load-ca-certificate /etc/ocserv/template/ca.cert.pem --load-ca-privkey /etc/ocserv/template/ca.key.pem --template /etc/ocserv/template/user.tmp --outfile /etc/ocserv/template/user.cert.pem

生成Diffie-Hellman密钥

certtool --generate-dh-params --outfile /etc/ocserv/dh.pem

补全证书链

cat /etc/ocserv/template/ca.cert.pem >>/etc/ocserv/template/user.cert.pem

生成.p12证书文件

#由于 macOS 导入证书必须要有密码.务必修改末尾 pass: 后的密码.
openssl pkcs12 -export -inkey /etc/ocserv/template/user.key.pem -in /etc/ocserv/template/user.cert.pem -name "xxxx" -certfile /etc/ocserv/template/ca.cert.pem -caname "xxxx CA" -out /etc/ocserv/AnyConnect.p12 -passout pass:123456

更改配置文件

/etc/ocserv/ocserv.conf
/etc/ocserv/ssl/ca-cert.pem
#修改为
ca-cert = /etc/ocserv/template/ca.cert.pem
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
#修改为
auth = "certificate"
#修改cert-user-oid
cert-user-oid = 2.5.4.3

定时任务的每段为:分,时,日,月,周,用户,命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
*:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分
-:表示区间,是一个范围,00 17-19 * cmd,就是每天17,18,19点的整点执行命令
,:是分割时段,30 3,19,21 * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令
/n:表示分割,可以看成除法,/5 * cmd,每隔五分钟执行一次

For details see man 4 crontabs

Example of job definition:

.---------------- minute (0 - 59)

| .------------- hour (0 - 23)

| | .---------- day of month (1 - 31)

| | | .------- month (1 - 12) OR jan,feb,mar,apr ...

| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

| | | | |

* user-name command to be executed

cron-usage.png

accountsd(账户) 1.8M
airportd(机场) 9.5M
amfid(文件保护精灵) 2.0M
AppleCameraAssistant(摄影助理) 1.0M
appleeventsd(苹果事件) 1.5M
ApplelDauthAgent(多思维服务) 2.7M
AppleSpell(苹果输入法) 4.7M
apasd(系统测评系统) 5.6M
askpermissiond(询问许可) 1.7M
authd(认证) 2.6M
automountd (认证授权)
awdd(自动无线功能失效后台程序) 1.3M
bird(观察) 2.6M
blued 1.8M
CalendarAgent(日历) 10.0M
CalL(访问)History(历史)Syn(握手信号)Helper (助手)2.8M
callservicesd(访问服务) 6.2M
CalNCS(网络控制)Service(服务) 5.8MM
CareDaemon(护理守护程序) 2.8M
cfprefsd(摄影检测) 5.6M
cfprefsd 2.1M
Cloud(云)Keychain(钥匙链)Proxy (代理)0.92M
cloudpaird 1.6M
com.apple.appkit(程序套件).xpc(准系统).open(开启) 9.0M
com.apple.audo(音频),DeiverHelper(设置助手) 1.2M
com.apple.CodsSigningHelper(暗号助手) 0.78M
com.apple.ctkpcasd(加速助手) 1.0M
com.apple.dock(基础).extra (特级)4.9M
com.apple.hiservies(非正式服务)-xpcs(复杂机场) 0.97M
com.apple.ifdreader(读出器) 0.96
com.apple.perfoemanceAna(性能记录) 1.0M
com.apple.wifi.proxy (代理)1.1M
configd (信托)2.7M
coreaudiod(守护进程) 2.0M
coreduetd (守护进程日志)7.6M
coreservicesd(核心服务) 13.1
CoreServiceUIAgent (核心UI服务)5.1
corestoraged(核心储存) 0.98M
CrashReporter(错误报告)SupportHelper(超级助手) 0.82M
ctkd(激发加速) 1.0M
CVMServer (客户价值服务)0.74M
deleted (删除)1.3M
diagnostice (诊断程序)0.58M
diagnostics_agent (诊断代理)2.3M
diskarbitrationd(硬盘空间) 1.1M
displaypolicyd (显示策略)1.0M
distnted (iTunes 移动设备驱动)1.1M
distnoted(iTunes移动设备驱动) 10M
Dock(菜单) 15.8M
filecoordinationd (第一级配位)1.1M
Finder(文件管理) 33.4M
fmfd(细网有限差分) 2.3M
fontd(字形数据) 4.2M
fseventsd (文件系统事件守护进程)2.1M
helpd (帮助)1.1M
hidd(隐藏身份)1.4M
iconservicesagent (图标服务代理)1.0M
iconservicesagent(图标服务代理) 1.9M
iconservicesd(图标服务) 1.1M
magent(代理) 2.5M
IMD(模内装饰)OersistenceAgent(代理) 1.6M
imklaunchagent(守护进程) 2.0M
kernel_task (核工作)332.0M
kernelEventAgent (内核事件代理)0.5M
kextd(工具) 8.2M
keychain(钥匙链) Circlhain Notification(通知) 4.4M
locationd(定位数据) 2.5M
logind (联机)0.96M
loginwindow(联机窗口) 9.2M
lsuseractivityd 1.7M
mapspushd(地图) 1.5M
mdflagwriter 0.5M
mDNSResponder (域名解析)1.4M
mds (光驱镜像)21.5M
mds_sstores(光驱储备) 12.8M
mdworker(光驱工作线程) 4.4M
mdworker 2.3M
mdworker 2.5M
mdworker 2.6M
nethelper (网络助手)1.3M
netwoed (网络)2.0M
networkd(网络作品) 0.6M
notifyd (通知)1.1M
nsurlsessiond (非数不相关回归模型会议)1.2M
nsurlstoraged (非……议数据库)2.7M
nsurlstoraged 1.0M
ntpd (网络时间校正)0.67M
ntpd 0.37M
opendirectoryd (开放管理)8.8M
pboard (搭伙)0.6M
pds(公共广播) 1.4M
pkd 3.3M
powerd (电源)1.1M
printtool(打印工具) 0.98M
revisiond (修订工具)1.6M
Scoped(活动)Bookmark(编篡)Agent(工具) 1.4M
secd (黑电流检测)1.5M
secinitd 2.8M
secinitd 1.8M
securityd(安全) 1.6M
securityd_service (安全服务)1.1M
sharingd(共享) 5.8M
soagent 5.8M
SociaPushAgent (附件推送工具)1.2M
socket(接口)fiterfw(装配) 2.1M
spindump_agent (加速工具)0.84M
Spotlight(映射)NetHelper(网路助手) 2.9M
Spotlight(映射) 9.5M
stackshot(滑轨) 0.74M
storeaccountd (保存账户)3.2M
syslogd(系统日志) 1.0M
sysmond (系统引导)1.9M
systemstatsd (系统统计分析)1.4M
SystemUIserver(系统UI服务) 9.1M
taskgated (工作门限)2.4M
tccd (总呼叫连接延迟)1.7M
tccd 1.4M
tnermald(团队工作引导) 0.96M
TISwitcher (德州切换器)3.6M
TMCacheDelete(记忆体缓存删除0 1.7M
usbd(总线驱动) 1.1M
usbmuxd 1.2M
UserEventAgent(用户确认工具) 2.9M
UserEventAgent 4.7M
usernoted (用户注意)2.2M
warmd (温馨提示)1.9M
watchdogd (监视器)0.75M
wdhelper(西数助手) 1.1M
WI-FI 3.8M
WindowServer (win服务)33.4M
wirelessproxd (无线)1.5M
writeconfig (编写配置)1.1M
文件夹操作调度程序 4.6M
文件编辑 19.3M
活动监视器 18.4M
通知中心 11.9M