linux/系统运维

openvpn增加记录log的脚本,登录断开以及登录用户,登录IP等信息

daimafengzi · 6月18日 · 2025年 · · 本文共1983个字 · 预计阅读7分钟16次已读

一、前言

在部署和维护 OpenVPN 服务的过程中,日志记录是非常重要的环节。它不仅可以帮助我们排查连接问题,还能在一定程度上了解用户的连接行为,甚至为后续的安全审计提供依据。
本文将详细介绍如何配置 OpenVPN 的日志系统,包括客户端连接/断开日志记录、脚本调用方式、以及如何结合其他工具实现更深入的流量分析。

二、OpenVPN 自带日志功能

1. 启用基础日志记录

OpenVPN 配置文件(如 /etc/OpenVPN/server.conf)中添加以下配置,即可启用日志记录功能:

log-append /var/log/openvpn.log
verb 3
  1. log-append:指定日志文件路径。
  2. verb:设置日志详细级别(0~11),推荐使用 3 或 4 级别,既包含必要信息又不会过于冗余。

2. 查看日志内容示例

tail -f /var/log/openvpn.log

你可能会看到类似如下内容:

Tue Jun 17 23:51:25 2025 mac/59.58.241.32:50307 TLS: Initial packet from [AF_INET]59.58.241.32:50307
Tue Jun 17 23:51:25 2025 mac/59.58.241.32:50307 VERIFY OK: depth=1, CN=cn_SbC48kvvDiZmgbNy
Tue Jun 17 23:51:25 2025 mac/59.58.241.32:50307 VERIFY OK: depth=0, CN=mac

这些信息显示了:

  1. 客户端证书 Common Name(CN)
  2. 客户端公网 IP 和端口
  3. 连接时间
  4. 认证状态等

三、记录客户端连接/断开日志(使用脚本)

为了更细粒度地记录每个客户端的连接和断开事件,我们可以使用 client-connectclient-disconnect 脚本。

1. 启用脚本支持

在 OpenVPN 配置文件中添加:(一般在/etc/openvpn/server.conf)

script-security 2
client-connect /etc/openvpn/scripts/connect.sh
client-disconnect /etc/openvpn/scripts/disconnect.sh

2. 添加脚本:connect.sh(注意脚本存放路径为:/etc/openvpn/scripts/如果目录不存在则自行创建)

#!/bin/bash

LOGDIR="/etc/openvpn/log"
LOGFILE="$LOGDIR/connect.log"

DATE=$(date +"%Y-%m-%d %H:%M:%S")
CN="${common_name:-UNKNOWN_CN}"
IP="${trusted_ip:-0.0.0.0}"
PORT="${trusted_port:-0}"

if [ ! -d "$LOGDIR" ]; then
    mkdir -p "$LOGDIR"
    chown nobody:nobody "$LOGDIR"
    chmod 750 "$LOGDIR"
fi

echo "$DATE - 账户 '$CN' 来自 IP='$IP:$PORT' , 内网分配 IP='$ifconfig_pool_remote_ip' , 系统类型: $IV_PLAT" >> "$LOGFILE"

exit 0

3. 添加脚本:disconnect.sh(注意脚本存放路径为:/etc/openvpn/scripts/如果目录不存在则自行创建)

#!/bin/bash

LOGDIR="/etc/openvpn/log"
LOGFILE="$LOGDIR/disconnect.log"

DATE=$(date +"%Y-%m-%d %H:%M:%S")
CN="${common_name:-UNKNOWN_CN}"
IP="${trusted_ip:-0.0.0.0}"
PORT="${trusted_port:-0}"

echo "$DATE - 账户 '$CN' 来自 IP='$IP:$PORT' , 内网分配 IP='$ifconfig_pool_remote_ip' , 系统类型: $IV_PLAT" >> "$LOGFILE"

exit 0

4. 设置脚本权限

chmod +x /etc/openvpn/scripts/*.sh
chown nobody:nobody /etc/openvpn/scripts/*.sh
chown -R nobody:nobody /etc/openvpn/log/

重启服务后,你会在 /etc/openvpn/log/connect.log/etc/openvpn/log/disconnect.log 中看到详细的连接记录。

四、结语

通过对 OpenVPN 的日志系统进行合理配置,结合脚本记录、环境变量提取和第三方工具分析,我们可以实现对客户端连接行为的有效追踪和管理。这不仅有助于运维排障,也能为网络安全提供有力支持。

0 条回应
| 耗时 0.362 秒 | 查询 29 次 | 内存 4.23 MB |
本站CDN由One degree CDN提供