利用Cron定时任务管理OpenVPN用户访问权限

61 阅读1分钟

拥有Cron伙伴总是好事!

背景需求

几位系统管理员朋友讨论VPN使用场景时,提出希望实现定时访问控制的需求:在系统更新期间限制访问,或仅允许实习生在特定时段连接。这引发了关于企业IT管理限制的深入讨论。

技术实现

1. OpenVPN命令行工具

通过OpenVPN官方文档获取关键命令:

# 禁止用户命令
/usr/local/openvpn_as/scripts/sacli --user <username> --key "prop_deny" --value "true" UserPropPut

# 断开用户连接命令
/usr/local/openvpn_as/scripts/sacli --user <username> --kill "Schedule Maintenance" DisconnectUser

2. 创建Bash脚本

~/scripts目录下创建两个脚本文件:

discbanuser.sh (断开并禁止用户):

#!/bin/bash
/usr/local/openvpn_as/scripts/sacli --user $1 --kill "$2" DisconnectUser
/usr/local/openvpn_as/scripts/sacli --user $1 --key "prop_deny" --value "true" UserPropPut

unbanuser.sh (解除用户禁止):

#!/bin/bash
/usr/local/openvpn_as/scripts/sacli --user $1 --key "prop_deny" --value "false" UserPropPut

3. 设置脚本权限

chmod 755 discbanuser.sh
chmod 755 unbanuser.sh

4. 配置Cron定时任务

通过crontab -e添加计划任务:

# 每周一22:00执行断开禁止
0 22 * * 1 /home/medic/scripts/discbanuser.sh ricktest "Scheduled Maintenance"

# 每周一22:30执行解禁
30 22 * * 1 /home/medic/scripts/unbanuser.sh ricktest

测试验证

  1. 测试用户按计划被断开连接并收到指定消息
  2. 禁止期间尝试连接失败
  3. 解禁后恢复连接功能

应用扩展

该方案可延伸用于:

  • 定时系统维护窗口
  • 合规性访问控制
  • 临时权限管理
  • 安全事件响应

文中提到的电路板制造测试案例展示了Cron在硬件测试中的创新应用,通过定时脚本检测总线时序问题。

通过这个基础示例,Linux新手可以掌握Cron与Bash脚本结合的实用技巧,为自动化系统管理打下基础。