How to Implement Basic Protection Against DDoS Attacks for Nginx

Distributed Denial of Service (DDoS) attacks can overwhelm a server’s resources, causing a website or application to become unresponsive or unavailable. Implementing basic protection against DDoS attacks is essential for maintaining server stability and performance.

Here’s a step-by-step guide on implementing basic protection against DDoS attacks for Nginx.

Step 1: Update and Secure Your Server

Ensure your server and software are up-to-date and properly secured. This includes installing the latest security patches, hardening SSH access, and configuring firewalls.

sudo apt update && sudo apt upgrade -y

Step 2: Limit Request Rate

Limit the rate at which clients can send requests to your server. This can help mitigate DDoS attacks by slowing down the rate of incoming requests.

Open your Nginx configuration file:

sudo nano /etc/nginx/nginx.conf

In the http block, add the following lines:

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;

This configuration creates a shared memory zone called “one” with a maximum size of 10 MB and allows 30 requests per minute from a single IP address.

Next, open your Nginx server block configuration file:

sudo nano /etc/nginx/sites-available/default

Inside the server block, add the following lines within the appropriate location block:

limit_req zone=one burst=30 nodelay;

This configuration allows for a burst of 30 requests, which are processed without delay.

See also  How to Fix "/var/run/php-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1"

Save the file and restart Nginx:

sudo systemctl restart nginx

Step 3: Limit Connections

Limit the number of connections from a single IP address to prevent a single client from consuming too many resources.

In the http block of the Nginx configuration file, add the following lines:

limit_conn_zone $binary_remote_addr zone=addr:10m;

This configuration creates a shared memory zone called “addr” with a maximum size of 10 MB to store connection information.

In the server block of the Nginx server block configuration file, add the following lines within the appropriate location block:

limit_conn addr 10;

This configuration limits the number of concurrent connections from a single IP address to 10.

Save the file and restart Nginx:

sudo systemctl restart nginx

Step 4: Enable Connection Timeouts

Set timeouts for connections to mitigate slow HTTP attacks.

In the http block of the Nginx configuration file, add the following lines:

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;

These settings configure various timeouts for client connections, helping to mitigate slow HTTP attacks.

See also  Static Website Configuration for Nginx Web Server on CentOS 6 / CentOS 7

Save the file and restart Nginx:

sudo systemctl restart nginx

Commands Mentioned:

  • apt update && apt upgrade -y – Updates the system packages to their latest versions.
  • nano /etc/nginx/nginx.conf – Opens the main Nginx configuration file for editing.
  • nano /etc/nginx/sites-available/default – Opens the default Nginx server block configuration file for editing.
  • systemctl restart nginx – Restarts the Nginx service to apply the configuration changes.

Conclusion

By implementing these basic DDoS protection techniques, you can increase the resilience of your Nginx server against DDoS attacks. While these measures can help, they may not be enough to stop all DDoS attacks. For comprehensive protection, consider using a DDoS mitigation service, like Cloudflare or AWS Shield, and closely monitor your server’s performance and resource usage.

Remember to always keep your server up-to-date, regularly review your Nginx configuration, and implement additional security measures as needed. These practices will help you maintain a secure and stable server environment, reducing the likelihood of successful DDoS attacks.

See also  How to Remove/Uninstall Nginx Installed from Source on CentOS 6/RHEL 6

We encourage you to share your thoughts, comments, and suggestions for improvements to this guide. Your feedback is invaluable in helping us provide the most accurate and useful information possible.

In addition to the basic DDoS protection techniques discussed in this guide, you might also consider implementing:

Geo-blocking: If your website or application has a specific target audience, you can block traffic from other countries to reduce the attack surface.

HTTP flood protection: Tools like ModSecurity or Fail2ban can help protect your server against HTTP flood attacks by detecting and blocking malicious traffic.

Web Application Firewall (WAF): A WAF can help protect your server from various types of attacks, including DDoS attacks, by filtering and monitoring HTTP traffic.

By staying vigilant and implementing a range of security measures, you can better protect your Nginx server against DDoS attacks and ensure the continued availability of your website or application.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *