diff options
author | Eric Dumazet <edumazet@google.com> | 2012-07-17 10:13:05 +0200 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2013-01-16 01:13:25 +0000 |
commit | 61f69dc4e40e41b0018f00fa4aeb23d3239556fb (patch) | |
tree | 45e2dd9ffbe32aee06acdab13c57e2985f2341db /include | |
parent | 254a98481ae19da3e98440afbfefa25d1b322dac (diff) |
tcp: implement RFC 5961 3.2
[ Upstream commit 282f23c6ee343126156dd41218b22ece96d747e3 ]
Implement the RFC 5691 mitigation against Blind
Reset attack using RST bit.
Idea is to validate incoming RST sequence,
to match RCV.NXT value, instead of previouly accepted
window : (RCV.NXT <= SEG.SEQ < RCV.NXT+RCV.WND)
If sequence is in window but not an exact match, send
a "challenge ACK", so that the other part can resend an
RST with the appropriate sequence.
Add a new sysctl, tcp_challenge_ack_limit, to limit
number of challenge ACK sent per second.
Add a new SNMP counter to count number of challenge acks sent.
(netstat -s | grep TCPChallengeACK)
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Kiran Kumar Kella <kkiran@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/snmp.h | 1 | ||||
-rw-r--r-- | include/net/tcp.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/snmp.h b/include/linux/snmp.h index e16557a357e5..6e310bbb43b6 100644 --- a/include/linux/snmp.h +++ b/include/linux/snmp.h @@ -233,6 +233,7 @@ enum LINUX_MIB_TCPTIMEWAITOVERFLOW, /* TCPTimeWaitOverflow */ LINUX_MIB_TCPREQQFULLDOCOOKIES, /* TCPReqQFullDoCookies */ LINUX_MIB_TCPREQQFULLDROP, /* TCPReqQFullDrop */ + LINUX_MIB_TCPCHALLENGEACK, /* TCPChallengeACK */ __LINUX_MIB_MAX }; diff --git a/include/net/tcp.h b/include/net/tcp.h index bb18c4d69aba..0768715ee4dd 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -251,6 +251,7 @@ extern int sysctl_tcp_max_ssthresh; extern int sysctl_tcp_cookie_size; extern int sysctl_tcp_thin_linear_timeouts; extern int sysctl_tcp_thin_dupack; +extern int sysctl_tcp_challenge_ack_limit; extern atomic_long_t tcp_memory_allocated; extern struct percpu_counter tcp_sockets_allocated; |