]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commit
Add simple ARP spoofing protection
authorKevin Benton <blak111@gmail.com>
Sun, 29 Mar 2015 10:37:25 +0000 (03:37 -0700)
committerKevin Benton <blak111@gmail.com>
Mon, 30 Mar 2015 03:57:07 +0000 (20:57 -0700)
commitaa7356b729f9672855980429677c969b6bab61a1
treee43a839782b7d8661875876a8919191d29f43075
parent9debd891ff315cd94f88101e91728db29269b997
Add simple ARP spoofing protection

Adds an option to setup OVS rules that will prevent
ports attached to the agent from sending any ARP responses
that contain an IP address not belonging to the port
(in fixed IPs or allowed_address_pairs).

It is disabled by default and requires an OVS version that
can match on ARP fields. If it is too old, traffic will
still flow but it won't have ARP spoofing protection.
There is a sanity check to verify that ARP header matching
is supported.

This prevention is specific to OVS so it will not help with
other plugins that use the reference iptables filtering. A
non-OVS-specific general approach will require something like
the ebtables integration in Ibc6d3d520c1383cf7e00f4bdeb7853a41ac4b14b.

Details:
A new table is added for ARP spoofing prevention. All ARP traffic
on the local switching table is sent to this spoofing table.
The spoofing table will allow all ARP requests because we aren't
interested in them. It will then install an ARP response allow rule
for each IP address the port is assigned. All other ARP responses are
dropped.

DocImpact
SecurityImpact
Partial-Bug: #1274034

Change-Id: I7c079b779245a0af6bc793564fa8a560e4226afe
13 files changed:
etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
neutron/agent/common/ovs_lib.py
neutron/cmd/sanity/checks.py
neutron/cmd/sanity_check.py
neutron/plugins/ml2/rpc.py
neutron/plugins/openvswitch/agent/ovs_neutron_agent.py
neutron/plugins/openvswitch/common/config.py
neutron/plugins/openvswitch/common/constants.py
neutron/tests/functional/agent/test_ovs_flows.py [new file with mode: 0644]
neutron/tests/functional/agent/test_ovs_lib.py
neutron/tests/functional/sanity/test_sanity.py
neutron/tests/unit/plugins/openvswitch/agent/test_ovs_neutron_agent.py
neutron/tests/unit/plugins/openvswitch/test_ovs_tunnel.py