syncookies for pf.
authorhenning <henning@openbsd.org>
Tue, 6 Feb 2018 23:44:48 +0000 (23:44 +0000)
committerhenning <henning@openbsd.org>
Tue, 6 Feb 2018 23:44:48 +0000 (23:44 +0000)
commite66ff883f02721022cf398cc03fdd9e2bc661e94
tree6a39e19b32b0245971fd60f3d8fb5a6b8c656dc1
parentd28b993ccbb9662df1a3635bfa10b530fd5baf65
syncookies for pf.
when syncookies are on, pf will blindly answer each and every SYN with a
syncookie-SYNACK. Upon reception of the ACK completing the 3WHS, pf will
reconstruct the original SYN, shove it through pf_test, where state will
be created if the ruleset permits it. Then massage the freshly created state
(we won't see the SYNACK), set up the sequence number modulator, and call
into the existing synproxy code to start the 3WHS with the backend host.
Add an - somewhat basic for now - adaptive mode where syncookies get enabled
if a certain percentage of the state table is filled up with half-open tcp
connections. This makes pf firewalls resilient against large synflood
attacks.
syncookies are off by default until we gained more experience, considered
experimental for now.
see http://bulabula.org/papers/2017/bsdcan/ for more details.
joint work with sashan@, widely discussed and with lots of input by many
sys/conf/files
sys/net/pf.c
sys/net/pf_ioctl.c
sys/net/pfvar.h
sys/sys/mbuf.h