SlideShare a Scribd company logo
Kernel HTTPS/TCP/IP stack
for HTTP DDoS mitigation
Alexander Krizhanovsky
Tempesta Technologies, Inc.
ak@tempesta-tech.com
Who am I?
CEO & CTO at Tempesta Technologies
Developing Tempesta FW – open source Linux
Application Delivery Controller (ADC)
Custom software development in:
● high performance network traffic processing
● Databases
e.g. MariaDB SQL System Versioning
https://github.com/tempesta-tech/mariadb
https://m17.mariadb.com/session/technical-preview-temporal-queryi
ng-asof
HTTPS challenges
HTTP(S) is a core protocol for the Internet
(IoT, SaaS, Social networks etc.)
HTTP(S) DDoS is tricky
● Asymmetric DDoS (compression, TLS handshake etc.)
● A lot of IP addresses with low traffic
● Machine learning is used for clustering
● How to filter out all HTTP requests with
“Host: www.example.com:80”?
● "Lessons From Defending The Indefensible":
https://www.youtube.com/watch?v=pCVTEx1ouyk
TCP stream filter
IPtables strings, BPF, XDP, NIC filters
● HTTP headers can cross packet bounds
● Scan large URI or Cookie for Host value?
Web accelerator
● aren’t designed (suitable) for HTTP filtering
IPS vs HTTP DDoS
e.g. Suricata, has powerful rules syntax at L3-L7
Not a TCP end point => evasions are possible
SSL/TLS
SSL terminator is required => many data copies & context switches
or double SSL processing (at IDS & at Web server)
Double HTTP parsing
Doesn’t improve Web server peroformance (mitigation != prevention)
Interbreed an HTTP accelerator and a firewall
TCP & TLS end point
Very fast HTTP parser to process HTTP floods
Network I/O optimized for massive ingress traffic
Advanced filtering abilities at all network layers
Very fast Web cache to mitigate DDoS which we can’t filter out
● ML takes some time for bots clusterization
● False negatives are unavoidable
Application Delivery Controller (ADC)
Application layer DDoS
Service from Cache Rate limit
Nginx 22us 23us
(Additional logic in limiting module)
Fail2Ban: write to the log, parse the log, write to the log, parse the
log…
Application layer DDoS
Service from Cache Rate limit
Nginx 22us 23us
(Additional logic in limiting module)
Fail2Ban: write to the log, parse the log, write to the log, parse the
log… - really in 21th century?!
tight integration of Web accelerator and a firewall is needed
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering etc.
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering? etc.
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering? etc.
● C10K
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering? etc.
● C10K – is it a problem for bot-net? SSL? CORNER
●
what about tons of 'GET / HTTP/1.0nn'? CASES!
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering? etc.
● C10K – is it a problem for bot-net? SSL? CORNER
●
what about tons of 'GET / HTTP/1.0nn'? CASES!
Kernel-mode Web-accelerators: TUX, kHTTPd
● basically the same sockets and threads
● zero-copy → sendfile(), lazy TLB
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering? etc.
● C10K – is it a problem for bot-net? SSL? CORNER
●
what about tons of 'GET / HTTP/1.0nn'? CASES!
Kernel-mode Web-accelerators: TUX, kHTTPd
● basically the same sockets and threads
● zero-copy → sendfile(), lazy TLB => not needed
Web-accelerator capabilities
Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc.
● cache static Web-content
● load balancing
● rewrite URLs, ACL, Geo, filtering? etc.
● C10K – is it a problem for bot-net? SSL? CORNER
●
what about tons of 'GET / HTTP/1.0nn'? CASES!
Kernel-mode Web-accelerators: TUX, kHTTPd NEED AGAIN
● basically the same sockets and threads TO MITIGATE
● zero-copy → sendfile(), lazy TLB => not needed HTTPS DDOS
Web-accelerators are slow: SSL/TLS copying
User-kernel space copying
● Copy network data to user space
● Encrypt/decrypt it
● Copy the date to kernel for transmission
Kernel-mode TLS
● Facebook,RedHat: https://lwn.net/Articles/666509/
● Netflix: https://people.freebsd.org/~rrs/asiabsd_2015_tls.pdf
● TLS handshake is still an issue
● TLS 1.3 is good, but DDoS bots can be legacy clients
Web-accelerators are slow: profile
% symbol name
1.5719 ngx_http_parse_header_line
1.0303 ngx_vslprintf
0.6401 memcpy
0.5807 recv
0.5156 ngx_linux_sendfile_chain
0.4990 ngx_http_limit_req_handler
=> flat profile
Web-accelerators are slow: syscalls
epoll_wait(.., {{EPOLLIN, ....}},...)
recvfrom(3, "GET / HTTP/1.1rnHost:...", ...)
write(1, “...limiting requests, excess...", ...)
writev(3, "HTTP/1.1 503 Service...", ...)
sendfile(3,..., 383)
recvfrom(3, ...) = -1 EAGAIN
epoll_wait(.., {{EPOLLIN, ....}}, ...)
recvfrom(3, "", 1024, 0, NULL, NULL) = 0
close(3)
Web-accelerators are slow: HTTP parser
Start: state = 1, *str_ptr = 'b'
while (++str_ptr) {
switch (state) { <= check state
case 1:
switch (*str_ptr) {
case 'a':
...
state = 1
case 'b':
...
state = 2
}
case 2:
...
}
...
}
Web-accelerators are slow: HTTP parser
Start: state = 1, *str_ptr = 'b'
while (++str_ptr) {
switch (state) {
case 1:
switch (*str_ptr) {
case 'a':
...
state = 1
case 'b':
...
state = 2 <= set state
}
case 2:
...
}
...
}
Web-accelerators are slow: HTTP parser
Start: state = 1, *str_ptr = 'b'
while (++str_ptr) {
switch (state) {
case 1:
switch (*str_ptr) {
case 'a':
...
state = 1
case 'b':
...
state = 2
}
case 2:
...
}
... <= jump to while
}
Web-accelerators are slow: HTTP parser
Start: state = 1, *str_ptr = 'b'
while (++str_ptr) {
switch (state) { <= check state
case 1:
switch (*str_ptr) {
case 'a':
...
state = 1
case 'b':
...
state = 2
}
case 2:
...
}
...
}
Web-accelerators are slow: HTTP parser
Start: state = 1, *str_ptr = 'b'
while (++str_ptr) {
switch (state) {
case 1:
switch (*str_ptr) {
case 'a':
...
state = 1
case 'b':
...
state = 2
}
case 2:
... <= do something
}
...
}
Web-accelerators are slow: HTTP parser
Web-accelerators are slow: strings
We have AVX2, but GLIBC doesn’t still use it
HTTP strings are special:
● No ‘0’-termination (if you’re zero-copy)
● Special delimiters (‘:’ or CRLF)
●
strcasecmp(): no need case conversion for one string
●
strspn(): limited number of accepted alphabets
switch()-driven FSM is even worse
Fast HTTP parser
http://natsys-lab.blogspot.ru/2014/11/the-fast-finite-state-machine-for-
http.html
● 1.6-1.8 times faster than Nginx’s
HTTP optimized AVX2 strings processing:
http://natsys-lab.blogspot.ru/2016/10/http-strings-processing-using-c-
sse42.html
● ~1KB strings:
● strncasecmp() ~x3 faster than GLIBC’s
● URI matching ~x6 faster than GLIBC’s strspn()
● kernel_fpu_begin()/kernel_fpu_end() for whole softirq shot
HTTP strong validation
TODO: https://github.com/tempesta-tech/tempesta/issues/628
Injections: specify allowed URI characters for a Web app
Resistant to large HTTP fields
Web-accelerators are slow: async I/O
Web-accelerators are slow: async I/O
Web-accelerators are slow: async I/O
Web-accelerators are slow: async I/O
Web cache also
resides In CPU
caches and evicts
requests
HTTPS/TCP/IP stack
Alternative to user space TCP/IP stacks
HTTPS is built into TCP/IP stack
Kernel TLS (fork from mbedTLS) – no copying
(1 human month to port TLS to kernel!)
HTTP firewall plus to IPtables and Socket filter
Very fast HTTP parser and strings processing using AVX2
Cache-conscious in-memory Web-cache for DDoS mitigation
TODO
HTTP QoS for asymmetric DDoS mitigation
DSL for multi-layer filter rules
Tempesta FW
TODO: HTTP QoS
for asymmetric DDoS mitigation
https://github.com/tempesta-tech/tempesta/issues/488
“Web2K: Bringing QoS to Web Servers” by Preeti Bhoj et al.
Local stress: packet drops, queues overrun, response latency etc
(kernel: cheap statistics for asymmetric DDoS)
Upsream stress: req_num / resp_num, response time etc.
Static QoS rules per vhost: HTTP RPS, integration w/ Qdisc - TBD
Actions: reduce TCP window, don’t accept new connections,
close existing connections
Synchronous sockets: HTTPS/TCP/IP stack
Socket callbacks call TLS and
HTTP processing
Everything is processing in
softirq (while the data is hot)
No receive & accept queues
No file descriptors
Less locking
Synchronous sockets: HTTPS/TCP/IP stack
Socket callbacks call TLS and
HTTP processing
Everything is processing in
softirq (while the data is hot)
No receive & accept queues
No file descriptors
Less locking
Lock-free inter-CPU transport
=> faster socket reading
=> lower latency
skb page allocator:
zero-copy HTTP messages adjustment
Add/remove/update HTTP
headers w/o copies
skb and its head are
allocated in the same
page fragment or
a compound page
skb page allocator:
zero-copy HTTP messages adjustment
Add/remove/update HTTP
headers w/o copies
skb and its head are allocated
in the same page fragment or a
compound page
Sticky cookie
User/session identification
● Cookie challenge for dummy DDoS bots
● Persistent/sessions scheduling (no rescheduling on a server failure)
Enforce: HTTP 302 redirect
sticky name=__tfw_user_id__ enforce;
Sticky cookie
User/session identification
● Cookie challenge for dummy DDoS bots
● Persistent/sessions scheduling (no rescheduling on a server failure)
Enforce: HTTP 302 redirect
sticky name=__tfw_user_id__ enforce;
TODO: JavaScript challenge
https://github.com/tempesta-tech/tempesta/issues/536
TODO: Tempesta language
https://github.com/tempesta-tech/tempesta/issues/102
if ((req.user_agent =~ /firefox/i
|| req.cookie !~ /^our_tracking_cookie/)
&& (req.x_forwarded_for != "1.1.1.1"
|| client.addr == 1.1.1.1))
# Block the client at IP layer, so it will be filtered
# efficiently w/o further HTTP processing.
tdb.insert("ip_filter", client.addr, evict=10000);
Frang: HTTP DoS
Rate limits
● request_rate, request_burst
● connection_rate, connection_burst
● concurrent_connections
Slow HTTP
● client_header_timeout, client_body_timeout
● http_header_cnt
● http_header_chunk_cnt, http_body_chunk_cnt
Frang: WAF
Length limits: http_uri_len, http_field_len, http_body_len
Content validation: http_host_required, http_ct_required,
http_ct_vals, http_methods
HTTP Response Splitting: count and match requests and responses
Injections: carefully verify allowed character sets
...and many upcoming filters:
https://github.com/tempesta-tech/tempesta/labels/security
Not a featureful WAF
WAF accelerator
Just like Web accelerator
Advanced load balancing:
● Server groups by any HTTP field
● Rendezvous hashing
● Ratio
● Adaptive & predictive
Some DDoS attacks can be just
normally serviced
Performance
https://github.com/tempesta-tech/tempesta/wiki/HTTP-cache-performance
Performance analysis: software & hardware
“NGINX Plus vs. F5 BIG‑IP:
A Price‑Performance Comparison”
https://www.nginx.com/blog/
nginx-plus-vs-f5-big-ip-a-price-
performance-comparison/
Nginx: ~600K HTTP RPS
w/o access log
Difference must be larger for HTTP
DDoS blocking
(DDoS emulation is an issue)
Performance analysis: kernel bypass
Similar to DPDK/user-space TCP/IP stacks
http://www.seastar-project.org/
http-performance/
...bypassing Linux TCP/IP
isn’t the only way to get a fast Web
server
...lives in Linux infrastructure:
LVS, tc, IPtables, eBPF, tcpdump etc.
Keep the kernel small
Just 30K LoC (compare w/ 120K LoC of BtrFS)
Only generic and crucial HTTPS logic is in kernel
Supplementary logic is considered for user space
● HTTP compression & decompression
https://github.com/tempesta-tech/tempesta/issues/636
● Advanced DDoS mitigation & WAF (e.g. full POST processing)
● ...other HTTP users (Web frameworks?)
Zero-copy kernel-user space transport for minimizing kernel code
TODO:
Zero-copy kernel-user space transport
HTTPS DDoS mitigation & WAF
● Machine learning
clusterization in user space
● Automatic L3-L7 filtering
rules generation
Thanks!
Web-site: http://tempesta-tech.com (Powered by Tempesta FW)
No failures for the year
Availability: https://github.com/tempesta-tech/tempesta
Blog: http://natsys-lab.blogspot.com
E-mail: ak@tempesta-tech.com

More Related Content

What's hot

Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1
PacSecJP
 
Attacking http2 implementations (1)
Attacking http2 implementations (1)Attacking http2 implementations (1)
Attacking http2 implementations (1)
John Villamil
 
Apache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatApache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and Tomcat
Jean-Frederic Clere
 
Multi tier-app-network-topology-neutron-final
Multi tier-app-network-topology-neutron-finalMulti tier-app-network-topology-neutron-final
Multi tier-app-network-topology-neutron-final
Sadique Puthen
 
Defeating The Network Security Infrastructure V1.0
Defeating The Network Security Infrastructure  V1.0Defeating The Network Security Infrastructure  V1.0
Defeating The Network Security Infrastructure V1.0
Philippe Bogaerts
 
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaSOpenstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Sadique Puthen
 
MySQL High Availability Sprint: Launch the Pacemaker
MySQL High Availability Sprint: Launch the PacemakerMySQL High Availability Sprint: Launch the Pacemaker
MySQL High Availability Sprint: Launch the Pacemaker
hastexo
 
Clug 2012 March web server optimisation
Clug 2012 March   web server optimisationClug 2012 March   web server optimisation
Clug 2012 March web server optimisation
grooverdan
 
Abusing Microsoft Kerberos - Sorry you guys don’t get it
Abusing Microsoft Kerberos - Sorry you guys don’t get itAbusing Microsoft Kerberos - Sorry you guys don’t get it
Abusing Microsoft Kerberos - Sorry you guys don’t get it
E Hacking
 
Troubleshooting containerized triple o deployment
Troubleshooting containerized triple o deploymentTroubleshooting containerized triple o deployment
Troubleshooting containerized triple o deployment
Sadique Puthen
 
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep DiveNeutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Mirantis
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to Haproxy
Shaopeng He
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP server
Kazuho Oku
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
Jurriaan Persyn
 
Web acceleration mechanics
Web acceleration mechanicsWeb acceleration mechanics
Web acceleration mechanics
Alexander Krizhanovsky
 
OpenTSDB: HBaseCon2017
OpenTSDB: HBaseCon2017OpenTSDB: HBaseCon2017
OpenTSDB: HBaseCon2017
HBaseCon
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 server
Kazuho Oku
 
gRPC
gRPCgRPC
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forks
Command Prompt., Inc
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and Pacemaker
Marian Marinov
 

What's hot (20)

Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1
 
Attacking http2 implementations (1)
Attacking http2 implementations (1)Attacking http2 implementations (1)
Attacking http2 implementations (1)
 
Apache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatApache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and Tomcat
 
Multi tier-app-network-topology-neutron-final
Multi tier-app-network-topology-neutron-finalMulti tier-app-network-topology-neutron-final
Multi tier-app-network-topology-neutron-final
 
Defeating The Network Security Infrastructure V1.0
Defeating The Network Security Infrastructure  V1.0Defeating The Network Security Infrastructure  V1.0
Defeating The Network Security Infrastructure V1.0
 
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaSOpenstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
 
MySQL High Availability Sprint: Launch the Pacemaker
MySQL High Availability Sprint: Launch the PacemakerMySQL High Availability Sprint: Launch the Pacemaker
MySQL High Availability Sprint: Launch the Pacemaker
 
Clug 2012 March web server optimisation
Clug 2012 March   web server optimisationClug 2012 March   web server optimisation
Clug 2012 March web server optimisation
 
Abusing Microsoft Kerberos - Sorry you guys don’t get it
Abusing Microsoft Kerberos - Sorry you guys don’t get itAbusing Microsoft Kerberos - Sorry you guys don’t get it
Abusing Microsoft Kerberos - Sorry you guys don’t get it
 
Troubleshooting containerized triple o deployment
Troubleshooting containerized triple o deploymentTroubleshooting containerized triple o deployment
Troubleshooting containerized triple o deployment
 
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep DiveNeutron Network Namespaces and IPtables--A Technical Deep Dive
Neutron Network Namespaces and IPtables--A Technical Deep Dive
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to Haproxy
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP server
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 
Web acceleration mechanics
Web acceleration mechanicsWeb acceleration mechanics
Web acceleration mechanics
 
OpenTSDB: HBaseCon2017
OpenTSDB: HBaseCon2017OpenTSDB: HBaseCon2017
OpenTSDB: HBaseCon2017
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 server
 
gRPC
gRPCgRPC
gRPC
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forks
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and Pacemaker
 

Similar to Стек Linux HTTPS/TCP/IP для защиты от HTTP-DDoS-атак

Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
All Things Open
 
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Ontico
 
Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...
Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...
Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...
Ontico
 
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Ontico
 
Web Performance Optimization with HTTP/3
Web Performance Optimization with HTTP/3Web Performance Optimization with HTTP/3
Web Performance Optimization with HTTP/3
SangJin Kang
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014
bryan_call
 
Haproxy - zastosowania
Haproxy - zastosowaniaHaproxy - zastosowania
Haproxy - zastosowania
Łukasz Jagiełło
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
Walter Liu
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
Ido Flatow
 
Http2 in practice
Http2 in practiceHttp2 in practice
Http2 in practice
Patrick Meenan
 
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
Jean-Frederic Clere
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
Ido Flatow
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
Ido Flatow
 
Less and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developersLess and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developers
Seravo
 
Woo: Writing a fast web server @ ELS2015
Woo: Writing a fast web server @ ELS2015Woo: Writing a fast web server @ ELS2015
Woo: Writing a fast web server @ ELS2015
fukamachi
 
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
DataWorks Summit/Hadoop Summit
 
Socket programming, and openresty
Socket programming, and openrestySocket programming, and openresty
Socket programming, and openresty
Tavish Naruka
 
Elasticsearch on Kubernetes
Elasticsearch on KubernetesElasticsearch on Kubernetes
Elasticsearch on Kubernetes
Joerg Henning
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
Sreenivas Makam
 
Scaling asp.net websites to millions of users
Scaling asp.net websites to millions of usersScaling asp.net websites to millions of users
Scaling asp.net websites to millions of users
oazabir
 

Similar to Стек Linux HTTPS/TCP/IP для защиты от HTTP-DDoS-атак (20)

Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
 
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
 
Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...
Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...
Tempesta FW - Framework и Firewall для WAF и DDoS mitigation, Александр Крижа...
 
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
 
Web Performance Optimization with HTTP/3
Web Performance Optimization with HTTP/3Web Performance Optimization with HTTP/3
Web Performance Optimization with HTTP/3
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014
 
Haproxy - zastosowania
Haproxy - zastosowaniaHaproxy - zastosowania
Haproxy - zastosowania
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Http2 in practice
Http2 in practiceHttp2 in practice
Http2 in practice
 
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Less and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developersLess and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developers
 
Woo: Writing a fast web server @ ELS2015
Woo: Writing a fast web server @ ELS2015Woo: Writing a fast web server @ ELS2015
Woo: Writing a fast web server @ ELS2015
 
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
 
Socket programming, and openresty
Socket programming, and openrestySocket programming, and openresty
Socket programming, and openresty
 
Elasticsearch on Kubernetes
Elasticsearch on KubernetesElasticsearch on Kubernetes
Elasticsearch on Kubernetes
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
 
Scaling asp.net websites to millions of users
Scaling asp.net websites to millions of usersScaling asp.net websites to millions of users
Scaling asp.net websites to millions of users
 

More from Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Positive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Positive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
Positive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
Positive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
Positive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
Positive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
Positive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
Positive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
Positive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
Positive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
Positive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Positive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
Positive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
Positive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
Positive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
Positive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
Positive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
Positive Hack Days
 

More from Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Recently uploaded

Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 

Recently uploaded (20)

Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 

Стек Linux HTTPS/TCP/IP для защиты от HTTP-DDoS-атак

  • 1. Kernel HTTPS/TCP/IP stack for HTTP DDoS mitigation Alexander Krizhanovsky Tempesta Technologies, Inc. ak@tempesta-tech.com
  • 2. Who am I? CEO & CTO at Tempesta Technologies Developing Tempesta FW – open source Linux Application Delivery Controller (ADC) Custom software development in: ● high performance network traffic processing ● Databases e.g. MariaDB SQL System Versioning https://github.com/tempesta-tech/mariadb https://m17.mariadb.com/session/technical-preview-temporal-queryi ng-asof
  • 3. HTTPS challenges HTTP(S) is a core protocol for the Internet (IoT, SaaS, Social networks etc.) HTTP(S) DDoS is tricky ● Asymmetric DDoS (compression, TLS handshake etc.) ● A lot of IP addresses with low traffic ● Machine learning is used for clustering ● How to filter out all HTTP requests with “Host: www.example.com:80”? ● "Lessons From Defending The Indefensible": https://www.youtube.com/watch?v=pCVTEx1ouyk
  • 4. TCP stream filter IPtables strings, BPF, XDP, NIC filters ● HTTP headers can cross packet bounds ● Scan large URI or Cookie for Host value? Web accelerator ● aren’t designed (suitable) for HTTP filtering
  • 5. IPS vs HTTP DDoS e.g. Suricata, has powerful rules syntax at L3-L7 Not a TCP end point => evasions are possible SSL/TLS SSL terminator is required => many data copies & context switches or double SSL processing (at IDS & at Web server) Double HTTP parsing Doesn’t improve Web server peroformance (mitigation != prevention)
  • 6. Interbreed an HTTP accelerator and a firewall TCP & TLS end point Very fast HTTP parser to process HTTP floods Network I/O optimized for massive ingress traffic Advanced filtering abilities at all network layers Very fast Web cache to mitigate DDoS which we can’t filter out ● ML takes some time for bots clusterization ● False negatives are unavoidable
  • 8. Application layer DDoS Service from Cache Rate limit Nginx 22us 23us (Additional logic in limiting module) Fail2Ban: write to the log, parse the log, write to the log, parse the log…
  • 9. Application layer DDoS Service from Cache Rate limit Nginx 22us 23us (Additional logic in limiting module) Fail2Ban: write to the log, parse the log, write to the log, parse the log… - really in 21th century?! tight integration of Web accelerator and a firewall is needed
  • 10. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering etc.
  • 11. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering? etc.
  • 12. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering? etc. ● C10K
  • 13. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering? etc. ● C10K – is it a problem for bot-net? SSL? CORNER ● what about tons of 'GET / HTTP/1.0nn'? CASES!
  • 14. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering? etc. ● C10K – is it a problem for bot-net? SSL? CORNER ● what about tons of 'GET / HTTP/1.0nn'? CASES! Kernel-mode Web-accelerators: TUX, kHTTPd ● basically the same sockets and threads ● zero-copy → sendfile(), lazy TLB
  • 15. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering? etc. ● C10K – is it a problem for bot-net? SSL? CORNER ● what about tons of 'GET / HTTP/1.0nn'? CASES! Kernel-mode Web-accelerators: TUX, kHTTPd ● basically the same sockets and threads ● zero-copy → sendfile(), lazy TLB => not needed
  • 16. Web-accelerator capabilities Nginx, Varnish, Apache Traffic Server, Squid, Apache HTTPD etc. ● cache static Web-content ● load balancing ● rewrite URLs, ACL, Geo, filtering? etc. ● C10K – is it a problem for bot-net? SSL? CORNER ● what about tons of 'GET / HTTP/1.0nn'? CASES! Kernel-mode Web-accelerators: TUX, kHTTPd NEED AGAIN ● basically the same sockets and threads TO MITIGATE ● zero-copy → sendfile(), lazy TLB => not needed HTTPS DDOS
  • 17. Web-accelerators are slow: SSL/TLS copying User-kernel space copying ● Copy network data to user space ● Encrypt/decrypt it ● Copy the date to kernel for transmission Kernel-mode TLS ● Facebook,RedHat: https://lwn.net/Articles/666509/ ● Netflix: https://people.freebsd.org/~rrs/asiabsd_2015_tls.pdf ● TLS handshake is still an issue ● TLS 1.3 is good, but DDoS bots can be legacy clients
  • 18. Web-accelerators are slow: profile % symbol name 1.5719 ngx_http_parse_header_line 1.0303 ngx_vslprintf 0.6401 memcpy 0.5807 recv 0.5156 ngx_linux_sendfile_chain 0.4990 ngx_http_limit_req_handler => flat profile
  • 19. Web-accelerators are slow: syscalls epoll_wait(.., {{EPOLLIN, ....}},...) recvfrom(3, "GET / HTTP/1.1rnHost:...", ...) write(1, “...limiting requests, excess...", ...) writev(3, "HTTP/1.1 503 Service...", ...) sendfile(3,..., 383) recvfrom(3, ...) = -1 EAGAIN epoll_wait(.., {{EPOLLIN, ....}}, ...) recvfrom(3, "", 1024, 0, NULL, NULL) = 0 close(3)
  • 20. Web-accelerators are slow: HTTP parser Start: state = 1, *str_ptr = 'b' while (++str_ptr) { switch (state) { <= check state case 1: switch (*str_ptr) { case 'a': ... state = 1 case 'b': ... state = 2 } case 2: ... } ... }
  • 21. Web-accelerators are slow: HTTP parser Start: state = 1, *str_ptr = 'b' while (++str_ptr) { switch (state) { case 1: switch (*str_ptr) { case 'a': ... state = 1 case 'b': ... state = 2 <= set state } case 2: ... } ... }
  • 22. Web-accelerators are slow: HTTP parser Start: state = 1, *str_ptr = 'b' while (++str_ptr) { switch (state) { case 1: switch (*str_ptr) { case 'a': ... state = 1 case 'b': ... state = 2 } case 2: ... } ... <= jump to while }
  • 23. Web-accelerators are slow: HTTP parser Start: state = 1, *str_ptr = 'b' while (++str_ptr) { switch (state) { <= check state case 1: switch (*str_ptr) { case 'a': ... state = 1 case 'b': ... state = 2 } case 2: ... } ... }
  • 24. Web-accelerators are slow: HTTP parser Start: state = 1, *str_ptr = 'b' while (++str_ptr) { switch (state) { case 1: switch (*str_ptr) { case 'a': ... state = 1 case 'b': ... state = 2 } case 2: ... <= do something } ... }
  • 26. Web-accelerators are slow: strings We have AVX2, but GLIBC doesn’t still use it HTTP strings are special: ● No ‘0’-termination (if you’re zero-copy) ● Special delimiters (‘:’ or CRLF) ● strcasecmp(): no need case conversion for one string ● strspn(): limited number of accepted alphabets switch()-driven FSM is even worse
  • 27. Fast HTTP parser http://natsys-lab.blogspot.ru/2014/11/the-fast-finite-state-machine-for- http.html ● 1.6-1.8 times faster than Nginx’s HTTP optimized AVX2 strings processing: http://natsys-lab.blogspot.ru/2016/10/http-strings-processing-using-c- sse42.html ● ~1KB strings: ● strncasecmp() ~x3 faster than GLIBC’s ● URI matching ~x6 faster than GLIBC’s strspn() ● kernel_fpu_begin()/kernel_fpu_end() for whole softirq shot
  • 28. HTTP strong validation TODO: https://github.com/tempesta-tech/tempesta/issues/628 Injections: specify allowed URI characters for a Web app Resistant to large HTTP fields
  • 32. Web-accelerators are slow: async I/O Web cache also resides In CPU caches and evicts requests
  • 33. HTTPS/TCP/IP stack Alternative to user space TCP/IP stacks HTTPS is built into TCP/IP stack Kernel TLS (fork from mbedTLS) – no copying (1 human month to port TLS to kernel!) HTTP firewall plus to IPtables and Socket filter Very fast HTTP parser and strings processing using AVX2 Cache-conscious in-memory Web-cache for DDoS mitigation TODO HTTP QoS for asymmetric DDoS mitigation DSL for multi-layer filter rules
  • 35. TODO: HTTP QoS for asymmetric DDoS mitigation https://github.com/tempesta-tech/tempesta/issues/488 “Web2K: Bringing QoS to Web Servers” by Preeti Bhoj et al. Local stress: packet drops, queues overrun, response latency etc (kernel: cheap statistics for asymmetric DDoS) Upsream stress: req_num / resp_num, response time etc. Static QoS rules per vhost: HTTP RPS, integration w/ Qdisc - TBD Actions: reduce TCP window, don’t accept new connections, close existing connections
  • 36. Synchronous sockets: HTTPS/TCP/IP stack Socket callbacks call TLS and HTTP processing Everything is processing in softirq (while the data is hot) No receive & accept queues No file descriptors Less locking
  • 37. Synchronous sockets: HTTPS/TCP/IP stack Socket callbacks call TLS and HTTP processing Everything is processing in softirq (while the data is hot) No receive & accept queues No file descriptors Less locking Lock-free inter-CPU transport => faster socket reading => lower latency
  • 38. skb page allocator: zero-copy HTTP messages adjustment Add/remove/update HTTP headers w/o copies skb and its head are allocated in the same page fragment or a compound page
  • 39. skb page allocator: zero-copy HTTP messages adjustment Add/remove/update HTTP headers w/o copies skb and its head are allocated in the same page fragment or a compound page
  • 40. Sticky cookie User/session identification ● Cookie challenge for dummy DDoS bots ● Persistent/sessions scheduling (no rescheduling on a server failure) Enforce: HTTP 302 redirect sticky name=__tfw_user_id__ enforce;
  • 41. Sticky cookie User/session identification ● Cookie challenge for dummy DDoS bots ● Persistent/sessions scheduling (no rescheduling on a server failure) Enforce: HTTP 302 redirect sticky name=__tfw_user_id__ enforce; TODO: JavaScript challenge https://github.com/tempesta-tech/tempesta/issues/536
  • 42. TODO: Tempesta language https://github.com/tempesta-tech/tempesta/issues/102 if ((req.user_agent =~ /firefox/i || req.cookie !~ /^our_tracking_cookie/) && (req.x_forwarded_for != "1.1.1.1" || client.addr == 1.1.1.1)) # Block the client at IP layer, so it will be filtered # efficiently w/o further HTTP processing. tdb.insert("ip_filter", client.addr, evict=10000);
  • 43. Frang: HTTP DoS Rate limits ● request_rate, request_burst ● connection_rate, connection_burst ● concurrent_connections Slow HTTP ● client_header_timeout, client_body_timeout ● http_header_cnt ● http_header_chunk_cnt, http_body_chunk_cnt
  • 44. Frang: WAF Length limits: http_uri_len, http_field_len, http_body_len Content validation: http_host_required, http_ct_required, http_ct_vals, http_methods HTTP Response Splitting: count and match requests and responses Injections: carefully verify allowed character sets ...and many upcoming filters: https://github.com/tempesta-tech/tempesta/labels/security Not a featureful WAF
  • 45. WAF accelerator Just like Web accelerator Advanced load balancing: ● Server groups by any HTTP field ● Rendezvous hashing ● Ratio ● Adaptive & predictive Some DDoS attacks can be just normally serviced
  • 47. Performance analysis: software & hardware “NGINX Plus vs. F5 BIG‑IP: A Price‑Performance Comparison” https://www.nginx.com/blog/ nginx-plus-vs-f5-big-ip-a-price- performance-comparison/ Nginx: ~600K HTTP RPS w/o access log Difference must be larger for HTTP DDoS blocking (DDoS emulation is an issue)
  • 48. Performance analysis: kernel bypass Similar to DPDK/user-space TCP/IP stacks http://www.seastar-project.org/ http-performance/ ...bypassing Linux TCP/IP isn’t the only way to get a fast Web server ...lives in Linux infrastructure: LVS, tc, IPtables, eBPF, tcpdump etc.
  • 49. Keep the kernel small Just 30K LoC (compare w/ 120K LoC of BtrFS) Only generic and crucial HTTPS logic is in kernel Supplementary logic is considered for user space ● HTTP compression & decompression https://github.com/tempesta-tech/tempesta/issues/636 ● Advanced DDoS mitigation & WAF (e.g. full POST processing) ● ...other HTTP users (Web frameworks?) Zero-copy kernel-user space transport for minimizing kernel code
  • 50. TODO: Zero-copy kernel-user space transport HTTPS DDoS mitigation & WAF ● Machine learning clusterization in user space ● Automatic L3-L7 filtering rules generation
  • 51. Thanks! Web-site: http://tempesta-tech.com (Powered by Tempesta FW) No failures for the year Availability: https://github.com/tempesta-tech/tempesta Blog: http://natsys-lab.blogspot.com E-mail: ak@tempesta-tech.com