हमारे VPS को सुरक्षित करने के लिए कदम

यह ट्यूटोरियल दिखाता है कि डेबियन जीएनयू / लिनक्स के साथ वर्चुअल प्राइवेट सर्वर (वीपीएस) कैसे तैयार करें और सुरक्षित करें। शुरू करने से पहले, कुछ चीजें मान ली जाती हैं:

  1. आपके पास GNU / Linux के साथ परिचित स्तर का अंतर है।
  2. व्यक्तिगत उपयोग के लिए एक VPS है, जिसका उपयोग हम SSH के माध्यम से करते हैं।
  3. VPS के पास समर्पित बाहरी ipv4 250.250.250.155 है और हमारा प्रदाता 250.250.0.0/16 ब्लॉक का मालिक है। (1)
  4. हमारे VPS में हमारे पास केवल http, https और ssh सेवाएँ होंगी जो बाहर से पहुँच के लिए सक्षम हैं।
  5. बाहरी DNS को सक्षम नहीं किया जाएगा क्योंकि यह आमतौर पर हमारे प्रदाता के पैनल में किया जाता है। (२)
  6. यह सुपरयुजर का काम करेगा।

स्थापना

पहले चरण के रूप में, आइए सर्वर को अपडेट करें और कुछ पैकेज स्थापित करें जिनकी हमें आवश्यकता होगी:

# एप्टीट्यूड अपडेट और एप्टीट्यूड सेफ-अपग्रेड # एप्टीट्यूड-आरवीडब्ल्यू ड्रॉपबियर गेसटफसर्वर sslh iptables-persistent ulogd fail2ban nginx-light apache2-utns dututils telnet ghostscript-popils-utils zip unzip unrip-free -7-XNUMX-ip -ip -ip

विन्यास

अब हम एक कार्य उपयोगकर्ता बनाने जा रहे हैं। सर्वर पर रूट के रूप में कार्य करना असुरक्षित है, इसलिए हम पहले एक विशेष उपयोगकर्ता बनाएंगे:

योजक ऑपरेटर usermod -aG sudo ऑपरेटर

पहला कमांड ऑपरेटर उपयोगकर्ता बनाता है, दूसरा इसे समूह में जोड़ता है sudo, जो रूट के रूप में अनुप्रयोगों को चलाने की अनुमति देगा।

सुपर उपयोगकर्ताओं के लिए अनुमतियाँ समायोजित करें

नियमित रूप से काम करने के लिए हम उपयोगकर्ता का उपयोग करेंगे ऑपरेटर पहले बनाया गया, हमें कमांड निष्पादन विकल्पों को सुपरयुसर के रूप में समायोजित करने की आवश्यकता है, जिसके लिए हम निम्नलिखित कमांड निष्पादित करते हैं:

visudo

यह कमांड मूल रूप से फाइल को संशोधित करने की अनुमति देता है / Etc / sudoers; जिसमें हमें इन पंक्तियों को शामिल करना चाहिए:

डिफॉल्ट्स env_reset, टाइमस्टैम्प_टाइमआउट = 0% sudo ALL = (ALL: ALL) ALL

पहली पंक्ति में डिफ़ॉल्ट मानों के लिए विकल्प जोड़ा जाता है टाइमस्टैम्प_टाइमआउट जो आपको sudo कमांड के निष्पादित होने पर पासवर्ड की समाप्ति समय (मिनटों में) सेट करने की अनुमति देता है। डिफ़ॉल्ट 5 है, लेकिन यह कभी-कभी दो कारणों से असुरक्षित होता है:

  1. यदि हम अनजाने में पासवर्ड समाप्त होने से पहले अपने कंप्यूटर को लॉग इन करते हैं, तो कोई भी किसी भी प्रतिबंध के बिना सुपरयुजर के रूप में एक कमांड निष्पादित कर सकता है।
  2. यदि अज्ञानता के माध्यम से हम एक एप्लिकेशन या स्क्रिप्ट को निष्पादित करते हैं जिसमें पासवर्ड समाप्त होने से पहले दुर्भावनापूर्ण कोड होता है, तो एप्लिकेशन हमारी स्पष्ट सहमति के बिना, सुपरयुजर के रूप में हमारे सिस्टम तक पहुंच सकता है।

इसलिए जोखिमों से बचने के लिए, हमने मूल्य को शून्य पर सेट किया है, अर्थात, हर बार जब सुडो कमांड निष्पादित किया जाता है, तो पासवर्ड दर्ज करना होगा। यदि एक नकारात्मक मान -1 के रूप में सेट किया गया है, तो प्रभाव यह है कि पासवर्ड कभी भी समाप्त नहीं होता है, जो हम चाहते हैं के विपरीत परिणाम का उत्पादन करेगा।

दूसरी पंक्ति में यह स्पष्ट किया गया है कि सुडो समूह किसी भी कंप्यूटर पर किसी भी कमांड को निष्पादित कर सकता है, जो सामान्य है, हालांकि इसे समायोजित किया जा सकता है। (३) ऐसे लोग हैं जो सुविधा के लिए लाइन लगाते हैं ताकि पासवर्ड टाइप करने से बच सकें:

% सुदो ऑल = (ALL: ALL) NOPASSWD: ALL

हालांकि, जैसा कि हमने पहले बताया, यह जोखिम भरा है, और इसलिए अनुशंसित नहीं है।

पुनरारंभ अक्षम करें

सुरक्षा कारणों से, हम कुंजी संयोजन का उपयोग करके पुनरारंभ को भी अक्षम करेंगे Ctrl + Alt + डेलजिसके लिए हमें फाइल में इस लाइन को जोड़ना होगा / etc / inittab:

ca: 12345: ctrlaltdel: / bin / echo "Ctrl + Alt + Del अक्षम कर दिया गया है।"

OpenSSH को DropBear से बदलें

अधिकांश वीपीएस स्थापित ओपनएसएसएच के साथ आते हैं, जो निश्चित रूप से बहुत उपयोगी है, लेकिन जब तक हमें ओपनएसएसएच की सभी कार्यक्षमता का दोहन करने की आवश्यकता नहीं होती है, तब तक वीपीएस के लिए हल्के विकल्प होते हैं, जैसे कि भालू ड्रॉप, जो आमतौर पर नियमित उपयोग के लिए पर्याप्त है। हालाँकि, इस एप्लिकेशन की एक खामी यह है कि यह एक एकीकृत SFTP सर्वर के साथ नहीं आता है, और यही कारण है कि हमने शुरुआत में पैकेज स्थापित किया है Gesftpserver.

ड्रॉपबियर को कॉन्फ़िगर करने के लिए, हम फ़ाइल को संशोधित करेंगे / etc / डिफ़ॉल्ट / ड्रॉपबियर ताकि इसमें ये दो पंक्तियाँ हों:

NO_START = 0 DROPBEAR_EXTRA_ARGS = "- w -p 127.0.0.1:22 -I 1200 -m"

पहली पंक्ति बस सेवा को सक्षम करती है, और दूसरी कई चीजें करती है:

  1. रूट एक्सेस से बचें।
  2. सेवा को स्थानीय इंटरफ़ेस के पोर्ट 22 पर सुनता है (हम बाद में समझाएंगे)।
  3. प्रतीक्षा समय (20 मिनट) निर्धारित करता है।

एसएसएलएच

पोर्ट 22 (SSH) अच्छी तरह से जाना जाता है और आमतौर पर सबसे पहले हैकर्स में से एक को भंग करने की कोशिश करता है, इसलिए हम इसके बजाय पोर्ट 443 (एसएसएल) का उपयोग करेंगे। ऐसा होता है कि इस पोर्ट का उपयोग एचटीटीपीएस से अधिक सुरक्षित ब्राउज़िंग के लिए किया जाता है।

इस कारण से हम sslh पैकेज का उपयोग करेंगे, जो कि मल्टीप्लेक्स से ज्यादा कुछ नहीं है जो पोर्ट 443 पर आने वाले पैकेट का विश्लेषण करता है, और उन्हें आंतरिक रूप से एक सेवा या किसी अन्य मार्ग पर भेजता है जो इस बात पर निर्भर करता है कि यातायात का प्रकार एसएसएच या एसएसएल है।

SSLH एक इंटरफ़ेस पर नहीं सुन सकता है जहां एक और सेवा पहले से ही सुन रही है, यही वजह है कि हमने पहले ड्रॉपबियर को स्थानीय इंटरफ़ेस पर बनाया था।

अब हमें जो करने की आवश्यकता है वह इंटरफ़ेस और बंदरगाह के माध्यम से sslh करने के लिए इंगित करता है जिसके माध्यम से इसे सुनना चाहिए और सेवा के प्रकार के आधार पर पैकेट को फिर से निर्देशित करना चाहिए, और इसके लिए हम कॉन्फ़िगरेशन फ़ाइल को संशोधित करेंगे / etc / डिफ़ॉल्ट / sslh:

DAEMON = / usr / sbin / sslh DAEMON_OPTS = "- उपयोगकर्ता sslh --listen 250.250.250.155:443 - ssh 127.0.0.1 --ssl 22:127.0.0.1 --pidfile / var / sslh / sslh pid "RUN = हाँ

अंत में, हम सेवाओं को पुनः आरंभ करते हैं:

सेवा ssh रोक && सेवा ड्रॉपबियर प्रारंभ और& सेवा sslh पुनरारंभ

पिछले आदेश के बाद, हमारा सुरक्षित सत्र संभवतः बाधित हो जाएगा, जिस स्थिति में यह फिर से लॉग इन करने के लिए पर्याप्त है, लेकिन इस बार कार्य उपयोगकर्ता और पोर्ट 443 का उपयोग करके। यदि सत्र बाधित नहीं हुआ है, तो इसे बंद करना उचित है। उचित मूल्यों के साथ फिर से शुरू करें।

यदि सब कुछ सही ढंग से काम करता है, तो हम रूट के रूप में काम करना जारी रख सकते हैं और यदि हम चाहें तो OpenSSH की स्थापना रद्द करें:

sudo su - aptitude -r purge खुलता है-सर्वर

फायरवॉल

अगली चीज जो हम करेंगे वह फ़ायरवॉल से लॉग को अलग फ़ाइल में अलग करना है /var/log/firewall.log आगे के विश्लेषण को सुविधाजनक बनाने के लिए, यही वजह है कि हमने स्टार्टअप में ulogd पैकेज स्थापित किया। इसके लिए हम फाइल को एडिट करेंगे /etc/logd.conf संबंधित अनुभाग को समायोजित करने के लिए:

[LOGEMU] फाइल = "/ var / log / firewall.log" सिंक = १

अगला, हम रिकॉर्ड रोटेशन फ़ाइल को संशोधित करेंगे / etc / logrotate / ulogd एक दैनिक रोटेशन (तारीख के साथ) रखने और निर्देशिका में संपीड़ित सल्लो को बचाने के लिए / var / log / ulog /:

/var/log/ulog/*.log/var/log/firewall.log {दैनिक तिथि-सीमा अनुपलब्ध संपीडित विलंब पत्र साझा करने के लिए 640 रूट अभिगमन पोस्टट्रेट /etc/init.d/ulogd पुनः लोड mv /var/firewall.log-* .gz / var / log / ulog / endcript}

तो हम निम्नलिखित को क्रियान्वित करके नेटफिल्टर नियम बनाएंगे:

IPT = $ (जो iptables) IPEXT = 250.250.250.155 IPEXTBLK = 250.250.0.0 / 16 IPBCAST = 255.255.255.255 $ IPT -F $ IPT -X $ IPT -Z $ IPT-IN INUTUT -i lo -j ACCEPT $ IPT - P INPUT DROP $ IPT-FORWARD DROP $ IPT-OUTPUT ACCEPT $ IPT -एक INPUT -m राज्य --state INVALID -j ULOG --ulog- उपसर्ग ININVALID $ IPT-INPUT -p igmp -j ULOG --ulog -इंटरफ़िक्स IN_IGMP $ IPT -A INPUT -m pkttype --pkt-type ब्रॉडकास्ट -j ULOG --ulog-prefix IN_BCAST $ IPT -A INPUT -m pkttype --pkt-type मल्टीकास्ट -j ULOG --ulog-prefix IN_MCAST $ IPT -A फॉरवर्ड -j ULOG - वूल-उपसर्ग FORWARD $ IPT -N ICMP_IN $ IPT -A INPUT!  -i lo -p icmp -j ICMP_IN $ IPT -A ICMP_IN -p icmp -f -j ULOG --ulog- उपसर्ग IN_ICMP_FRAGMENTED $ IPT-ICMP_IN -p icmp -m icmp -m लंबाई!  --length 28: 1322 -j ULOG --ulog- उपसर्ग IN_ICMP_INVALIDSIZE $ IPT -एक ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-above 4 / sec --hashlimit-mode srcip --hashlimit-srcmask 24 - -शालीम-नाम icmpflood -j ULOG --ulog- उपसर्ग IN_ICMP_FLOOD $ IPT-ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-upto 64kb / मिनट तक -name icmpattack -j ULOG --ulog- उपसर्ग IN_ICMP_FLOOD $ IPT -एक ICMP_IN -p icmp -m icmp -m u24!  --u32 "0x4 और 0x3fff = 0x0" -j ULOG --ulog- उपसर्ग IN_ICMP_ATTACK $ IPT -A ICMP_IN -p icmp -m icmp!  --icmp-type इको-रिक्वेस्ट -m स्टेट --state NEW -j ULOG --ulog- उपसर्ग IN_ICMP_INVALID $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type इको-अनुरोध -j ULOG --ulog- उपसर्ग IN_ICMP $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type इको-रिक्वेस्ट -M सीमा - 1 / सेकंड - सेकंड-फट 4 -j ACCEPT $ IPT-एक IC__p -p icmp -m icmp --icmp-type इको-रिप्लाई -M लिमिट --limit 2 / sec --limit-बर्स्ट 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type डेस्टिनेशन-अगम्य-लिमिट लिमिट - लिमिट 2 / सेकंड - बिल्‍ट-बर्स्ट 4 -j ACCEPT $ IPT -एक ICMP_IN -p icmp -m icmp --icmp-type time-crossed -m limit -limit 2 / sec -limit-फट 4-J ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type पैरामीटर-प्रॉब्लम -m लिमिट --limit 2 / sec --limit-बर्फ़ 4 -j ACCEPT $ IPT -A- ICMP_IN -j RETURL $ IPT -N UDP_IN $ IPT -A INPUT!  -आई लो-पी udp -j UDP_IN $ IPT -A UDP_IN!  -लो!  -p udp -f -j ULOG --ulog- उपसर्ग IN_UDP_FRAGMENTED $ IPT -A UDP_IN -p udp -m udp --sport 53 -m लंबाई!  --length 28: 576 -j ULOG --ulog- उपसर्ग IN_UDP_DNS_INVALIDSIZE $ IPT-UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j ULOG --ulog- उपसर्ग IN_UDP_DNSREQUEST $ IPT एक UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j REJECT --reject-with icmp-port-unreachable $ IPT -A-UDP_IN -p -udp -m udp!  - एसएसपी ५३!  -s $ IPEXTBLK!  -d $ IPBCAST -m राज्य --state NEW -j ULOG --ulog- उपसर्ग IN_UDP $ IPT -A UDP_IN -p udp -m udp -m राज्य --state ESTABLISHED, संबंधित -j ACCEPT $ IPT-UDP_IN -j RETURN $ IPT -N TCP_IN $ IPT -A INPUT!  -i lo -p tcp -j TCP_IN $ IPT -A TCP_IN!  -लो!  -p tcp -f -j ULOG --ulog- उपसर्ग IN_TCP_FRAGEDED $ IPT -A TCP_IN -p tcp -m tcp --sport 53 -m राज्य --स्टेट इस्टेटबल, संबंधित-लंबाई!  --length 513: 1500 -j ULOG --ulog- उपसर्ग IN_TCP_DNS_INVALIDSIZE $ IPT-TCP_IN -p tcp -m tcp --dport 53 -m स्थिति - NEW -j ULOG --ulog- उपसर्ग IN_TCP_DNS $ IPT - IP TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j REJECT --reject-with icmp-port-unreachable $ IPT -A TCP_IN -p tcp -m ccp -m multiport!  -dports 80,443 -m राज्य --state NEW -j ULOG --ulog- उपसर्ग IN_TCP $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m स्थिति --state NEW -m hashlimit - hashlimit -up 4 / sec -hashlimit-फट 16-hashlimit-mode srcip --hashlimit-name navreq -j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m राज्य - राज्य स्थापित -मुझे मिलाप!  -connlimit- ऊपर 16 -j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m मल्टीपोर्ट! 

पिछले कॉन्फ़िगरेशन के साथ, हमारे VPS को यथोचित रूप से सुरक्षित किया जाना चाहिए, लेकिन यदि हम चाहें तो हम इसे थोड़ा और सुरक्षित कर सकते हैं, जिसके लिए हम कुछ और उन्नत नियमों का उपयोग कर सकते हैं।

सभी वीपीएस नेटफिल्टर के लिए अतिरिक्त मॉड्यूल की स्थापना की अनुमति नहीं देते हैं, लेकिन एक बहुत ही उपयोगी है PSD, जो आपको पोर्ट स्कैन से बचने की अनुमति देता है। दुर्भाग्य से यह मॉड्यूल डिफ़ॉल्ट रूप से नेटफिल्टर में एकीकृत नहीं है, इसलिए कुछ पैकेजों को स्थापित करना और फिर मॉड्यूल का निर्माण करना आवश्यक है:

एप्टीट्यूड -RWW iptables-dev xtables-addons-source मॉड्यूल-सहायक मॉड्यूल-सहायक मॉड्यूल --verbose --text- मोड ऑटो-स्थापित xtables-addons-source स्थापित करें

एक बार ऊपर हो जाने के बाद, हम इस तरह से एक नियम जोड़ सकते हैं:

iptables-INPUT -m psd --psd-weight-दहलीज 15-psd-delay-threshold 2000 --psd-lo-port-weight 3 --psd-hi-port-weight 1 -j ULOG --ulog- उपसर्ग IN_PORTSCAN

उपर्युक्त नियम का मूल रूप से मतलब है कि हम एक काउंटर बनाएंगे जिसे 3 से बढ़ाकर हर बार 1024 से कम पोर्ट तक पहुंचने का प्रयास किया जाएगा और 1 बार हर बार 1023 से अधिक पोर्ट तक पहुंचने का प्रयास किया जाता है, और जब यह होता है काउंटर 15 सेकंड से कम की अवधि में 20 तक पहुंचता है, संकुल द्वारा पंजीकृत किया जाएगा उलूक बंदरगाहों पर एक प्रयास के रूप में। पैकेट अभी भी एक बार में खारिज किया जा सकता है, लेकिन इस मामले में हम उपयोग करने का इरादा रखते हैं fail2ban, जिसे हम बाद में कॉन्फ़िगर करेंगे।

एक बार नियम बन जाने के बाद, हमें उन्हें लगातार बनाए रखने के लिए कुछ सावधानियां बरतनी चाहिए, अन्यथा हम सर्वर को फिर से शुरू करने पर उन्हें खो देंगे। इसे पूरा करने के कई तरीके हैं; इस ट्यूटोरियल में हम शुरुआत में स्थापित किए गए iptables-persistent पैकेज का उपयोग करेंगे, जो नियमों को संग्रहीत करता है /etc/iptables/rules.v4 y /etc/iptables/rules.v6 ipv6 के लिए।

iptables-save> /etc/iptables/rules.v4

वास्तव में, हालांकि क्यूबा में ipv6 का उपयोग अभी तक व्यापक नहीं है, हम कुछ बुनियादी नियम बना सकते हैं:

IPT = $ (जो ip6tables) $ IPT -P INPUT DROP $ IPT-FORWARD DROP $ IPT-OUTPUT ACCEPT $ IPT-IN INPUT -i lo -j ACCEPT $ IPT -A INPUT! -आई लो-एम स्टेट - स्टेट इस्टैब्लिश्ड, रिलेटेड -जे एसीसीपीटी परेशान आईपीटी

इन नियमों को भी लगातार बनाया जा सकता है:

ip6tables-save> /etc/iptables/rules.v6

अंत में अधिक सुरक्षा के लिए, हम फ़ायरवॉल की रजिस्ट्री को साफ़ करते हैं और सेवाओं को फिर से शुरू करते हैं:

echo -n> /var/log/firewall.log सेवा लॉगोटेट पुनरारंभ सेवा ulogd पुनरारंभ सेवा iptables-persistent पुनरारंभ

nginx

हम Nginx को एक वेब सर्वर के रूप में उपयोग करेंगे, क्योंकि VPS में आमतौर पर वास्तविक सर्वर की तुलना में RAM की मात्रा कम होती है, इसलिए आमतौर पर Apache की तुलना में कुछ हल्का होना सुविधाजनक होता है।

Nginx को कॉन्फ़िगर करने से पहले, हम HTTPS से अधिक उपयोग के लिए एक प्रमाण पत्र (कोई पासवर्ड नहीं) बनाएंगे:

cd / etc / nginx opensl genrsa -des3 -out cert.key 4096 cp -v cert.key cert.key.original openingsl req -new -key cert.key -out cert.css खोलता है rsa -in cert.key.original - आउट सर्टिफ़िकेट। xs509l -req-days 365 -in cert -key को खोलता है। सर्स्क-सिग्नकी सर्टिफ़िकेट।

एक बार यह हो जाने के बाद, हम उपयोगकर्ता "elusuario" के लिए एक पासवर्ड फ़ाइल बनाएंगे:

htpasswd -c .htwwd उपयोगकर्ता

अगला, हम फ़ाइल को संशोधित करेंगे / Etc / nginx / साइटों से उपलब्ध / डिफ़ॉल्ट डिफ़ॉल्ट साइट वरीयताओं को सेट करने के लिए। यह इस तरह दिख सकता है:

सर्वर {server_name लोकलहोस्ट; index index.html index.htm default.html default.htm; रूट / var / www; स्थान / {# सत्यापन का क्रम निर्धारित करें और पृष्ठ को लोड करने के लिए, यदि URI नहीं मिला है तो try_files $ uri $ uri / /index.html; }} सर्वर {सुनो 127.0.0.1:443; server_name लोकलहोस्ट; index index.html index.htm default.html default.htm; रूट / var / www; ssl on; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl_session_timeout 5 मी; # HTTPS को केवल TLS (SSL से अधिक सुरक्षित) ssl_protocols TLSv1 TLSv1.1 TLSv1.2 पर सक्षम करें; # उच्च-शक्ति [उच्च] सिफर, # मूव-स्ट्रेंथ [मेडम] साइफर को सूची के अंत में वरीयता दें, # कम-शक्ति [एलओपी] सिफर (40 और 56 बिट्स) को निष्क्रिय करें # एक्सपोर्टर एल्गोरिदम के साथ निधियों को अक्षम करें। EXP] # निष्क्रिय niphers [eNULL], बिना प्रमाणीकरण [aNULL], एसएसएल (संस्करण 2 और 3) और DSS (केवल 1024 बिट्स तक कुंजी की अनुमति दें) ssl_ciphers High: + MEDIUM:! LOW: EXP! ANULL:! eNULL:; SSLv3:; SSLv2:! DSS; # सर्वर के एन्क्रिप्शन तरीकों को प्राथमिकता दें (डिफ़ॉल्ट रूप से क्लाइंट का उपयोग किया जाता है) ssl_prefer_server_ciphers; स्थान / {# प्रमाणीकरण को सक्षम करें अथॉरिटी_बेसिक "लॉगिन"; भेषज_बासिक_सेर_फाइल /etc/nginx/.htpasswd; # सत्यापन क्रम और पेज कोड को लोड करने के लिए सेट करें, अगर URI try_files $ uri $ uri / = 404 नहीं मिला; # प्रमाणित उपयोगकर्ताओं के लिए एक सूचकांक के निर्माण की अनुमति ऑटोइंडेक्स पर; autoindex_exact_size बंद; autoindex_localtime चालू; }}

हम जाँचते हैं कि विन्यास सही है:

nginx -t

अंत में, हम सेवा को पुनः आरंभ करते हैं:

सेवा nginx पुनरारंभ करें

Fail2Ban

Fail2Ban को कॉन्फ़िगर करना शुरू करने से पहले, अधिक सुरक्षा के लिए हम सेवा को रोकते हैं और रजिस्ट्री को साफ करते हैं:

fail2ban-client स्टॉप इको -n> /var/log/fail2ban.log

अगला, हम कॉन्फ़िगरेशन फ़ाइल बनाते हैं /etc/fail2ban/jail.local निम्नलिखित कस्टम सामग्री के साथ:

# कस्टम कॉन्फ़िगरेशन फ़ाइल /etc/fail2ban/jail.local # [DEFAULT] खोज समय = 43200; 12 घंटे बंटाइम = 86400; 1 दिन अधिकतम = 3; 4 वें प्रयास [ssh] सक्षम = झूठा [nginx -ory] सक्षम = सही फ़िल्टर = nginx- द्वितीयक कार्रवाई = iptables-multiport [नाम = NoAuthFailures, पोर्ट = "http, https =] varpath = / var / के बाद प्रतिबंध प्रभावी होगा log / nginx * / * error * .log [nginx-badbots] सक्षम = सही फ़िल्टर = apache-badbots क्रिया = iptables-multiport [name = BadBots, port = "http, https"] logathath = / var / log / nginx * /*access*.log बंटाइम = 604800; 1 सप्ताह की अधिकतम सीमा = 0 [nginx-login] सक्षम = सच्चा फ़िल्टर = nginx-login क्रिया = iptables-multiport [name = NoLoginFailures, port = "http, https"] logpath = / var / log / nginx * / * का उपयोग *। लॉग बंटाइम = 1800; 30 मिनट [nginx-noscript] सक्षम = सच्ची कार्रवाई = iptables-multiport [name = NoScript, port = "http, https"] फ़िल्टर = nginx-noscript logpath = /var/log/nginline*/*access*.log मैक्सिट्री = 0 [nginx -xy] सक्षम = सच्ची कार्रवाई = iptables-multiport [name = NoProxy, port = "http, https"] फ़िल्टर = nginx -xy logpath = /var/log/nginx*/acaccess*.log bantime = 604800 ; 1 सप्ताह की अधिकतम सीमा = 0 [फ़ायरवॉल] सक्षम = सच्ची कार्रवाई = iptables-multiport [नाम = फ़ायरवॉल] फ़िल्टर = फ़ायरवॉल logpath = /var/log/firewall.log मैक्सरेट्री = 0

एक बार यह पूरा हो जाने के बाद, हम डायरेक्टरी बनाते हैं /etc/fail2ban/filters.d/ निम्नलिखित फाइलें:

# aetc/fail2ban/filter.d/nginx-auth.conf # प्रामाणिक फ़िल्टर # ब्लॉक आईपी जो मूल प्रमाणीकरण का उपयोग करके प्रमाणित करने में विफल होते हैं # [परिभाषा] असफलता = मूलभूत प्रमाणीकरण के लिए कोई उपयोगकर्ता / पासवर्ड प्रदान नहीं किया गया। * ग्राहक: उपयोगकर्ता। * में नहीं मिला। * ग्राहक: उपयोगकर्ता। * पासवर्ड मिसमैच। * क्लाइंट: ignoreregex =
# aetc/fail2ban/filter.d/nginx-login.conf # लॉगइन फ़िल्टर # ब्लॉक आईपी जो वेब एप्लिकेशन के लॉग इन पेज का उपयोग करके प्रमाणित करने में विफल रहते हैं # HTTP 200 + POST / सत्रों के लिए स्कैन प्रवेश लॉग> # में विफल लॉग इन करें [परिभाषा] ] failregex = ^ -। * पोस्ट / सत्र HTTP / 1 \ .. "200 अज्ञानता =
# aetc/fail2ban/filter.d/nginx-noscript.conf # Noscript फ़िल्टर # ब्लॉक आईपी जैसे .php, .pl, .exe और अन्य मज़ेदार स्क्रिप्ट्स को निष्पादित करने की कोशिश कर रहा है। # माचिस उदाहरण # 192.168.1.1 - - "GET /something.php # [परिभाषा] असफल" -। * प्राप्त करें। * (\ _। Php | \ .asp। \ .Exe। \ _ .Pl | \ -cgi | \ scgi) ignoreregex =
# aetc/fail2ban/filter.d/proxy.conf # प्रॉक्सी फ़िल्टर # ब्लॉक आईपी प्रॉक्सी के रूप में सर्वर का उपयोग करने की कोशिश कर रहा है। # मैच जैसे # 192.168.1.1 - - "GET http://www.something.com/ # [परिभाषा] असफलता = ^ -। * Http प्राप्त करें। * इग्नोरेजेक्स =
#etc/fail2ban/filter.d/firewall.conf # फ़ायरवॉल फ़िल्टर # [परिभाषा] failregex = ^। * IN_ (INVALID | PORCSAN | UDP | TCP |) | * SRC =। । * $ अज्ञानी =

अंत में, हम सेवा शुरू करते हैं और कॉन्फ़िगरेशन लोड करते हैं:

fail2ban-service -b fail2ban-client पुनः लोड करता है

सत्यापन

अंतिम चरण के रूप में, हम रिकॉर्ड्स को देख सकते हैं पूंछ-एफ o मल्टीटैल -फॉलो-ऑल। वास्तव में, बाद वाला एप्लिकेशन यह लाभ प्रदान करता है कि यह एक ही समय में कई फ़ाइलों को देखने की अनुमति देता है और बुनियादी वाक्यविन्यास हाइलाइटिंग प्रदान करता है।

यदि कोई ईमेल खाता VPS में कॉन्फ़िगर नहीं किया गया है, तो मल्टीटैल शुरू करते समय दिखाई देने वाले चेतावनी संदेश को अक्षम करना उचित है, जिसके लिए हम निम्नलिखित कमांड निष्पादित करेंगे:

इको "check_mail: 0"> ~ / .multitailrc

वास्तव में, हम एक छोटे कमांड के साथ लॉग को जल्दी से देखने के लिए एक उर्फ ​​(4) बना सकते हैं, उदाहरण के लिए, "flog":

उपनाम

1) ये काल्पनिक मूल्य हैं।
2) यह समझने के बाद कि यह कैसे काम करता है, अन्य सेवाओं को सक्षम करना आसान है।
3) अधिक जानकारी के लिए, मैन सूडर्स चलाएं।
4) वैकल्पिक रूप से इसे ~ / .bash_aliases फ़ाइल में जोड़ा जा सकता है


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   MSX कहा

    कुछ दिलचस्प चीजें हैं, +1

  2.   युकितु कहा

    @ इस विन्यास में लाइन:

    ssl_प्रोटोकॉल SSLv3 TLSv1;

    मैं SSLv3 को इससे हटा दूंगा क्योंकि यह प्रोटोकॉल अब सुरक्षित नहीं है, यहां तक ​​कि डेबियन जेसी में, उस कारण से उस प्रोटोकॉल का उपयोग करने से बचने के लिए कई सेवाओं को कॉन्फ़िगर किया गया है।

    विषय पर जानकारी यहाँ:

    https://www.linode.com/docs/security/security-patches/disabling-sslv3-for-poodle
    http://disablessl3.com/

    1.    ह्यूगो कहा

      विचार वास्तव में HTTPS पर मुख्य सेवाओं की पेशकश करने के लिए नहीं था, लेकिन यह समझाने के लिए कि एसएसटी के लिए पोर्ट 443 का उपयोग कैसे करें, यदि आवश्यक हो तो HTTPS के लिए इसका उपयोग करने की संभावना को खोए बिना, लेकिन चेतावनी के लिए धन्यवाद।

      वैसे भी मैंने nginx कॉन्फ़िगरेशन को थोड़ा संशोधित करने के लिए लेख को अपडेट किया है और संयोग से एन्क्रिप्शन तंत्र के साथ चीजों को थोड़ा और स्पष्ट करने और कुछ छोटी त्रुटियों को ठीक करने के लिए कुछ टिप्पणियां शामिल हैं।

  3.   डैनियल PZ कहा

    इस बेहतरीन ट्यूटोरियल के लिए बहुत-बहुत धन्यवाद, अब मैं इसे अभ्यास में लाऊंगा! :D, इसे जारी रखो DesdeLinux, वे मुझे हमेशा आश्चर्यचकित करते हैं, पेरू की ओर से नमस्कार।

  4.   Eraandekuera कहा

    साझा करने के लिए आपको बहुत बहुत धन्यवाद.

  5.   फर्नांडो कहा

    बहुत अच्छा मार्गदर्शक और यह अब मोती से आता है जो मैंने इस ब्लॉग में शुरू किया था, लेकिन इससे भी अधिक अब मैं अपनी पहली वीपीएस को माउंट करने वाला हूं और अभी भी कई समस्याओं के साथ हूं, लेकिन इस लेख ने मुझे कई संदेह, धन्यवाद और बधाई से बाहर निकाल दिया है