Hello! (about Security) My name is Dave. I'm doing a research/development/implementation and promotion of your openvpn client as part of my University Studies here at Windsor, Ontario, Canada.
I have to say, I am absolutely loving OpenVPN. However, there was one interesting security concern I noticed, which I would like to potentially engage. As part of the nature of dynamic IP networks, OpenVPN will likely have clients sending/receiving arp packets. It is this exact freedom offered by ARP, which poses a rather dangerous situation for the real networks that OpenVPN can bridge to, as well as other OpenVPN clients. This threat goes as follows: openvpn server goes up, offers bridge to physical lan (say 192.168.5.0, mask 255.255.255.0, gateway 192.168.5.1) - client connects, openvpn server gives client 192.168.5.200 (say we assigned the clients a range of 192.168.5.200 to 192.168.5.254 in the server.conf). -Now the client frequently sends to FF:FF:FF:FF:FF:FF : ARP 192.168.5.1 is at <client's macaddress>, when he tries to arp-poison the gateway. The problem, is that these arp packets will get through, uncontrolled. After a client poisons a physical network, even though OpenVPN will not forward any redirected traffic destined for 192.168.5.1 to <client's mac address>, the poisoned targets on the physical LAN will still try to send their traffic to the openvpn bridge. What I was wondering, would be if I could engage the possibility of myself adding <client's mac address> to the envoronment variables accessible during the auth-user-pass-verify, client-connect, and client-disconnect scripts. Doing so would allow openvpn users to create connection scripts, so that ebtables entries could be added/removed from the kernel or firewall to restrict the flow of potentially evil arp packets. Example of such a usage below: #Entries similar to below in connect/disconnect script (should use insertions or similar): ebtables -A FORWARD -i tap0 -p arp --arp-ip-src $ifconfig_pool_remote_ip --arp-mac-src $<client's mac address variable> -j ACCEPT #Entries similar to below ran once around startup: ebtables -A FORWARD -i tap0 -p arp --arp-opcode 1 -j ACCEPT #drop all other arp replies ebtables -A FORWARD -i tap0 -p arp -j DROP As evidenced by the example above, perhaps a <client-mac-addr> environment variable would really help users mitigate this security concern - and I would like to try to develop it myself, perhaps for rc21! Also important, are packets from one openvpn client -- destined to another openvpn client -- passed through the server's tap adapter before going to another client? For instance, suppose I was a client, and I started saying to target FF:FF:FF:FF:FF:FF: 192.168.5.1 is at <my mac address> - Can ebtables entries controlling tap0 stop client-to-client traffic - or does such traffic never leave the openvpn process? That would also have some bearing on how much more security the addition of a <client's mac address> could generate for client-to-client interactions. Hopefully I'll be able to help your team out with developing a fix for this in time for my presentation, if not by identifying the above security concern. I am on a deadline, but I look forward to any input! :) Dave _________________________________________________________________ New: Messenger sign-in on the MSN homepage http://go.microsoft.com/?linkid=9677403