नया वेब सर्वर ऑनलाइन आने के कुछ ही मिनटों में स्कैन हो जाता है। उस ट्रैफ़िक का ज़्यादातर हिस्सा स्वचालित होता है और अगर आपने बुनियादी काम कर लिए हैं तो हानिरहित है। यह गाइड 15 मिनट की सुरक्षा से एक कदम आगे जाती है और फ़ायरवॉल, fail2ban से ब्रूट-फ़ोर्स सुरक्षा और ज़्यादा सुरक्षित Nginx सेटअप को कवर करती है।
चरण 1: UFW के साथ डिफ़ॉल्ट-डिनाई फ़ायरवॉल
सिर्फ़ वही अनुमति दें जिसकी ज़रूरत है, बाक़ी ब्लॉक करें। पहले SSH जोड़ें ताकि आप ख़ुद को बाहर लॉक न कर लें।
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
अगर आप नॉन-स्टैंडर्ड SSH पोर्ट इस्तेमाल करते हैं, तो OpenSSH की जगह उसी पोर्ट की अनुमति दें।
चरण 2: बार-बार की विफलताओं के लिए fail2ban
fail2ban लॉग देखता है और उन IP पतों को बैन करता है जो लॉगिन में बार-बार विफल होते हैं।
sudo apt install -y fail2ban
sudo tee /etc/fail2ban/jail.local > /dev/null <<'CONF'
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
[nginx-http-auth]
enabled = true
[nginx-botsearch]
enabled = true
CONF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
SSH कुंजियाँ इस्तेमाल करें और पासवर्ड लॉगिन भी बंद करें। SSH कुंजियाँ समझाई गईं देखें।
चरण 3: Nginx का वर्शन छिपाएँ और सुरक्षित हेडर जोड़ें
/etc/nginx/nginx.conf में, http ब्लॉक के अंदर:
server_tokens off;
आपकी साइट के server ब्लॉक में:
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
HSTS हेडर तभी जोड़ें जब आपके डोमेन और आपके इस्तेमाल किए सभी सबडोमेन पर HTTPS काम करने लगे।
चरण 4: अपमानजनक अनुरोधों को सीमित करें
रेट लिमिटिंग लॉगिन पेजों पर ब्रूट-फ़ोर्स कोशिशों को धीमा करती है:
# in the http block
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
# in your server block
location = /wp-login.php {
limit_req zone=login burst=5 nodelay;
# ...your usual PHP handling
}
sudo nginx -t && sudo systemctl reload nginx से टेस्ट करें और लागू करें।
चरण 5: इसे अपडेटेड रखें
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
स्वचालित सुरक्षा अपडेट आपके कुछ किए बिना ज्ञात कमज़ोरियों को बंद कर देते हैं।
क्या देखते रहें
- बैन को
sudo fail2ban-client status sshdसे जाँचें। /var/log/nginx/error.logकी कभी-कभार समीक्षा करें।- अगर आप प्रॉक्सी या CDN के पीछे हैं, तो पक्का करें कि fail2ban असली क्लाइंट IP पढ़े, वरना आप अपना ही प्रॉक्सी बैन कर सकते हैं।