[strongSwan] blocking Strongswan VPN client-to-client traffic?

Chris Strong cstrong at cstrong.com
Thu Oct 10 19:37:44 CEST 2013


Strongswan,

How do I block client-to-client traffic in strongswan v4.6.4?I want to completely isolate the VPN clients from each other.

My implementation is simple. The closest example is http://strongswan.org/uml/testresults4/pfkey/rw-cert/index.html

When client VPN tunnels are connected to 'moon', roadwarrior 'carol' (in random hotel#1) and roadwarrior 'dave' (in random hotel#2) can access each other on their VPN tunnel assigned non-routable IPs! For example, if 'carol' is running a web server that binds to her VPN assigned non-routable, 'dave' can port scan and access 'carol' web server.

How do I block traffic between all VPN clients (eg: 'carol' and 'dave')? I've tried iptables INPUT, FORWARD, and OUTPUTbut have been unable to block the client-to-client traffic. The VPN client ACCEPT rules are added *above* the REJECT rule I added.

I've spent a great deal of effort getting 4.6.4 working and my attempts with 5.x have failed, so please don't ask me to upgrade.

The server configs are inline below. VPN clients get a 10.1.0.0/16 address and can access each other when connected to the strongswan server.

thanks,
Chris

# /etc/sysconfig/iptables FORWARD rules
-A FORWARD -m policy --dir in --pol ipsec -j ACCEPT
-A FORWARD -i ppp+ -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -s 10.1.0.0/16 -d 10.1.0.0/16 -j REJECT
-A FORWARD -p tcp -j ACCEPT
-A FORWARD -p udp -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# This is what the rules look like before any VPN clients connect
# note the REJECT line position
$ iptables –L
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere policy match dir in pol ipsec
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
REJECT all -- 10.1.0.0/16 10.1.0.0/16 reject-with icmp-port-unreachable
ACCEPT tcp -- anywhere anywhere
ACCEPT udp -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED

# live iptables after 10.1.0.6 and 10.1.0.7 connect.
# note VPN client ACCEPT rules are added *above* the reject
# Firewall policies are processed top down, so the REJECT line does absolutely nothing.
$ iptables –L
*snip*
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 10.1.0.7 anywhere policy match dir in pol ipsec reqid 16660 proto esp
ACCEPT all -- anywhere 10.1.0.7 policy match dir out pol ipsec reqid 16660 proto esp
ACCEPT all -- 10.1.0.6 anywhere policy match dir in pol ipsec reqid 16652 proto esp
ACCEPT all -- anywhere 10.1.0.6 policy match dir out pol ipsec reqid 16652 proto esp
ACCEPT all -- anywhere anywhere policy match dir in pol ipsec
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
REJECT all -- 10.1.0.0/16 10.1.0.0/16 reject-with icmp-port-unreachable
ACCEPT tcp -- anywhere anywhere
ACCEPT udp -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
*snip*

[root at e20-Strongswan etc]# cat strongswan.conf
# strongswan.conf - strongSwan configuration file

charon {

 # number of worker threads in charon
 threads = 32

 # send strongswan vendor ID?
 # send_vendor_id = yes

 plugins {

 sql {
 # loglevel to log into sql database
 loglevel = -1

 # URI to the database
 # database = sqlite:///path/to/file.db
 # database = mysql://user:password@localhost/database
 }
 }

 # ...
}

pluto {
 dns1 = 10.1.0.253
}

libstrongswan {

 # set to no, the DH exponent size is optimized
 # dh_exponent_ansi_x9_42 = no
}


[root at e20-Strongswan etc]# cat ipsec.conf
config setup
 plutodebug=control
 plutostart=yes
 plutostderrlog=/var/log/pluto.log
 nat_traversal=yes
 uniqueids=yes
 crlcheckinterval=60
 cachecrls=yes
 strictcrlpolicy=yes

ca $default
 auto=add

conn ios
 type=tunnel
 keyexchange=ikev1
 authby=xauthrsasig
 xauth=server
 left=%defaultroute
 leftsubnet=0.0.0.0/0
 leftcert=serverCert.pem
 leftfirewall=yes
 right=%any
 rightsourceip=10.1.0.0/16
 pfs=no
 auto=add



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strongswan.org/pipermail/users/attachments/20131010/1bc80fce/attachment.html>


More information about the Users mailing list