विषय-सूची
Debian 12 सर्वर को सुरक्षित करना सिर्फ़ ऑपरेटिंग सिस्टम इंस्टॉल करने और उसे इंटरनेट से जोड़ने से बहुत ज़्यादा माँगता है। ज़्यादातर सिस्टम एडमिन बुनियादी सुरक्षा नियमों का पालन करते हैं—पैकेज अपडेट करना, फ़ायरवॉल चालू करना और root लॉगिन बंद करना—लेकिन कई अहम हार्डनिंग स्टेप छोड़ देते हैं जो सुरक्षा को काफ़ी मज़बूत बनाते हैं। ये छूटे हुए कदम ऐसे खुले रास्ते बनाते हैं जिन्हें माहिर हमलावर जान-बूझकर ढूँढ़ते हैं। यह विस्तृत गाइड 15 ज़रूरी हार्डनिंग स्टेप बताती है जो तजुर्बेकार सिस्टम एडमिन अक्सर छोड़ देते हैं, और आपके Debian 12 सर्वर को सिर्फ़ काम चलाने वाले से आधुनिक खतरों के सामने सचमुच मज़बूत सर्वर बना देती है।
बुनियादी इंस्टॉलेशन और ठीक से हार्डन किए गए Debian 12 सर्वर का फ़र्क़ तय करता है कि आपका सिस्टम टारगेटेड हमलों में बचेगा या रैनसमवेयर के आँकड़ों में एक और नाम बन जाएगा। हर छूटा हुआ स्टेप एक अतिरिक्त हमला-सतह है, एक संभावित कमज़ोरी है, और खतरे सामने आने से पहले सुरक्षा की दीवारें ऊँची करने का एक चूका हुआ मौका है।

आधार: सिस्टम अपडेट और पैकेज मैनेजमेंट
स्टेप 1: unattended-upgrades के साथ ऑटोमैटिक सिक्योरिटी अपडेट लागू करें
जबकि ज़्यादातर एडमिन चलाते हैं apt update और apt upgrade, कम ही लोग ऑटोमैटिक सिक्योरिटी पैचिंग लागू करते हैं—यह एक गंभीर चूक है जो मैन्युअल अपडेट के बीच सिस्टम को असुरक्षित छोड़ देती है।
Debian सिक्योरिटी पैच उन ज्ञात कमज़ोरियों को ठीक करते हैं जिनका हमलावर सक्रिय रूप से फ़ायदा उठाते हैं। मैन्युअल अपडेट खतरनाक अंतराल बनाते हैं: सोमवार सुबह जब आप अपडेट चलाते हैं, तब तक मंगलवार वाली ज़ीरो-डे कमज़ोरी हमलावर टीमों के बीच घूम रही होती है। मंगलवार शाम तक आपका सिस्टम अनपैच्ड रहता है, चाहे Debian रिपॉज़िटरी में फ़िक्स पहले से मौजूद हो।
ऑटोमैटिक सिक्योरिटी अपडेट के लिए unattended-upgrades इंस्टॉल करें:
bashsudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades apt-listchanges -y
sudo dpkg-reconfigure -plow unattended-upgrades
ऑटोमैटिक सिक्योरिटी अपडेट कॉन्फ़िगर करने के लिए इसे संपादित करें /etc/apt/apt.conf.d/50unattended-upgrades:
bashsudo nano /etc/apt/apt.conf.d/50unattended-upgrades
सुनिश्चित करें कि ये ज़रूरी सेटिंग चालू हैं:
टेक्स्टUnattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
यह कॉन्फ़िगरेशन रोज़ाना सिक्योरिटी अपडेट अपने आप लागू करता है, ग़ैर-इस्तेमाल किए गए कर्नेल पैकेज हटाता है, और सिर्फ़ गड़बड़ी होने पर आपको ईमेल भेजता है—बिना एडमिन का बोझ बढ़ाए खतरनाक सुरक्षा अंतराल रोकता है।
फ़ायरवॉल सुरक्षा परतों के साथ Debian 12 सर्वर सिक्योरिटी हार्डनिंग
SSH एक्सेस हार्डनिंग
स्टेप 2: SSH की-आधारित ऑथेंटिकेशन लागू करें (पासवर्ड ऑथेंटिकेशन बंद करें)
ज़्यादातर सर्वर पर SSH पासवर्ड ऑथेंटिकेशन डिफ़ॉल्ट रूप से चालू रहता है—एक ऐसी कमज़ोरी जो इंटरनेट की हर जगह से ब्रूट-फ़ोर्स हमले बुलाती है। हमलावर ऑटोमेटेड टूल से हर रात लाखों पासवर्ड संयोजन आज़माते हैं, और अगर आप fail2ban के साथ बेहद मज़बूत पासवर्ड नहीं रखते, तो कोई न कोई आख़िर में सफल हो जाएगा।
SSH की ऑथेंटिकेशन क्रिप्टोग्राफ़ी के लिहाज़ से बेहतर है: भले ही हमलावर आपके नेटवर्क में घुस जाएँ, वे चुराए गए पासवर्ड इस्तेमाल नहीं कर पाएँगे क्योंकि सर्वर अब उन्हें स्वीकार ही नहीं करता।
अपनी लोकल मशीन पर एक मज़बूत SSH कीपेयर बनाएँ:
bashssh-keygen -t rsa -b 4096 -f ~/.ssh/debian_server -N "your-strong-passphrase"
पब्लिक की को अपने सर्वर पर कॉपी करें (इसे एक बार अपनी लोकल मशीन से चलाएँ):
bashssh-copy-id -i ~/.ssh/debian_server.pub username@your_server_ip
अब पासवर्ड बंद करने से पहले जाँच लें कि की-आधारित एक्सेस काम करता है:
bashssh -i ~/.ssh/debian_server username@your_server_ip
SSH डेमन का कॉन्फ़िगरेशन संपादित करें:
bashsudo nano /etc/ssh/sshd_config
ये हार्डन की गई SSH सेटिंग लागू करें:
टेक्स्टProtocol 2
Port 22
AddressFamily inet
ListenAddress 0.0.0.0
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM yes
PermitEmptyPasswords no
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 1m
StrictModes yes
IgnoreRhosts yes
HostbasedAuthentication no
RhostsRSAAuthentication no
RSAAuthentication no
X11Forwarding no
X11UseLocalhost no
TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 2
Subsystem sftp /usr/lib/openssh/sftp-server
बदलाव लागू करने के लिए SSH रीस्टार्ट करें:
bashsudo systemctl restart ssh
अपने मौजूदा सेशन से लॉग आउट करने से पहले कॉन्फ़िगरेशन अच्छी तरह जाँच लें—गलत कॉन्फ़िगरेशन होने पर आप हमेशा के लिए लॉक हो सकते हैं।
सुरक्षित सर्वर एक्सेस के लिए SSH की-आधारित ऑथेंटिकेशन सुरक्षा
स्टेप 3: SSH पोर्ट को डिफ़ॉल्ट 22 से बदलें (वैकल्पिक लेकिन असरदार)
भले ही क्रिप्टोग्राफ़ी के लिहाज़ से ज़रूरी न हो, SSH को पोर्ट 22 से बदलने से ऑटोमेटेड हमला टूल के पोर्ट-स्कैन का शोर कम होता है। यह ऑब्स्क्योरिटी के ज़रिए सुरक्षा है, जो व्यवहार में लॉग स्पैम कम करने और हल्की रेकी धीमी करने में काम आती है।
में /etc/ssh/sshd_configमें बदलें:
टेक्स्टPort 2222
नया पोर्ट खोलने के लिए अपना फ़ायरवॉल अपडेट करें:
bashsudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
इस बदलाव को लिख लें—अगली बार रात 3 बजे की इमरजेंसी में आप इसे भूल जाएँगे।
स्टेप 4: ब्रूट-फ़ोर्स हमले रोकने के लिए Fail2ban लागू करें
SSH की ऑथेंटिकेशन होने पर भी सहायक सेवाएँ (मेल, वेब ऐप्लिकेशन आदि) पासवर्ड स्वीकार कर सकती हैं। Fail2ban फेल हुए ऑथेंटिकेशन प्रयासों पर नज़र रखता है और दोषी IP पतों को कुछ समय के लिए बैन कर देता है, जिससे ब्रूट-फ़ोर्स हमले सफल होने से पहले रुक जाते हैं।
Fail2ban इंस्टॉल करें:
bashsudo apt update && sudo apt install fail2ban -y
डिफ़ॉल्ट कॉन्फ़िगरेशन कॉपी करके Fail2ban कॉन्फ़िगर करें:
bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
कॉन्फ़िगरेशन संपादित करें:
bashsudo nano /etc/fail2ban/jail.local
में [DEFAULT] सेक्शन को कॉन्फ़िगर करें:
टेक्स्ट[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1 your_trusted_ip
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1800
Fail2ban स्टार्ट करें और इनेबल करें:
bashsudo systemctl enable fail2ban
sudo systemctl start fail2ban
मौजूदा बैन की निगरानी करें:
bashsudo fail2ban-client status sshd
यह कॉन्फ़िगरेशन 10 मिनट की अवधि में 3 फेल SSH प्रयासों के बाद IP को 1800 सेकंड (30 मिनट) के लिए बैन करता है—ब्रूट-फ़ोर्स हमले रोकने के लिए काफ़ी सख़्त, और ग़लत बैन से बचने लायक।
फ़ायरवॉल कॉन्फ़िगरेशन और नेटवर्क हार्डनिंग
स्टेप 5: UFW फ़ायरवॉल को सख़्त डिफ़ॉल्ट पॉलिसी के साथ कॉन्फ़िगर करें
कई एडमिन फ़ायरवॉल कॉन्फ़िगरेशन छोड़ देते हैं या बहुत ढीले नियम रखते हैं। ठीक से कॉन्फ़िगर किया गया फ़ायरवॉल बिना इजाज़त एक्सेस के खिलाफ़ आपकी पहली कतार है।
UFW (Uncomplicated Firewall) इंस्टॉल और कॉन्फ़िगर करें:
bashsudo apt update && sudo apt install ufw -y
UFW चालू करने से पहले SSH को अनुमति दें, वरना आप लॉक हो सकते हैं:
bashsudo ufw allow 2222/tcp
sudo ufw allow ssh
सख़्त डिफ़ॉल्ट पॉलिसी सेट करें:
bashsudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed
UFW चालू करें:
bashsudo ufw enable
वेब सर्वर के लिए HTTP और HTTPS को भी अनुमति दें:
bashsudo ufw allow 80/tcp
sudo ufw allow 443/tcp
संवेदनशील सेवाओं तक सिर्फ़ ख़ास IP को एक्सेस दें:
bashsudo ufw allow from 192.168.1.100 to any port 3306
अपना कॉन्फ़िगरेशन देखें:
bashsudo ufw status verbose
स्टेप 6: sysctl के साथ कर्नेल पैरामीटर हार्डनिंग लागू करें
सिस्टम एडमिन कर्नेल पैरामीटर डिफ़ॉल्ट से आगे शायद ही बदलते हैं—यह एक बड़ी चूक है। sysctl के ज़रिए कर्नेल हार्डनिंग नेटवर्क हमलों और एक्सप्लॉइट की पूरी श्रेणियों को रोक सकती है।
हार्डनिंग कॉन्फ़िगरेशन फ़ाइल बनाएँ:
bashsudo nano /etc/sysctl.d/99-hardening.conf
कर्नेल हार्डनिंग के व्यापक पैरामीटर जोड़ें:
टेक्स्ट# Network Security
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# IPv6 Security
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Memory Protection
kernel.dmesg_restrict = 1
kernel.printk = 3 3 3 3
kernel.kptr_restrict = 2
kernel.core_uses_pid = 1
kernel.kexec_load_disabled = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
# Process Restrictions
kernel.unprivileged_userns_clone = 0
kernel.perf_event_paranoid = 3
हार्डनिंग तुरंत लागू करें:
bashsudo sysctl -p /etc/sysctl.d/99-hardening.conf
ये पैरामीटर IP फ़ॉरवर्डिंग बंद करते हैं (जब तक आपको इसकी ज़रूरत न हो), SYN फ़्लड हमले रोकने के लिए SYN कुकीज़ चालू करते हैं, IP स्पूफ़िंग रोकने के लिए रिवर्स-पाथ फ़िल्टरिंग चालू करते हैं, और जानकारी लीक होने से बचाने के लिए मेमोरी सुरक्षा लागू करते हैं।
स्टेप 7: ग़ैर-ज़रूरी नेटवर्क सेवाएँ बंद करें
हर चलती सेवा एक संभावित हमला-सतह है। Debian के कई डिफ़ॉल्ट इंस्टॉलेशन में ऐसी सेवाएँ होती हैं जिनकी आपको ज़रूरत नहीं—मेल सर्वर, DNS रिज़ॉल्वर, और हेडलेस सर्वर पर तो Bluetooth तक।
चल रही सेवाओं की पहचान करें:
bashsudo systemctl list-units --type=service --state=running
देखें कि कौन-सी सेवाएँ नेटवर्क पोर्ट पर सुन रही हैं:
bashsudo ss -tulnp
ग़ैर-ज़रूरी सेवाएँ बंद करें। एक साधारण वेब सर्वर के लिए आपको शायद इनकी ज़रूरत नहीं होगी:
bashsudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
sudo systemctl disable avahi-daemon.service
sudo systemctl mask isc-dhcp-server
sudo systemctl mask isc-dhcp-server6
बंद करने के बाद सेवाएँ स्टॉप करें:
bashsudo systemctl stop bluetooth.service
sudo systemctl stop cups.service
लिख लें कि आपने कौन-सी सेवाएँ और क्यों बंद कीं—सिक्योरिटी ऑडिट के समय यह बहुत ज़रूरी हो जाता है।
एक्सेस कंट्रोल और ऑथेंटिकेशन
स्टेप 8: SSH के लिए टू-फैक्टर ऑथेंटिकेशन लागू करें
टू-फैक्टर ऑथेंटिकेशन (2FA) सुरक्षा की दूसरी परत जोड़ता है: भले ही किसी को आपकी SSH प्राइवेट की मिल जाए, दूसरे फ़ैक्टर के बिना वह आपके सर्वर तक नहीं पहुँच सकता।
TOTP (Time-based One-Time Password) के लिए Google Authenticator इंस्टॉल करें:
bashsudo apt update && sudo apt install libpam-google-authenticator -y
अपने यूज़र के तौर पर (root के तौर पर नहीं) 2FA कॉन्फ़िगर करें:
bashgoogle-authenticator -t -f -d -w 10 -r 3 -R 30
यह आपके ऑथेंटिकेटर ऐप से स्कैन करने के लिए QR कोड बनाता है। बैकअप कोड कहीं सुरक्षित जगह सहेजें—अगर आपका ऑथेंटिकेटर डिवाइस खो जाए, तो यही आपका रिकवरी का रास्ता है।
2FA ज़रूरी करने के लिए PAM SSH कॉन्फ़िगरेशन बदलें:
bashsudo nano /etc/pam.d/sshd
इस लाइन को इसके पहले जोड़ें: @include common-auth:
टेक्स्टauth required pam_google_authenticator.so nullok
SSH डेमन कॉन्फ़िगरेशन संपादित करें:
bashsudo nano /etc/ssh/sshd_config
जोड़ें या बदलें:
टेक्स्टChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
SSH रीस्टार्ट करें:
bashsudo systemctl restart ssh
मौजूदा सेशन बंद करने से पहले नए टर्मिनल में अपना कॉन्फ़िगरेशन जाँचें।
Debian सर्वर एक्सेस को सुरक्षित करता टू-फैक्टर ऑथेंटिकेशन
स्टेप 9: यूज़र अकाउंट पॉलिसी मज़बूत करें
Debian में डिफ़ॉल्ट यूज़र अकाउंट पॉलिसी में पूरी रोक नहीं है। हार्डनिंग के बिना कमज़ोर पासवर्ड पॉलिसी और अकाउंट लॉकआउट का इंतज़ाम सिस्टम को क्रेडेंशियल चोरी के सामने खुला छोड़ देते हैं।
संपादित करें /etc/login.defs में सख़्त पासवर्ड पॉलिसी लागू करने के लिए:
bashsudo nano /etc/login.defs
ये ज़रूरी सेटिंग बदलें:
टेक्स्टPASS_MAX_DAYS 30
PASS_MIN_DAYS 1
PASS_WARN_AGE 7
LOGIN_RETRIES 3
LOGIN_TIMEOUT 60
FAILLOG_ENAB yes
LOG_UNKFAIL_ENAB yes
LOG_OK_LOGINS yes
SYSLOG_SU_ENAB yes
ग़ैर-ज़रूरी यूज़र अकाउंट बंद करें:
bashsudo passwd -l games
sudo passwd -l news
sudo passwd -l uucp
पासवर्ड ज़रूरी करने और sudo के इस्तेमाल का ऑडिट रखने वाला मज़बूत sudo कॉन्फ़िगरेशन बनाएँ:
bashsudo visudo
सुनिश्चित करें कि ये लाइनें मौजूद हैं:
टेक्स्टDefaults use_pty
Defaults log_input, log_output
Defaults requirepass
%sudo ALL=(ALL:ALL) ALL
यह sudo कमांड को स्यूडो-टर्मिनल में चलाता है, सारा इनपुट/आउटपुट लॉग करता है, और प्रिविलेज बढ़ाने के लिए पासवर्ड ऑथेंटिकेशन ज़रूरी करता है।
मॉनिटरिंग, ऑडिटिंग और इंट्रूज़न डिटेक्शन
स्टेप 10: auditd के साथ व्यापक लॉगिंग लागू करें
ज़्यादातर एडमिन सिर्फ़ syslog पर निर्भर रहते हैं और auditd जो बारीक सुरक्षा घटनाएँ पकड़ता है, वे चूक जाते हैं। auditd फ़ॉरेंसिक जाँच और अनुपालन के लिए ज़रूरी बारीक ऑडिट ट्रेल देता है।
auditd इंस्टॉल करें:
bashsudo apt update && sudo apt install auditd audispd-plugins -y
auditd कॉन्फ़िगर करने के लिए इसे संपादित करें /etc/audit/rules.d/audit.rules:
bashsudo nano /etc/audit/rules.d/audit.rules
अहम ऑडिट नियम जोड़ें:
टेक्स्ट# Remove any existing rules
-D
# Buffer Size
-b 8192
# Failure Mode
-f 2
# Audit the audit logs
-w /var/log/audit/ -k auditlog
# Audit system administration
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
# Audit system calls
-a always,exit -F arch=b64 -S execve -k exec
-a always,exit -F arch=b32 -S execve -k exec
# Audit file modifications
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
# Make the configuration immutable
-e 2
ऑडिट नियम लोड करें:
bashsudo systemctl restart auditd
ऑडिट लॉग देखें:
bashsudo ausearch -m EXECVE --start recent
ऑडिट रिपोर्ट बनाएँ:
bashsudo aureport
auditd बहुत बड़े लॉग बनाता है—डिस्क स्पेस की दिक्कत से बचने के लिए लॉग रोटेशन कॉन्फ़िगर करें।
स्टेप 11: रूटकिट और मैलवेयर डिटेक्शन टूल इंस्टॉल करें
कई एडमिन मान लेते हैं कि उनका सिस्टम मैलवेयर-मुक्त है क्योंकि कुछ भी साफ़ तौर पर गड़बड़ नहीं दिखता। माहिर रूटकिट अपनी मौजूदगी छिपाकर हमलावर का एक्सेस बनाए रखते हैं।
rootkit hunter इंस्टॉल करें:
bashsudo apt update && sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check --skip-warning
दूसरी राय के तौर पर मैलवेयर जाँच के लिए chkrootkit इंस्टॉल करें:
bashsudo apt install chkrootkit -y
sudo chkrootkit
फ़ाइल इंटीग्रिटी मॉनिटरिंग के लिए AIDE (Advanced Intrusion Detection Environment) इंस्टॉल करें:
bashsudo apt install aide aide-common -y
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide --check
cron के ज़रिए हफ़्तेवार स्कैन शेड्यूल करें:
bashsudo nano /etc/cron.d/rootkit-checks
जोड़ें:
टेक्स्ट0 2 * * 0 root /usr/bin/rkhunter --check --skip-warning 2>&1 | mail -s "Weekly rootkit check" [email protected]
0 3 * * 0 root /usr/bin/aide --check 2>&1 | mail -s "Weekly AIDE check" [email protected]
ये टूल रूटकिट और मैलवेयर के पक्का होने से पहले आपको चेतावनी देते हैं।
स्टेप 12: सिस्टम लॉग चालू करें और उनकी निगरानी करें
सिस्टम एडमिन अक्सर syslog चालू रखते हैं लेकिन लॉग कभी देखते नहीं। लॉग तभी काम के हैं जब आप उन पर सक्रिय रूप से नज़र रखें।
व्यापक लॉगिंग के लिए rsyslog कॉन्फ़िगर करें:
bashsudo nano /etc/rsyslog.conf
सुनिश्चित करें कि ज़रूरी मॉड्यूल चालू हैं:
टेक्स्टmodule(load="imuxsock")
module(load="imklog")
module(load="imtcp")
input(type="imtcp" port="514")
logrotate के साथ लॉग रोटेशन कॉन्फ़िगर करें:
bashsudo nano /etc/logrotate.d/rsyslog
सही रोटेशन सुनिश्चित करें:
टेक्स्ट/var/log/syslog {
daily
rotate 14
compress
delaycompress
notifempty
create 0640 syslog adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
रोज़ाना लॉग सारांश के लिए logwatch इंस्टॉल और कॉन्फ़िगर करें:
bashsudo apt install logwatch -y
sudo nano /etc/logwatch/conf/logwatch.conf
ईमेल डिलीवरी कॉन्फ़िगर करें:
टेक्स्टOutput = mail
Format = html
Email = [email protected]
Hostname = your-server-name
एक्सेस कंट्रोल और प्रिविलेज मैनेजमेंट

स्टेप 13: मैंडेटरी एक्सेस कंट्रोल लागू करें और उसे बनाए रखें
Linux के सामान्य परमिशन सिस्टम (DAC) में इतनी बारीकी नहीं है कि कोई कॉम्प्रोमाइज़्ड ऐप सिस्टम को नुकसान पहुँचाने से रुक जाए। AppArmor प्रोफ़ाइल-आधारित मैंडेटरी एक्सेस कंट्रोल (MAC) देता है जो कॉम्प्रोमाइज़ के बाद सिस्टम के अंदर फैलने से बचाता है।
Debian में AppArmor डिफ़ॉल्ट रूप से होता है, लेकिन अक्सर बहुत कम प्रोफ़ाइल लोड होती हैं। जाँचें कि AppArmor सक्रिय है:
bashsudo aa-status
अतिरिक्त AppArmor प्रोफ़ाइल इंस्टॉल करें:
bashsudo apt install apparmor-profiles apparmor-profiles-extra apparmor-utils -y
प्रोफ़ाइल रीलोड करें:
bashsudo systemctl reload apparmor
जाँचें कि सुरक्षा चालू है:
bashsudo aa-status | grep "profiles in enforce mode"
संवेदनशील ऐप के लिए कस्टम AppArmor प्रोफ़ाइल बनाएँ:
bashsudo aa-genprof /usr/bin/your-application
AppArmor ऐप को उसके तय संसाधनों तक सीमित रखता है, जिससे कॉम्प्रोमाइज़्ड वेब सर्वर सिस्टम फ़ाइलों या डेटाबेस कॉन्फ़िगरेशन तक नहीं पहुँच पाते।
स्टेप 14: सुरक्षित फ़ाइल परमिशन और umask कॉन्फ़िगर करें
Debian में डिफ़ॉल्ट फ़ाइल परमिशन ग़ैर-ज़रूरी पढ़ने की छूट देते हैं। सही umask कॉन्फ़िगरेशन संवेदनशील फ़ाइलों को सभी के लिए पढ़ने योग्य होने से रोकता है।
मौजूदा umask जाँचें:
bashumask
यहाँ सुरक्षित डिफ़ॉल्ट सेट करें: /etc/profile.d/ — सभी यूज़र के लिए:
bashsudo nano /etc/profile.d/secure-umask.sh
जोड़ें:
टेक्स्टif [ $UID -ge 1000 ]; then
umask 0077
else
umask 0027
fi
इसे एक्ज़ीक्यूटेबल बनाएँ:
bashsudo chmod 644 /etc/profile.d/secure-umask.sh
मौजूदा फ़ाइल परमिशन में जाँचें कि कौन-सी संवेदनशील फ़ाइलें सभी के लिए पढ़ने योग्य हैं:
bashsudo find /etc -type f -perm -444 -exec ls -l {} \;
sudo find /home -type f -perm -444 -exec ls -l {} \;
ग़ैर-ज़रूरी रीड परमिशन हटाएँ:
bashsudo chmod 600 /etc/ssh/sshd_config
sudo chmod 640 /etc/sudoers
स्टेप 15: ग़ैर-ज़रूरी फ़ाइलसिस्टम कैपेबिलिटी बंद करें
आधुनिक Linux सिस्टम में बाइनरी root/नॉन-root के फ़र्क़ की जगह प्रोग्राम को बारीक कैपेबिलिटी दी जाती हैं। सिस्टम बाइनरी पर ग़ैर-ज़रूरी कैपेबिलिटी प्रिविलेज बढ़ाने के रास्ते बनाती हैं।
सिस्टम बाइनरी पर मौजूद कैपेबिलिटी की पहचान करें:
bashgetcap -r /usr/bin 2>/dev/null
getcap -r /usr/sbin 2>/dev/null
ग़ैर-ज़रूरी कैपेबिलिटी हटाएँ (उदाहरण):
bashsudo setcap -r /usr/bin/dumpcap
sudo setcap -r /usr/bin/chsh
लिख लें कि आपके ऐप के लिए कौन-सी कैपेबिलिटी ज़रूरी हैं और बाकी हटा दें—हर एक, अगर उसका फ़ायदा उठाया गया, तो प्रिविलेज बढ़ाने का संभावित रास्ता है।
निरंतर हार्डनिंग और रखरखाव
इन 15 हार्डनिंग स्टेप को लागू करने के बाद सुरक्षा एक चलती प्रक्रिया बन जाती है:
मासिक काम: ऑडिट लॉग में अनियमितताएँ देखें, Fail2ban बैन के पैटर्न जाँचें, ज़रूरत के हिसाब से कर्नेल पैरामीटर अपडेट करें, और जाँचें कि AppArmor प्रोफ़ाइल ठीक चल रही हैं।
तिमाही काम: पूरे रूटकिट स्कैन चलाएँ, फ़ायरवॉल नियमों में ग़ैर-ज़रूरी छूट देखें, निष्क्रिय एक्सेस के लिए यूज़र अकाउंट का ऑडिट करें, और देखें कि कौन-सी पुरानी सेवाएँ बंद की जा सकती हैं।
सालाना: Lynis जैसे टूल से पूरे सिक्योरिटी ऑडिट करें, सारी सुरक्षा पॉलिसी की समीक्षा करके अपडेट करें, डिज़ास्टर रिकवरी प्रक्रियाएँ जाँचें, और इंसिडेंट रिस्पॉन्स प्लान अपडेट करें।
निष्कर्ष
कमज़ोर Debian 12 सर्वर और हार्डन किए गए सर्वर का फ़र्क़ इन 15 स्टेप को अंजाम देने में है, जिन्हें कई सिस्टम एडमिन छोड़ देते हैं। ऑटोमैटिक सिक्योरिटी अपडेट और SSH की हार्डनिंग से लेकर कर्नेल पैरामीटर ट्यूनिंग, व्यापक लॉगिंग और निरंतर मॉनिटरिंग तक, हर कदम ऐसे ख़ास हमला-रास्तों को बंद करता है जिनका माहिर हमलावर रोज़ फ़ायदा उठाते हैं।
बुनियादी स्टेप से शुरू करें—अपने आप अपडेट होना, SSH की ऑथेंटिकेशन लागू करना, फ़ायरवॉल कॉन्फ़िगर करना और 2FA चालू करना। फिर मॉनिटरिंग और इंट्रूज़न डिटेक्शन की ओर बढ़ें। सब कुछ एक साथ लागू करने की कोशिश न करें; चरणों में हार्डनिंग करने से कॉन्फ़िगरेशन की ग़लतियाँ बचती हैं और आप हर हिस्से को समझ पाते हैं। अपने बदलाव पूरी तरह लिखें, प्रोडक्शन में लगाने से पहले कॉन्फ़िगरेशन जाँचें, और नियमित मॉनिटरिंग बनाए रखें।
आपका Debian 12 सर्वर कभी 100% सुरक्षित नहीं होगा—सुरक्षा एक चलती यात्रा है, मंज़िल नहीं। लेकिन इन 15 हार्डनिंग स्टेप को लागू करके आप वे आसान मौके खत्म कर देते हैं जिनका ऑटोमेटेड हमले फ़ायदा उठाते हैं, और ऐसी सुरक्षा खड़ी कर देते हैं जो सबसे ज़िद्दी और संसाधन-संपन्न हमलावरों के सिवा बाकी सबको रोक सके।


