IPFW और SSHGuard का उपयोग करके FreeBSD के लिए सुरक्षा बढ़ाना

VPS सर्वर अक्सर घुसपैठियों द्वारा लक्षित होते हैं। एक सामान्य प्रकार का हमला सिस्टम लॉग में अनधिकृत ssh लॉगिन प्रयासों के सैकड़ों के रूप में दिखाता है। फ़ायरवॉल स्थापित करना बहुत उपयोगी है, लेकिन स्वयं विघटनकारी घुसपैठ प्रयासों को पर्याप्त रूप से नियंत्रित नहीं कर सकता है।

यह ट्यूटोरियल दिखाता है कि दो कार्यक्रमों, फ़ायरवॉल और का उपयोग करके FreeBSD के लिए एक बढ़ी हुई घुसपैठ बाधा का निर्माण कैसे करें । SSHGuard एक छोटा सा ऐड-ऑन प्रोग्राम है जो "अपमानजनक" प्रविष्टियों के लिए सिस्टम लॉग की निगरानी करता है। जब अपराधी पहुंच प्राप्त करने का प्रयास करते हैं, तो अपराधी के आईपी पते से उत्पन्न ट्रैफिक को अवरुद्ध करने का निर्देश देता है। फिर अपराधी को प्रभावी ढंग से बंद कर दिया जाता है।ipfwsshguardsshguardipfw

एक बार यह समझ में आ जाए कि ये प्रोग्राम कैसे काम करते हैं, तो सर्वर प्रोटेक्शन को मैनेज करना काफी सरल है। हालांकि यह गाइड FreeBSD को कॉन्फ़िगर करने पर केंद्रित है, इसके कुछ हिस्से अन्य OS और फ़ायरवॉल सॉफ़्टवेयर पर लागू होते हैं।

चरण 1. IPFW कॉन्फ़िगर करना

FreeBSD अपने डिफ़ॉल्ट ( GENERIC) कर्नेल , और ipfw, में 3 फायरवॉल प्रदान करता है । प्रत्येक के फायदे और प्रशंसक हैं, लेकिन एफबीएसडी के मूल फ़ायरवॉल सॉफ़्टवेयर और हमारे उद्देश्यों के लिए उपयोग करने के लिए बहुत सरल हैं। यह ध्यान देने योग्य है कि इसके मैन पेज शो के रूप में कई चीजें होती हैं, हालांकि एनएटी, ट्रैफिक को आकार देने आदि जैसी क्षमताएं, विशिष्ट वीपीएस स्थिति के लिए आवश्यक नहीं हैं। सौभाग्य से, फ़ायरवॉल की बुनियादी विशेषताएं आसानी से हमारी आवश्यकताओं को पूरा करती हैं।pfipfilteripfwipfw

बूट-अप समय पर फ़ायरवॉल शुरू करने के लिए, निम्न को इसमें जोड़ें /etc/rc.conf:

firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"

serviceआदेश प्रारंभ / फ़ायरवॉल मैन्युअल को रोकने के लिए उपलब्ध है:

[user@vultr ~]$ sudo service ipfw start

स्वाभाविक रूप से, ipfwकुछ भी नहीं करेगा जब तक कि यह नियम नहीं जोड़ता है, अक्सर एक फ़ाइल से, इस उदाहरण में स्थित है /usr/local/etc/IPFW.rules। नियम फ़ाइल वास्तव में कहीं भी स्थित हो सकती है या उसका कोई भी नाम हो सकता है, जब तक कि वह "फ़ायरवॉल_स्क्रिप्ट" पैरामीटर से मेल खाती है। नियम फ़ाइल नीचे विस्तार से वर्णित है।

चरण 2. SSHGuard स्थापित और कॉन्फ़िगर करें

sshguardविभिन्न फायरवॉल के साथ उपयोग के लिए कई स्वादों में आता है। pkgलाने और स्थापित करने के लिए उपयोगिता का उपयोग करें sshguard-ipfw:

[user@vultr ~]$ sudo pkg install sshguard-ipfw

ज्यादातर मामलों में यह सब करने की जरूरत है। /etc/rc.confबूट पर शुरू करने के लिए उपयुक्त चर स्वचालित रूप से डाला जाता है :

sshguard_enable="YES"

डिफॉल्ट आमतौर पर अच्छी तरह से काम करते हैं। यदि विभिन्न मूल्य आवश्यक हैं, तो sshguardमैन पेज मापदंडों के बारे में विस्तृत जानकारी देता है:

# sshguard--program defaults, so don't need to be in rc.conf unless assigning different value
# sshguard_pidfile="/var/run/sshguard.pid"
# sshguard_watch_logs="/var/log/auth.log:/var/log/mail"
# sshguard_blacklist="40:/var/db/sshguard/blacklist.db"
# sshguard_safety_thresh="40"
# sshguard_pardon_min_interval="420"
# sshguard_prescribe_interval="1200"

आप sshguardसामान्य serviceआह्वान के साथ शुरुआत कर सकते हैं :

[user@vultr ~]$ sudo service sshguard start

चरण 3. एक नियम स्क्रिप्ट बनाएं

सबसे कठिन हिस्सा फ़ायरवॉल नियम बना रहा है। ipfwप्रदान की गई /etc/rc.firewallस्क्रिप्ट का उपयोग कर सकते हैं , लेकिन इसे SSHGuard, साथ ही विभिन्न परिचालन परिदृश्यों को समायोजित करने के लिए संशोधित करना होगा। कई वेब पेज और फ्रीबीएसडी मैनुअल में ऐसा करने के बारे में उपयोगी जानकारी है। हालाँकि, एक नियम फ़ाइल लिखना इतना कठिन नहीं है, इसके अलावा, कस्टम नियम को समझना और आवश्यक होने पर बदलना आसान हो सकता है।

ipfwनियमों की एक महत्वपूर्ण विशेषता यह है कि पहला मैच जीतता है जिसका मतलब है कि नियम क्रम महत्वपूर्ण है। में ipfw, प्रत्येक नियम एक कमांड है, और नियम फ़ाइल एक निष्पादन योग्य शेल स्क्रिप्ट है। यह नियमों को बदलकर नियमों को बदलने की अनुमति देता है, फिर शेल फ़ाइल के रूप में नियम फ़ाइल को चला रहा है:

[user@vultr /usr/local/etc]$ sudo ./IPFW.rules

आम तौर पर, एक नियम फ़ाइल ipfwकमांड के लिए एक चर को परिभाषित करेगी , फिर वर्तमान नियमों को स्पष्ट करेगी, सामान्य नियम जारी करेगी, फिर "नियमों" को "नियमों" के बाद सेट करें। IPfw मैनुअल पेज और अन्य संसाधनों में नियम संरचना और विकल्पों के बारे में जानकारी होती है जो कम से कम कहने के लिए कई हैं।

चूंकि FreeBSD sshguard संस्करण 1.6.2 संस्करण में अपडेट किया गया है, इसलिए अपराधियों के लिए अवरुद्ध नियम सम्मिलित करने की विधि बदल गई है। अब अपराधियों के पते एक ipfw तालिका (तालिका 22 के विशिष्ट होने के लिए) में रखे गए हैं, बल्कि पहले के 55000 से ऊपर के नियमों में डाले गए हैं।

सौभाग्य से, तालिका का उपयोग करने के लिए नियम फ़ाइल सेट करना बहुत सरल है। यह केवल तालिका नियम को सही स्थान पर रखने की बात है, और नियम लिखते समय सही वाक्यविन्यास का उपयोग करना सुनिश्चित करना है।

जब sshguardकोई अपराधी पाता है, तो वह अपराधी के पते को अपने ब्लैकलिस्ट में डालता है, और पते को ipfwतालिका में भी सम्मिलित करता है, इसलिए यह पहुंच से इनकार करते हुए "ट्रिगर" होगा। यह नियम इन उद्देश्यों को पूरा करेगा:

01000 deny ip from table\(22\) to any

इस मामले में इनबाउंड सेवाओं की अनुमति देने वाले नियमों को अभी भी 01000 से ऊपर रखना आवश्यक है । उदाहरण के लिए, 10.20.30.40मान लें कि पता तालिका 22 में एक अपराधी है, और हमारे पास यह ipfw नियम है:

56420 allow tcp from any to me dst-port 22 in via $vif

चूंकि नियम 56420 से पहले 01000ipfw नियम का सामना करना पड़ता है , इसलिए इसे अवरुद्ध कर दिया गया है । इसे कभी भी "22 अनुमति दें" नियम से नहीं देखा जाएगा। यदि अनुमति नियम में 00420 की तरह "नियमित" नंबर था , तो खराब ट्रैफ़िक को कभी भी अवरुद्ध नहीं होने दिया जाएगा (क्योंकि 00420 01000 से कम है और "पहला मैच जीतता है")। 10.20.30.40

अद्यतन संस्करण की एक अच्छी विशेषता यह है कि अब जब sshguard शुरू होता है तो ब्लैकलिस्ट में सभी पते तालिका में जोड़ दिए जाते हैं और आने वाले अपराधियों को बिना देरी किए ब्लॉक करने के लिए उपलब्ध होते हैं। ब्लैकलिस्ट संचयी है और सत्रों के बीच बरकरार है।

इस बिंदु पर इसके ipfwलिए संशोधित एक पूर्ण नियम प्रदर्शित करना शायद समझदारी है sshguard। टिप्पणियों को नियम तर्क का पालन करना बहुत आसान बनाना चाहिए:

#!/bin/sh

# ipfw config/rules
# from FBSD Handbook, rc.firewall, et. al.

# Flush all rules before we begin.
ipfw -q -f flush

# Set rules command prefix
cmd="ipfw -q add "

vif="vtnet0"

# allow all for localhost
$cmd 00010 allow ip from any to any via lo0

# checks stateful rules.  If marked as "keep-state" the packet has
# already passed through filters and is "OK" without futher
# rule matching
$cmd 00101 check-state

# allow DNS out
$cmd 00110 allow tcp from me to any dst-port 53 out via $vif setup keep-state
$cmd 00111 allow udp from me to any dst-port 53 out via $vif keep-state

# allow dhclient connection out (port numbers are important)
$cmd 00120 allow udp from me 68 to any dst-port 67 out via $vif keep-state

# allow HTTP HTTPS replies
$cmd 00200 allow tcp from any to any dst-port 80 out via $vif setup keep-state
$cmd 00220 allow tcp from any to any dst-port 443 out via $vif setup keep-state

# allow outbound mail
$cmd 00230 allow tcp from any to any dst-port 25 out via $vif setup keep-state
$cmd 00231 allow tcp from any to any dst-port 465 out via $vif setup keep-state
$cmd 00232 allow tcp from any to any dst-port 587 out via $vif setup keep-state

# allow icmp re: ping, et. al. 
# comment this out to disable ping, et.al.
$cmd 00250 allow icmp from any to any out via $vif keep-state

# alllow timeserver out
$cmd 00260 allow tcp from any to any dst-port 37 out via $vif setup keep-state

# allow ntp out
$cmd 00270 allow udp from any to any dst-port 123 out via $vif keep-state

# allow outbound SSH traffic
$cmd 00280 allow tcp from any to any dst-port 22 out via $vif setup keep-state

# otherwise deny outbound packets
# outbound catchall.  
$cmd 00299 deny log ip from any to any out via $vif

# inbound rules
# deny inbound traffic to restricted addresses
$cmd 00300 deny ip from 192.168.0.0/16 to any in via $vif
$cmd 00301 deny ip from 172.16.0.0/12 to any in via $vif
$cmd 00302 deny ip from 10.0.0.0/8 to any in via $vif
$cmd 00303 deny ip from 127.0.0.0/8 to any in via $vif
$cmd 00304 deny ip from 0.0.0.0/8 to any in via $vif
$cmd 00305 deny ip from 169.254.0.0/16 to any in via $vif
$cmd 00306 deny ip from 192.0.2.0/24 to any in via $vif
$cmd 00307 deny ip from 204.152.64.0/23 to any in via $vif
$cmd 00308 deny ip from 224.0.0.0/3 to any in via $vif

# deny inbound packets on these ports
# auth 113, netbios (services) 137/138/139, hosts-nameserver 81 
$cmd 00315 deny tcp from any to any dst-port 113 in via $vif
$cmd 00320 deny tcp from any to any dst-port 137 in via $vif
$cmd 00321 deny tcp from any to any dst-port 138 in via $vif
$cmd 00322 deny tcp from any to any dst-port 139 in via $vif
$cmd 00323 deny tcp from any to any dst-port 81 in via $vif

# deny partial packets
$cmd 00330 deny ip from any to any frag in via $vif
$cmd 00332 deny tcp from any to any established in via $vif

# allowing icmp re: ping, etc.
$cmd 00310 allow icmp from any to any in via $vif

# allowing inbound mail, dhcp, http, https
$cmd 00350 allow udp from any 53 to me in via $vif
$cmd 00360 allow tcp from any 53 to me in via $vif
$cmd 00370 allow udp from any 67 to me dst-port 68 in via $vif keep-state

$cmd 00400 allow tcp from any to me dst-port 80 in via $vif setup limit src-addr 2
$cmd 00410 allow tcp from any to me dst-port 443 in via $vif setup limit src-addr 2

# SSHguard puts offender addresses in table 22. Set up the table rule
# Please note the '\(22\)' syntax, necessary since it's run as shell command
$cmd 01000 deny ip from table\(22\) to any

# allow inbound ssh, mail. PROTECTED SERVICES: numbered ABOVE sshguard blacklist range 
$cmd 56420 allow tcp from any to me dst-port 22 in via $vif setup limit src-addr 2
$cmd 56530 allow tcp from any to any dst-port 25 in via $vif setup keep-state
$cmd 56531 allow tcp from any to any dst-port 465 in via $vif setup keep-state
$cmd 56532 allow tcp from any to any dst-port 587 in via $vif setup keep-state

# deny everything else, and log it
# inbound catchall
$cmd 56599 deny log ip from any to any in via $vif

# ipfw built-in default, don't uncomment
# $cmd 65535 deny ip from any to any

चरण 4. स्टार्टअप और परीक्षण

सिस्टम की जरूरत अलग-अलग होती है और पोर्ट के अलग-अलग विकल्प ब्लॉक करने या अनब्लॉक करने के नियम में परिलक्षित होते हैं। एक बार नियम समाप्त हो जाने के बाद, फ़ाइल को /usr/local/etc/IPFW.rulesFBSD सेवाओं में सहेजें और शुरू करें:

 # service ipfw start
 # service sshguard start

संवर्धित फ़ायरवॉल अब चलना चाहिए! जाँच करें sshguard:

 [user@vultr ~]$ sudo pgrep -lfa ssh

यदि sshguardचल रहा है, तो इसकी पिड और पूर्ण कमांड लाइन प्रदर्शित होती है:

720 /usr/local/sbin/sshguard -b 40:/var/db/sshguard/blacklist.db -l /var/log/auth.log -l /var/log/maillog -a 40 -p 420 -s 1200 -w /usr/local/etc/sshguard.whitelist -i /var/run/sshguard.pid

यह आँकड़ों के साथ फ़ायरवॉल नियमों को दर्शाता है और पिछली बार एक पैकेट नियम से मेल खाता है:

 [user@vultr ~]$ sudo ipfw -cat list

घंटे या दिनों के बाद, अपराधियों के पते ब्लैकलिस्ट में जोड़ दिए जाते हैं और तालिका 22 में भी दी जाती है। तालिका के सभी पतों को देखने के लिए, इस पते का उपयोग करें:

ipfw table 22 list

परिणाम के रूप में छपा है:

10.10.10.118/32 0
10.10.10.72/32 0
...

जैसा कि ऊपर वर्णित है, इन पतों से कनेक्शन अस्वीकृत हैं। बेशक, पहली बार दौड़ने पर sshguardसूची में कोई पता नहीं होगा, लेकिन समय के साथ-साथ यह लंबा हो सकता है। एक विकल्प तालिका में कई प्रविष्टियों के साथ पते के लिए अलग-अलग अवरुद्ध नियम बना रहा है और फिर उन्हें ब्लैकलिस्ट से हटा रहा है।

चरण 5. सतर्कता बरतते हुए ...

यह सुनिश्चित करने के लिए कि घुसपैठ को नियंत्रित किया जाता है, कभी-कभी लॉग की जांच करना एक अच्छा विचार है। आम तौर पर, /var/log/auth.logऔर /var/log/securityजानकारीपूर्ण हैं। नेटवर्क सेवाओं को कवर करने में अंतराल या त्रुटियां स्पष्ट हो सकती हैं। फ़ायरवॉल नियमों को आवश्यकतानुसार संशोधित करना सर्वर प्रशासन का एक सामान्य हिस्सा है।

पूर्व sshguard संस्करणों में, जब /var/db/sshguard/blacklist.dbफ़ाइल बड़ी हो गई थी, तो यह sshguardसिस्टम बूट शुरू करने से रोक सकता था। ब्लैकलिस्ट फ़ाइल को हटाने या नाम बदलने की अनुमति sshguard। यह समस्या नवीनतम sshguard संस्करण में तय की गई प्रतीत होती है, इसलिए यह समाधान संभवतः अब आवश्यक नहीं है।

जिस आईपी पते से आप SSH सत्र से जुड़े हैं, उसे श्वेतसूची में सुनिश्चित करें। यदि आप गलती से अपने आप को लॉक कर लेते हैं, तो आप हमेशा https://my.vultr.com और नोवेलिस्ट आईपी में noVNC कंसोल से जुड़ सकते हैं।

सममिंग, के संयोजन का उपयोग करके ipfwऔर sshguardअपने FreeBSD सिस्टम को सुरक्षित रखने और अपना काम करने में मदद करता है। घुसपैठ नेटवर्क गतिविधि को कम करने से एक अतिरिक्त लाभ होता है: कम "शोर" से सिस्टम ऑपरेशन को ट्रैक और ट्यून करना आसान हो जाता है, जिससे सुरक्षित, बेहतर चल रहे सर्वर में योगदान होता है।

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


Tags: #BSD #Security

Leave a Comment

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

एनएफएस एक नेटवर्क-आधारित फाइल सिस्टम है जो कंप्यूटरों को कंप्यूटर नेटवर्क पर फाइलों तक पहुंचने की अनुमति देता है। यह मार्गदर्शिका बताती है कि आप एनएफ पर फ़ोल्डर्स को कैसे उजागर कर सकते हैं

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

एलयूकेएस (लिनक्स यूनिफाइड की सेटअप) लिनक्स के लिए उपलब्ध विभिन्न डिस्क एन्क्रिप्शन प्रारूपों में से एक है जो प्लेटफॉर्म एग्नॉस्टिक है। यह ट्यूटोरियल आपको बुद्धि प्रदान करेगा

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

अक्टूबर एक खुला स्रोत सामग्री प्रबंधन प्रणाली है जो लारवेल PHP फ्रेमवर्क पर आधारित है। एक सुरुचिपूर्ण इंटरफ़ेस और एक संक्षिप्त मॉड्यूलर वास्तुकला के साथ