Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
litespeed_wiki:config:mitigating-ddos-attacks [2019/01/10 15:45]
Jackson Zhang
litespeed_wiki:config:mitigating-ddos-attacks [2019/05/15 19:25]
Lisa Clarke [Analysis of IPs from attacked] Copyediting
Line 53: Line 53:
 ===== Virtual Host-Level Bandwidth Throttling ===== ===== Virtual Host-Level Bandwidth Throttling =====
  
-LiteSpeed Web Server version 5.0 introduces virtual host-level bandwidth throttling. This can be thought of as an extension of LSWS's **Per Client Throttling settings** explained as above, which allow you to control the amount of stress a single IP can put on your server. Virtual host-level bandwidth throttling allows you to customize bandwidth throttling, in Apache configs, for particular virtual hosts. Please check [[litespeed_wiki:​config:​vhost-level_bw_throttling|here]] for details.+LiteSpeed Web Server version 5.0 introduces virtual host-level bandwidth throttling. This can be thought of as an extension of LSWS's **Per Client Throttling settings** explained as above, which allow you to control the amount of stress a single IP can put on your server. Virtual host-level bandwidth throttling allows you to customize bandwidth throttling, in Apache configs, for particular virtual hosts through ''​MaxConnPerClient <​limit_for_connections>'',''​LargeFileLimit [Type] [Minimum Size in kilobytes] [Speed in bytes/​s]'',​ ''​BandWidth [Origin] [Speed in bytes/​s]''​ and ''​MinBandWidth all -1''​. 
 +. Please check [[litespeed_wiki:​config:​vhost-level_bw_throttling|here]] for details.
  
 ===== Use Max Request/​Response Settings ===== ===== Use Max Request/​Response Settings =====
Line 120: Line 121:
 ===== Troubleshooting ===== ===== Troubleshooting =====
  
 +==== Check concurrent connections ====
 +To check the number of concurrent TCP connections,​ run the following command:
 +  netstat -an | grep 80 | grep ESTA | wc 
 +
 +To check concurrent connections sorted by IP, run the following:
 +  netstat -ntu | grep ESTABLISHED | awk '​{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
 +  ​
 +Please keep in mind that ''​netstat -ntu''​ will list TCP in TIME_WAIT state, which will inflate the number. For the correct concurrent TCP connections counting method, you should only count TCPs in ''​ESTABLISHED''​ state. Hence ''​grep ESTA''​ or ''​grep ESTABLISHED''​ will be required.
 +
 +==== Analysis of IPs from Attacker ==== 
 +
 +Bad IP's can make quick connections,​ and you end up with many ''​time_waits''​ which you won't see when just looking at established.
 +
 +If you don't necessarily count concurrent connections,​ and just want to analyze which IPs might be attackers, you can include ''​time_waits''​ connections. Run the command without ''​grep ESTABLISHED'',​ which gives you the ability to see what IP's just connected and dropped and may need to be blocked:
 +
 +   ​netstat -ntu | awk '​{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | awk '$1 >= 5 {print $0}'
 +
 +An attacker could make a connection, send requests to an expensive URL, wait a little while, and then close the connection. If the server does not abort the process, the backend will be used up soon, as it will keep serving requests that have been abandoned. The above command will be useful during such a situation. ​
 ==== Check the Banned IP and Reason ==== ==== Check the Banned IP and Reason ====
 If an IP has been banned, but you don't know why, you can check it with SSH. Here is an example of a connection that was banned because it reached the hard limit. If an IP has been banned, but you don't know why, you can check it with SSH. Here is an example of a connection that was banned because it reached the hard limit.
Line 168: Line 187:
  
 === Set Trusted IP on Virtual Host Level ===  === Set Trusted IP on Virtual Host Level === 
-Since LSWS 5.4RC1, LSWS added virtual host trusted IP support, where you use "Trusted 1.2.3.4, 5.6.7.8" ​in Virtual Host document root .htaccess to unblock blocked IP and make that IP trusted for that vhost.+Since LSWS 5.4RC1, LSWS added virtual host trusted IP support, where you use ''​Trusted 1.2.3.4, 5.6.7.8'' ​in Virtual Host document root .htaccess to unblock blocked IP and make that IP trusted for that vhost.
  
 ==== Drop or Deny ==== ==== Drop or Deny ====
 What if ModSecurity does a drop (TCP FIN) rather than deny for a trusted IP? The trusted list only has an effect on the "​drop"​ action, but not on the "​deny"​ action. A trusted IP won't be added to blacklist, but trust status has no effect on other actions. What if ModSecurity does a drop (TCP FIN) rather than deny for a trusted IP? The trusted list only has an effect on the "​drop"​ action, but not on the "​deny"​ action. A trusted IP won't be added to blacklist, but trust status has no effect on other actions.
  • Admin
  • Last modified: 2020/01/07 17:21
  • by Lisa Clarke