我们的组织中设置了一个 OpenVPN 服务器。我们已为员工提供了创建的 PAM 访问权限。使用动词 3,我们设法存储谁使用哪个 IP 地址登录。
我们想要存储用户正在浏览哪个主机,我们知道我们看不到 https 后面的任何内容,这就是为什么我们只想存储主机,例如 facebook.com:443
下面是我们当前的 server.conf 文件
port 1194
proto tcp
link-mtu 1500
dev tun
ca easy-rsa/keys/ca.crt
cert easy-rsa/keys/server.crt
key easy-rsa/keys/server.key
dh easy-rsa/keys/dh2048.pem
cipher AES-128-CBC
auth SHA1
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#push "dhcp-option SEARCH rancher.internal"
push "route 10.42.0.0 255.255.0.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
username-as-common-name
verb 3
status /etc/openvpn/log/openvpn-status.log
log-append /etc/openvpn/log/openvpn.log
client-cert-not-required
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
答案1
您正在使用路由 OpenVPN 连接(dev tun
并推送路由。要记录主机连接,需要使用例如iptables
或设置 TCP 数据包级别的日志记录netfilter
。
在 OpenVPN 设置期间,可能会执行类似以下的命令来设置从远程主机到私有网络的数据包转发:
iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 10.42.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
要在 TCP 数据包级别记录从远程主机到私有主机的连接,需要使用类似以下命令:
iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 10.42.0.0/24 -p tcp -dports 80,443 -state NEW -j LOG
需要在相应ACCEPT
规则之前插入此规则。
这提供 TCP 级别的日志记录,但不提供 HTTP 主机或 DNS 名称的详细信息。日志结果将仅包含 IP 地址。
实现目标的其他选项(包括 DNS 名称)要复杂得多,并且需要付出更多努力才能设置。以下工具可能是此类解决方案的起点。
入侵检测系统:
透明代理:
答案2
Hargut 说得对。我加了一条规则——你必须给客户颁发证书,并逐一为他们分配虚拟 IP。只有这样,你才能识别谁浏览了哪个网站。
答案3
您可以使用交互式日志监控工具监控主机连接。
iptraf --> Iptraf 是一个交互式的彩色 IP Lan 监视器。它显示各个连接以及主机间的数据流量。
安装 iptraf:
# Centos (base repo)
$ yum install iptraf
# fedora or centos (with epel)
$ yum install iptraf-ng -y
# ubuntu or debian
$ sudo apt-get install iptraf iptraf-ng
Nload --> Nload 是一个命令行工具,允许用户分别监控传入和传出的流量。它还会绘制一个图表来表示传入和传出的流量,其比例可以调整。
安装Nload:
# fedora or centos
$ yum install nload -y
# ubuntu/debian
$ sudo apt-get install nload
您还可以使用第三方工具,如 Loggly 或 wireshark。
以下是一些有用的链接: