NGINX DDos Attack Tutorial – Implement Basic Protection

DDoS attacks are usually intended to paralyze websites and web services and it is better to mitigate it at the firewall level. But for the web server that runs on Nginx, I have prepared a basic step to provide DDoS protection which proved to work for small-scale DDoS attacks and DDoS attacks that aimed at applications. This DDos Attack Tutorial protection for Nginx guidelines has been tested on CentOS 6, CentOS 7, RHEL 7 and Oracle Linux 7. This steps may work on your environment but please note that this guidelines is not an official document and official recommendation from Nginx website.

DDos Attack Tutorial – Implement Basic Protection for Nginx :

1. In /etc/nginx/nginx.conf, include the following parameters :

client_body_buffer_size 128k;
large_client_header_buffers 4 256k;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=50r/s;
server {
    limit_conn conn_limit_per_ip 10;
    limit_req zone=req_limit_per_ip burst=10 nodelay;
}

2. Then restart or reload your Nginx service to apply DDoS protection for Nginx :

# /etc/init.d/nginx restart

or

# /etc/init.d/nginx reload

Explanation :

a) Limit the number of connections per single IP :

limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;

b) Limit the number of requests for a given session :

limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=50r/s;

C) Zone which we want to limit by upper values, we want limit whole server :

server {
limit_conn conn_limit_per_ip 10;
limit_req zone=req_limit_per_ip burst=10 nodelay;
}

If your WordPress is under DDoS attack, you will get the following log into Nginx files domain.access.log :

1.2.3.4 - - [25/Mar/2015:16:52:38 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:39 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:39 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:40 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:40 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:41 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:41 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:42 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:42 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:43 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:43 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:44 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:44 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:45 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"
1.2.3.4 - - [25/Mar/2015:16:52:45 +0800] "POST /wp-login.php HTTP/1.0" 200 6203 "-" "-"

Here is an example of the results after you perform basic DDoS protection for Nginx :

2015/03/28 11:44:33 [error] 22370#0: *71492 limiting connections by zone "conn_limit_per_ip", client: 1.2.3.4, server: www.ehowstuff.com, request: "GET /wp-login.php HTTP/1.0", host: "www.ehowstuff.com"
2015/03/28 11:44:33 [error] 22370#0: *71493 limiting connections by zone "conn_limit_per_ip", client: 1.2.3.4, server: www.ehowstuff.com, request: "GET /wp-login.php HTTP/1.0", host: "www.ehowstuff.com"
2015/03/28 11:44:33 [error] 22370#0: *71494 limiting connections by zone "conn_limit_per_ip", client: 1.2.3.4, server: www.ehowstuff.com, request: "GET /wp-login.php HTTP/1.0", host: "www.ehowstuff.com"
2015/03/28 11:44:33 [error] 22370#0: *71498 limiting connections by zone "conn_limit_per_ip", client: 1.2.3.4, server: www.ehowstuff.com, request: "GET /wp-login.php HTTP/1.0", host: "www.ehowstuff.com"
2015/03/28 11:44:33 [error] 22370#0: *71502 limiting connections by zone "conn_limit_per_ip", client: 1.2.3.4, server: www.ehowstuff.com, request: "GET /wp-login.php HTTP/1.0", host: "www.ehowstuff.com"
2015/03/28 11:44:33 [error] 22370#0: *71506 limiting connections by zone "conn_limit_per_ip", client: 1.2.3.4, server: www.ehowstuff.com, request: "GET /wp-login.php HTTP/1.0", host: "www.ehowstuff.com"

Hope this DDos Attack Tutorial to Implement Basic Protection on NGINX help!!

DDos Attack Tutorial

How to Unblock and Reclassify a Website That Trend Micro Blocked ?

Symptoms :
I am running Trend Micro OfficeScan and while trying to access a website. Unfortunately one of my site has been blocked by Trend Micro and return the following error message :

URL Blocked

The URL that you are attempting to access is a potential security risk. Trend Micro OfficeScan has blocked this URL in keeping with network security policy.
URL: 	http://www.xxxxxxx.net/
Risk Level: 	High
Details: 	For more information about this URL or to report it to Trend Micro for reclassification,visit http://reclassify.wrs.trendmicro.com.

I have checked the site thoroughly and i cannot find any malware on it. This is very very frustrating? for me as i will lost a lot of visitors who used Trend Micro antivirus on their computers or notebook.

Solutions :

To verify your site safety, you may check at this site :
McAfee SiteAdvisor, top FREE safe search tool
How to Check and Verify The Site That You Want You Visit Using SiteAdvisor

Follow the steps below to request for a website reclassification:

Step 1 Go to the Site Safety Center.

Step 2 Type the website address that you want to verify, then click Check Now.

The website will display a message saying if the address you typed is safe or dangerous. It will also provide you with the address’ category.

Step 3 Click Give Feedback if you want to reclassify the website.

Step 4 Select the correct rating of the website under the Safety Rating section.

Step 5 Select the correct category of the website under the Content section.

Step 6 Fill up the fields in the Introduce yourself section.

Step 7 Click OK once you are done.

You will receive the message below once you have successfully submitted your request.

A confirmation message will be sent to the email address you specified.

Step 8 Click the link in the email to confirm the feedback.

Your request will now be processed.

Thanks for your confirmation.

Trend Micro will start processing your request immediately and we will send you the result once it is done.

Check the safety of a website or request reclassification of a site references:

Website classification list and definition
How to request for website reclassification
Need site unblocked/reclassified
Website Reclassification
Trend Micro Site Safety Center