Running a hosting server means sooner or later you will see a flood of requests. You don't need expensive hardware to survive small and medium attacks. A well-tuned firewall goes a long way. This guide covers a practical CSF (ConfigServer Security & Firewall) setup on a cPanel/WHM server.
1. Find out who is hitting you
Before changing anything, check the current connections per IP:
ss -ntu | awk 'NR>1{print $6}' | sed 's/:[0-9]*$//' | sort | uniq -c | sort -nr | head -20
If a single IP holds hundreds of connections, that's your suspect.
2. Tune CSF in /etc/csf/csf.conf
# Limit total connections per IP and block abusers temporarily
CT_LIMIT = "150"
CT_INTERVAL = "30"
CT_BLOCK_TIME = "1800"
CT_PORTS = "80,443"
# Limit simultaneous connections per port
CONNLIMIT = "80;50,443;50"
# Rate-limit new connections per port (port;proto;hits;seconds)
PORTFLOOD = "80;tcp;100;5,443;tcp;100;5"
# SYN flood protection
SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"
Apply the changes:
csf -r
Start with conservative values and watch for false positives (shared NAT, offices, CDNs). Then tighten gradually.
3. Let LFD handle repeated offenders
Make sure lfd is running, because it is what enforces CT_LIMIT:
systemctl status lfd
tail -f /var/log/lfd.log
You can also permanently block an IP manually:
csf -d 203.0.113.50 "DDoS source"
4. Put a proxy in front when attacks get bigger
A firewall on the origin server can't absorb volumetric attacks that saturate your bandwidth. For that, use:
- Cloudflare (free tier works well for HTTP floods). After enabling it, restrict ports 80/443 to Cloudflare IP ranges only.
- An upstream anti-DDoS provider that filters traffic before it reaches your server.
5. Quick checklist
- [ ] CSF + LFD running and updated
- [ ]
CT_LIMIT,CONNLIMIT,PORTFLOOD,SYNFLOODconfigured - [ ] Origin IP hidden behind a proxy/CDN
- [ ] Regular backups (an attack is not the only way to lose data)
- [ ] Monitoring/alerts for abnormal connection counts
Conclusion
CSF won't stop a large volumetric attack alone, but combined with sensible limits and a CDN, it handles most everyday abuse on shared and VPS hosting.
I run DichVuCheap, a small hosting/VPS/domain service in Vietnam, and these are the settings I use day to day. Questions or improvements are welcome in the comments.
Top comments (0)