给OpenVPN添加用户访问日志

openVPN 添加用户访问日志

1、建立openvpn的建立连接和断开连接脚本

建立/etc/openvpn/connect文件,文件内容如下:

1
2
3
4
5
6
7
8
#!/bin/bash
day=`date +%F`
if [ -f /var/log/openvpn/$day ];then
echo "`date '+%F %H:%M:%S'` User $common_name is logged in" >>/var/log/openvpn/$day
else
touch /var/log/openvpn/$day
echo "`date '+%F %H:%M:%S'` User $common_name is logged in" >>/var/log/openvpn/$day
fi

建立/etc/openvpn/disconnect文件,文件内容如下:

1
2
3
4
5
6
7
8
#!/bin/bash
day=`date +%F`
if [ -f /var/log/openvpn/$day ];then
echo "`date '+%F %H:%M:%S'` User $common_name is logged off" >>/var/log/openvpn/$day
else
touch /var/log/openvpn/$day
echo "`date '+%F %H:%M:%S'` User $common_name is logged off" >>/var/log/openvpn/$day
fi

要将这两个脚本赋予执行权限

1
2
chmod +x /etc/openvpn/connect
chmod +x /etc/openvpn/disconnect

需要注意的一点是因为openvpn是以nodody帐号在运行,因此必须赋予nodody帐号对/var/log/openvpn这个目录的写权限,否则openvpn的运行将受到影响,用户登录过程不能完成。**

2、修改openvpn服务器配置文件,启用脚本

修改/etc/openvpn/server.conf,添加如下两行

1
2
client-connect /etc/openvpn/connect
client-disconnect /etc/openvpn/disconnect

这样每天就会在/var/log/openvpn下面建立文件名为2007-06-04这样的文件,该文件记录了当天登陆openvpn的用户名和时间,输出例如:

1
2
2007-06-04 11:51:53 User rwen is logged in
2007-06-04 11:55:54 User rwen is logged off (这里需要注意,因为openvpn本身判断机制的原因,登出时间比实际登出时间慢3分钟)

3、启动本机的sendmail

1
2
chkconfig --level 3 sendmail on
service sendmail start

4、建立/etc/openvpn/mail2admin,并赋予执行权限 chmod +x mail2admin

1
2
3
4
5
#!/bin/bash
today=`date +%F`
if [ -f /var/log/openvpn/$today ];then
mail -s "$today openvpn user access log" [username@yourcompany.com](http://www.360doc.com/mailto:rwen@corp.netease.com)< /var/log/openvpn/$today
fi

5、建立cron工作表,每天定时23:55分发送当天的日志给管理员

1
2
#crontab -e
55 23 * * * /etc/openvpn/mail2admin

搞定!