[pve-devel] [PATCH pve-firewall 0/2] Fix #2450: synflood protection

Wolfgang Bumiller w.bumiller at proxmox.com
Mon Nov 18 14:01:14 CET 2019


applied, thanks

On Tue, Nov 12, 2019 at 01:59:02PM +0100, Alexandre Derumier wrote:
> Currently, a virtio-net + vhost-net can handle between 200-300 kpps for each vm (with 1core/queue=1).
> That mean than a vm can easily overloaded with a simple synflood (hping3 --flood -p 80 -S targetip).
> Also the conntrack of the host can be saturated easily.
> 
> This patch introduce a new option, enable rate limiting of syn/s by src ip (protection_synflood:1).
> 
> rate limit can be set with : protection_synflood_rate  (default 200 syn/s)
> with an extra burst: protection_synflood_rate (default 1000).
> 
> It's also possible to reduce conntrack syn timeout: nf_conntrack_tcp_timeout_syn_recv (default 60).
> 
> with default values, a src ip can take around (60 * 200 = 12000 conntrack entries).
> 
> The iptables rules are done in raw table, before reaching the conntrack.
> 
> This protection works fine for non-spoofed src ip.
> For spoofed src ip, the only way could be to implement SYNPROXY,
> but this only works for routed/nat setup. (The host need to be able to reply
> with the src ip the vm) and need https://bugzilla.proxmox.com/show_bug.cgi?id=2451
> 
> Some good information about synflood protections
> https://2014.rmll.info/slides/356/day_1-1400-Jesper_Brouer-DDoS_protection_using_Netfilter_iptables.pdf
> 
> 
> Alexandre Derumier (2):
>   iptables : add raw table support
>   add synflood protection
> 
>  src/PVE/Firewall.pm             | 180 +++++++++++++++++++++++++++-----
>  src/PVE/Service/pve_firewall.pm |  27 +++--
>  test/fwtester.pl                |  10 +-
>  3 files changed, 175 insertions(+), 42 deletions(-)
> 
> -- 
> 2.20.1




More information about the pve-devel mailing list