
Malicious traffic falls into several categories: automated scanners probing for known vulnerabilities, brute-force login attempts, scrapers hammering your content, DDoS floods, and targeted attacks against specific application endpoints like WordPress's wp-login.php or xmlrpc.php.
The tell-tale signs in logs: a single IP making hundreds of requests per minute, requests to paths that do not exist (scanning for vulnerabilities), HTTP 4xx response floods, and patterns of failed authentication attempts. The first step is reading your logs well enough to spot these patterns.
Nginx's access log at /var/log/nginx/access.log records every request. Use standard shell tools to surface the worst offenders:
Once you have identified a malicious IP or range, block it at the firewall level. UFW deny rules are evaluated before traffic reaches Nginx — this is more efficient than Nginx-level blocking because it drops packets before your web server has to process them.
Rate limiting at the Nginx level caps how many requests a single IP can make per second. This is particularly effective against scrapers and brute-force attacks on login endpoints. Add to your Nginx configuration:
The burst parameter allows short request spikes above the rate before returning 503 errors. The nodelay option processes burst requests immediately rather than queuing them — better for user-facing pages.
For volumetric DDoS attacks, server-level rate limiting is not enough — by the time traffic reaches your server, the bandwidth is already consumed. Cloudflare's free plan provides meaningful DDoS protection by absorbing traffic at their network edge before it reaches your origin server.
Point your domain's DNS to Cloudflare, enable the orange cloud (proxied) for web traffic records, and activate the Web Application Firewall (WAF) rules under the Security tab. Cloudflare's free tier includes OWASP-based WAF rules and bot fight mode — both effective against common attack patterns.
CloudStick integrates with Cloudflare's API — you can manage DNS records and toggle proxy status for your domains directly from the CloudStick dashboard. The CloudStick firewall panel also lets you add IP block rules without SSH access, making it straightforward to respond to an active attack by blocking offending ranges while investigating the logs.


We use cookies to improve your experience
CloudStick uses cookies to personalise content, analyse traffic and keep you signed in. Cookie Policy · Terms of Service