]> git.ipfire.org Git - thirdparty/pdns.git/commit
dnsdist: Add mitigations against misbehaving TCP/TLS clients
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 28 Mar 2025 14:52:08 +0000 (15:52 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 31 Mar 2025 14:19:05 +0000 (16:19 +0200)
commitc5cabe15e4ae707b8360bc19c3043b2a6b6bff7f
treea6591fafdea1865cf149dea9f3a30a2e4f3f9b1b
parent04ea8166312987a9f98b3c5c6c80d964c1815205
dnsdist: Add mitigations against misbehaving TCP/TLS clients

This commit adds several mitigations against misbehaving TCP/TLS clients:
- when a client is near the limit of concurrent TCP connections it is
allowed to have, the number of DNS queries over a single TCP connection
is restricted to 1 and the idle timout is reduced to 500 ms
- the same restrictions are applied to all connections if the frontend
is near the limit of concurrent TCP connections
- a limit of 50 read I/O events per query is enforced on incoming TCP
connections, to prevent a connection from continuously sending very small
packets to keep the worker busy. Clients exceeding this limit can
be prevented from opening new TCP connections for a configurable
amount of time
- three new configurable rates are introduced: new TCP connections
per second per client, new TLS sessions per second per client,
resumed TLS sessions per secondper client. Clients exceeding these
rates can be prevented from opening new TCP connections for a
configurable amount of time
22 files changed:
pdns/dnsdistdist/Makefile.am
pdns/dnsdistdist/dnsdist-carbon.cc
pdns/dnsdistdist/dnsdist-concurrent-connections.cc [new file with mode: 0644]
pdns/dnsdistdist/dnsdist-concurrent-connections.hh
pdns/dnsdistdist/dnsdist-configuration.hh
pdns/dnsdistdist/dnsdist-console.cc
pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
pdns/dnsdistdist/dnsdist-lua-inspection.cc
pdns/dnsdistdist/dnsdist-nghttp2-in.cc
pdns/dnsdistdist/dnsdist-rust-lib/dnsdist-configuration-yaml-items-generated.cc
pdns/dnsdistdist/dnsdist-rust-lib/rust/src/lib.rs
pdns/dnsdistdist/dnsdist-settings-definitions.yml
pdns/dnsdistdist/dnsdist-tcp-upstream.hh
pdns/dnsdistdist/dnsdist-tcp.cc
pdns/dnsdistdist/dnsdist-tcp.hh
pdns/dnsdistdist/dnsdist-web.cc
pdns/dnsdistdist/dnsdist.hh
pdns/dnsdistdist/docs/reference/tuning.rst
pdns/dnsdistdist/docs/reference/yaml-settings.rst
pdns/dnsdistdist/doh.cc
pdns/dnsdistdist/meson.build
regression-tests.dnsdist/test_TCPLimits.py