diff options
author | Kristof Provost <kp@FreeBSD.org> | 2021-06-30 13:27:46 +0000 |
---|---|---|
committer | Kristof Provost <kp@FreeBSD.org> | 2021-07-27 07:44:06 +0000 |
commit | 4aa52f90f71eb7d710da46e587354190d6df5566 (patch) | |
tree | 6e466aa5b779726b0cb46e7faef03a3c8b3a24ec | |
parent | 1156a429ebb13e18d41bbd7e18f612001733b493 (diff) | |
download | src-4aa52f90f71eb7d710da46e587354190d6df5566.tar.gz src-4aa52f90f71eb7d710da46e587354190d6df5566.zip |
pf tests: ensure syncookie does not create state
Test that with syncookies enabled pf does not create state for
connections before the remote peer has replied to the SYN|ACK message.
MFC after: 1 week
Sponsored by: Modirum MDPay
Differential Revision: https://reviews.freebsd.org/D31142
(cherry picked from commit 27ab791a55191c0b6503391d411303b042b41047)
-rw-r--r-- | tests/sys/netpfil/pf/syncookie.sh | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/sys/netpfil/pf/syncookie.sh b/tests/sys/netpfil/pf/syncookie.sh index 7bd045249be6..49acd9fab11d 100644 --- a/tests/sys/netpfil/pf/syncookie.sh +++ b/tests/sys/netpfil/pf/syncookie.sh @@ -27,6 +27,8 @@ . $(atf_get_srcdir)/utils.subr +common_dir=$(atf_get_srcdir)/../common + atf_test_case "forward" "cleanup" forward_head() { @@ -78,7 +80,54 @@ forward_cleanup() pft_cleanup } +atf_test_case "nostate" "cleanup" +nostate_head() +{ + atf_set descr 'Ensure that we do not create until SYN|ACK' + atf_set require.user root + atf_set require.progs scapy +} + +nostate_body() +{ + pft_init + + epair=$(vnet_mkepair) + ifconfig ${epair}a 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}b + jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "set syncookies always" \ + "pass in" \ + "pass out" + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + # Now syn flood to create many states + ${common_dir}/pft_synflood.py \ + --sendif ${epair}a \ + --to 192.0.2.2 \ + --count 20 + + states=$(jexec alcatraz pfctl -ss | grep tcp) + if [ -n "$states" ]; + then + echo "$states" + atf_fail "Found unexpected state" + fi +} + +nostate_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "forward" + atf_add_test_case "nostate" } |