जब कोई SSH या रिमोट डेस्कटॉप का उपयोग कर सर्वर में लॉग इन करता है तो उसे सूचित किया जाता है


13

मेरे पास एक मैक मिनी सर्वर है जो ओएस एक्स लॉयन सर्वर 10.7.3 पर चल रहा है। यह बहुत ज्यादा समस्याओं के बिना पहुंच से बाहर चलाता है। हालांकि, लॉग के अनुसार सर्वर निरंतर "हमले" के तहत है। फ़ायरवॉल और सुरक्षा यह लग रहा है।

क्या कोई एप्लिकेशन / स्क्रिप्ट है जो एसएसएच, एडमिन टूल्स या एआरडी का उपयोग करके सर्वर में लॉग इन करते समय मुझे कोई भी ईमेल भेज सकती है?

चूंकि मशीन एक अलग शहर में डाटासेंटर में अनाकर्षक, बिना सिर के चलती है, मुझे चिंता है कि कोई व्यक्ति (शुद्ध दृढ़ता के माध्यम से) पासवर्ड को क्रैक करने या सिस्टम पर समझौता करने का प्रबंधन कर सकता है। जानकर मैं चौकन्ने हो जाऊंगा और मेरा मन शांत हो जाएगा।


2
वास्तव में इसका उत्तर नहीं है इसलिए एक टिप्पणी: क्या आपने फेल २ब्न ([हाउ-टूव] ( फेल २ब्न.ओआर.आई.आई.आई.सी. / इंडेक्स.फैप / हाउटो_मैक_ओएस_एक्स_सर्वर_१.१०.५) जैसी किसी चीज का उपयोग करने पर विचार किया है ?) इस तरह से आप आईपी पर प्रतिबंध लगा सकते हैं। कब तक उन पर प्रतिबंध लगाया जाता है, आदि के लिए नियम निर्धारित करें। यह आपको हैक होने से रोकने में मदद करेगा। और शायद यह अधिक सहायक है तो हर लॉगिन प्रयास के लिए एक ईमेल प्राप्त करना।
बोरेटम

जवाबों:


4

आपका सबसे अच्छा बचाव हमेशा अनावश्यक सेवाओं को बंद करना है। यदि आप दूरस्थ डेस्कटॉप का उपयोग नहीं कर रहे हैं: इसे बंद कर दें। यदि आप HTTP या FTP सर्वर का उपयोग नहीं कर रहे हैं: उन्हें बंद कर दें। कम सेवाएं, संभवतः घुसपैठियों के शोषण के लिए प्रवेश के कम बिंदु।

इसे बंद करने के अलावा, कुछ मुफ्त और खुले स्रोत उत्पाद हैं जो ओएस एक्स के अनुकूल हैं जिन्हें आप अपनी मशीन पर घुसपैठ का पता लगाने के लिए देख सकते हैं।

फक - फक करना

हालाँकि मैंने इसे व्यक्तिगत रूप से नहीं चलाया है, लेकिन मेरे पास ऐसे सहयोगी हैं जो घुसपैठ का पता लगाने के लिए इसे जानते हैं और उस पर भरोसा करते हैं। यह बीएसडी-संगत है, इसलिए यह ओएस एक्स के लिए एक अच्छा फिट बनाता है। स्नोर्ट के साथ जाने के लिए एक और उल्टा यह होमब्रे पैकेज के रूप में उपलब्ध है :

> brew info snort
snort 2.9.0.5
http://www.snort.org
Depends on: daq, libdnet, pcre
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/snort.rb

==> Caveats
For snort to be functional, you need to update the permissions for /dev/bpf*
so that they can be read by non-root users.  This can be done manually using:
    sudo chmod 644 /dev/bpf*
or you could create a startup item to do this for you.

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

> brew install snort

और आप इसके साथ आरंभ करने के लिए तैयार हैं।

OS X लायन सर्वर सेटअप गाइड के लिए इस Snort को देखें , जो Snort समुदाय को आपके OS X मशीन के लिए नियम लेखन के साथ आरंभ करने के लिए प्रदान करता है। यह एक महान दस्तावेज है और, स्रोत से स्नॉर्ट स्थापित करने के माध्यम से चलने के अलावा (जो आपको करने की आवश्यकता नहीं है), यह उन सभी चीजों के बारे में बात करता है जो आपको इसे बचाने में मदद करने के लिए अपने ओएस एक्स लायन सर्वर का उदाहरण देना चाहिए। यदि आप Homebrew के माध्यम से स्थापित करते हैं, तो पीडीएफ में धारा 5 (पृष्ठ 13) पर शुरू करें क्योंकि आपको इसे स्रोत कोड से स्थापित करने के बारे में चिंता करने की आवश्यकता नहीं है।

Tripwire

मैं तेजी से घुसपैठ का पता लगाने और चेतावनी देने के लिए linux मशीनों पर Tripwire चला रहा हूं । यह प्रभावी है लेकिन इसे स्थापित करने के लिए एक जानवर का एक सा है। लॉग फ़ाइल के विरुद्ध नियमों का मिलान होने पर यह कार्य कर सकता है। बेशक, एक प्रेमी हैकर को जल्द से जल्द ट्रिपवायर को निष्क्रिय करने के लिए पता चल रहा है, ताकि वे अपने सत्र को काट न दें।

मैकवर्ल्ड संकेत ओएस एक्स पर ट्रिपवायर स्थापित करने के बारे में बात करता है । यह सरल नहीं है और लेख का उल्लेख है कि यह परीक्षण नहीं किया गया है के साथ समाप्त होता है।


ओएस एक्स लायन सर्वर अनुकूली फ़ायरवॉल ने लोगों को बाहर रखने का एक अच्छा काम किया है। त्रिपवायर और स्नॉर्ट मुझे मानक फ़ायरवॉल की तुलना में क्या लाभ देते हैं? क्या यह प्रयास के लायक है?
ब्लौद्रक

1
न तो ट्रिपवायर या स्नॉर्ट का मतलब फायरवॉल रिप्लेसमेंट होना है। वे घुसपैठ का पता लगाने वाले सिस्टम हैं। वे संदिग्ध गतिविधि के लिए आपके सिस्टम लॉग की निगरानी के लिए विभिन्न तरीकों का एक गुच्छा का उपयोग करते हैं और आपको ईमेल करने या दूरदराज के डेमों को बंद करने या नेटवर्क बंदरगाहों को बंद करने जैसे निगरानी परिणामों के आधार पर कार्रवाई कर सकते हैं।
इयान सी

4

आप ssh को hardsh और स्थापित कर सकते हैं, sshguard, और Snort, Barnyard, Base और Swatch।

विवरण के लिए ये लिंक देखें:

https://discussions.apple.com/thread/3565475 https://discussions.apple.com/thread/4473229?tstart=0

  1. रूट और पासवर्ड लॉगिन बंद करें:

    vi /etc/sshd_config

    PermitRootLogin no
    PasswordAuthentication no
    ChallengeResponseAuthenticatio no

    फिर ssh-keygenदूरस्थ क्लाइंट पर सार्वजनिक / निजी कुंजियों को उत्पन्न करने के लिए उपयोग करें जो सर्वर पर दूरस्थ रूप से लॉगिन करने के लिए उपयोग किए जा सकते हैं:  

    client$ ssh-keygen -t rsa -b 2048 -C client_name [Securely copy ~/.ssh/id_rsa.pub from client to server.] server$ cat id_rsa.pub > ~/.ssh/known_hosts  

  2. Denyhosts और sshguard स्थापित करें।

    • sudo port install denyhosts sshguard
    • sudo port load denyhosts
    • sudo port load sshguard

    आप सभी ट्रैफ़िक को ब्लॉक करने के लिए denyhosts को कॉन्फ़िगर कर सकते हैं, न कि केवल ssh ट्रैफ़िक को।

  3. स्नॉर्ट, हमलों की दुनिया के नक्शे के साथ:

    https://discussions.apple.com/thread/4473229?tstart=0


3

प्रश्न का सीधा उत्तर देने के लिए। मेरे पास एक और स्क्रिप्ट है जो मुझे ईमेल करती है, फिर से, आधी रात के आसपास, अगर कोई भी सफलतापूर्वक ssh के माध्यम से लॉग इन करता है।

#!/usr/bin/env bash

mm=`date +%b`
dd=`date $1 +%d`
dd=`expr $dd`
if [ "$dd" -ge "10" ]
  then 
    dt=`echo "$mm $dd"` 
  else 
    dt=`echo "$mm  $dd"` 
fi

cat /var/log/secure.log | grep -E '(Accepted|SUCCEEDED)'| grep -E -v '(my.ip.address|192.168.1)' | grep "$dt" >> /tmp/access_granted

/usr/bin/mail -E -s "Access granted" email@myserver.com < /tmp/access_granted
rm /tmp/access_granted

grepयदि आप चाहें, तो अपने स्वयं के निर्धारित आईपी को बाहर करने के लिए, और अपने ईमेल पते का उपयोग करने के लिए ऊपर संपादित करें । आप VNC के लिए विफलताओं को जोड़ने के लिए मेरे अन्य उत्तर में कुछ कोड जोड़ सकते हैं।


मैंने एक शेड्यूल पर चलने के लिए स्क्रिप्ट बनाई और मैं आज रात ईमेल का इंतजार कर रहा हूं।
ब्लौद्रक

दैनिक आधार पर चीजों को करने में परेशानी तब तक होती है जब आप घुसपैठ की हवा को पकड़ लेते हैं, नुकसान पहले से ही हो सकता है।
इयान सी

@ इयान सी - सहमत हैं, लेकिन आप हमेशा ईमेल की आवृत्ति बढ़ा सकते हैं। इसके अतिरिक्त, आपके द्वारा स्थापित किए गए घुसपैठ की रोकथाम के उपायों में आपको कुछ विश्वास होना चाहिए। मेरे पास मेरे Fail2ban सेटअप में आत्मविश्वास का एक बहुत ही उचित डिग्री है।
अफ्रीकी

2

Fail2ban पर थोड़ा विस्तार करने के लिए , एक बार इसे सेट करने और चलाने के बाद मेरे पास एक स्क्रिप्ट है जिसे मैं आधी रात से पहले चलाता हूं जो लॉग्स को स्क्रैप करता है और मुझे ईमेल करता है कि Fail2ban पिछले दिन के लिए क्या कर रहा है।

स्क्रिप्ट इस प्रकार है और इसे क्रोन या एक लॉन्चड प्लिस्ट से चलाया जा सकता है।

#!/usr/bin/env bash

mm=`date +%b`
dd=`date $1 +%d`
dd=`expr $dd`
if [ "$dd" -ge "10" ]
  then 
    dt=`echo "$mm $dd"` 
  else 
    dt=`echo "$mm  $dd"` 
fi

cat /var/log/system.log | grep "$dt" | grep org.fail2ban | grep -v COMMAND > /tmp/fail2ban_deny
cat /var/log/fail2ban.log | grep -E '(WARN|ERR|rotation|target)' | grep `date $1 +%Y-%m-%d` >> /tmp/fail2ban_deny
cat /var/log/ipfw.log | grep TCP | grep "$dt" >> /tmp/fail2ban_deny
cat /var/log/secure.log | grep VNC | grep FAILED | grep "$dt" >> /tmp/fail2ban_deny


/usr/bin/mail -E -s "Fail2ban ipfw" email@yourserver.com < /tmp/fail2ban_deny
rm /tmp/fail2ban_deny

आपको स्पष्ट रूप से अपनी पसंद के ईमेल पते का उपयोग करने की आवश्यकता होगी।

Fail2ban की स्थापना एक पूरी अन्य समस्या है। मैंने इसके बारे में विस्तार से लिखा है।


0

यदि आप X कोड कमांड लाइन संकलक स्थापित है तो मैक ओएस एक्स पर Google प्रमाणक PAM प्लगइन स्थापित करना काफी सरल है। कोड और निर्देश यहाँ हैं:

https://code.google.com/p/google-authenticator/wiki/PamModuleInstructions

एक बार जब आप अपने टोकन को इनिशियलाइज़ कर लेते हैं (एक कोड जो आप अपने फ़ोन पर ऐप को फीड करते हैं) उत्पन्न करते हैं, तो आपके पास अपनी मशीन की सुरक्षा के लिए दो कारक प्रमाणीकरण होंगे। बिना आरंभिक टोकन के कोई भी खाता लॉगिन नहीं कर पाएगा, इसलिए यदि आप रूट लॉगिन की अनुमति नहीं देना चाहते हैं, तो उस खाते के लिए एक कुंजी प्रारंभ न करें।

लेकिन गंभीरता से, DenyHosts की तरह कुछ समझ में आता है अगर आपको इंटरनेट पर SSH को खुला रखना है। दुर्भाग्य से, मैक ओएस एक्स V10.8 के बाद से, Apple ने SSH डेमॉन से tcpwrappers का समर्थन हटा दिया है, इसलिए यह /etc/deny.hosts को अनदेखा करता है, जो कि एक मूक कदम था, अगर आप मुझसे पूछें, तो एक सुरक्षा सुविधा को हटा दें।

उस के चारों ओर काम करने के लिए, मैंने एक अप-टू-डेट ओपनश डेमन को स्थापित करने के लिए MacPorts का उपयोग किया, और पूर्ण tcpwrappers कार्यक्षमता को पुनर्स्थापित किया, संपादित करें और उपयोग करें DenyHosts डेमन को मॉनिटर करने के लिए /var/log/system.log और प्रतिबंध IP जो कि लॉगिन और पासवर्ड का अनुमान लगा रहे हैं । और हर बार जब आप OS को अपग्रेड करते हैं, तो MacPorts को अपडेट करना और ओपनश / DenyHosts को फिर से इंस्टॉल करना न भूलें।

शुभ लाभ!


0

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

नीचे स्रोत कोड:

#!/usr/local/bin/ruby

require 'mail'
require 'file-tail'

def sendMail(mail_subject,mail_body,dest_email,port)
  Mail.defaults do
    delivery_method :smtp, address: "localhost", port: port
  end

  mail = Mail.new do
    from     'root@localhost.com'
    to        dest_email
    subject   mail_subject
    body      mail_body
  end

  mail.delivery_method :sendmail
  mail.deliver
end

File.open('/var/log/auth.log') do |log|
  log.extend(File::Tail)
  log.interval = 10
  log.backward(1)
  log.tail do |line| 
    puts line if line.match(/ssh.*accepted password.*$/i)
    sendMail('New SSH Connection',line,'youremail@gmail.com',445) if line.match(/ssh.*accepted password.*$/i)

    puts line if line.match(/ssh.*failed password.*$/i)
    sendMail('Failed SSH attempt',line,'youremail@gmail.com',445) if line.match(/ssh.*failed password.*$/i)

    puts line if line.match(/sshguard.*$/i)
    sendMail('SSH IP Blocked', line,'youremail@gmail.com',445) if line.match(/sshguard.*$/i)
  end
end
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.