Birisi SSH veya Uzak Masaüstü kullanarak bir sunucuda oturum açtığında bildirim alma


13

OS X Lion Server 10.7.3 çalıştıran bir mac mini sunucum var. Hemen hemen problemsiz katılımsız çalışır. Ancak, sunucu günlüklere göre sürekli "saldırı" altında. Güvenlik duvarı ve güvenlik duruyor gibi görünüyor.

SSH, Yönetici Araçları veya ARD kullanarak bir kullanıcı / sunucuya her giriş yaptığında bana e-posta gönderebilecek herhangi bir uygulama / komut dosyası var mı?

Makine gözetimsiz, farklı bir şehirdeki bir veri merkezinde başsız çalıştığı için, birinin (saf kararlılıkla) bir şifreyi kırmayı veya sistemde bir uzlaşma bulmayı başarabileceğinden endişe duyuyorum. Uyarı alacağımı bilmek zihnimi rahatlatacak.


2
Bu yüzden gerçekten bir cevap değil: fail2ban ([How-Tow] ( fail2ban.org/wiki/index.php/HOWTO_Mac_OS_X_Server_(10.5) ) gibi bir şey kullanmayı düşündünüz mü? onlar yasaklı ne kadar süre için kural koymak, vb size saldırıya uğrayan önlemeye yardımcı olur Ve bu belki daha fazla sonra her oturum açma girişimi için bir e-posta almak yararlı olur..
boretom

Yanıtlar:


4

En iyi savunmanız her zaman gereksiz hizmetleri kapatmaktır. Uzak masaüstünü kullanmıyorsanız: kapatın. HTTP veya FTP sunucularını kullanmıyorsanız: kapatın. Daha az hizmet çalışıyor, davetsiz misafirlerin sömürülmesi için daha az giriş noktası.

Kilitlemenin yanı sıra, makinenizde izinsiz giriş tespiti yapmak için bakabileceğiniz OS X dostu bazı ücretsiz ve açık kaynaklı ürünler vardır.

homurdanma

Kişisel olarak çalıştırmama rağmen, izinsiz giriş tespiti için bilen ve güvenen meslektaşlarım var. It adlı BSD uyumlu o başka baş Snort ile devam etmek OS X için bir iyi bir uyum yapar bu yüzden en uygun bir şekildedir Homebrew paketin:

> 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.

Böylece, kurulum için basitleştirilmiş bir yol elde edersiniz ve OS X'e iyi bir şekilde bağlanıp orada çalıştığına güvenebilirsiniz. İle Homebrew sadece yapmanız gereken yüklü:

> brew install snort

Ve başlamaya hazırsınız.

Şuna bak OS X Lion Sunucusu kurulum kılavuzu için Snort Snort topluluk OS X makine için kural yazı ile başlamak için sağladığı. Bu harika bir belge ve Snort'u kaynaktan yüklemeye devam etmenin yanı sıra (yapmanız gerekmeyen), OS X Lion Server örneğinizi korumanıza yardımcı olması için yapmanız gereken her şeyden bahsediyor. Homebrew ile kurarsanız, kaynak koddan yükleme konusunda endişelenmenize gerek olmadığı için PDF'deki Bölüm 5 (sayfa 13) 'den başlayın.

tripwire

Hızlı saldırı tespit ve uyarı yapmak için linux makinelerde Tripwire çalıştırdım . Etkili ama kurmak bir canavar. Kurallar günlük dosyalarıyla eşleştirildiğinde eylemler gerçekleştirebilir. Tabii ki, anlayışlı bir hacker, Tripwire'ı içeri girer girmez devre dışı bırakmayı bilecek, böylece oturumlarının kesilmesi ile sonuçlanmayacaklar.

MacWorld ipucu OS X'te Tripwire kurulumu hakkında konuşuyor . Basit değil ve makale test edilmediğinden bahsetmekle bitiyor.


OS X Lion Server uyarlanabilir güvenlik duvarı insanları dışarıda tutmak için harika bir iş çıkardı. Tripwire ve Snort standart güvenlik duvarına kıyasla bana ne fayda sağlıyor? Çabaya değer mi?
bloudraak

1
Tripwire veya Snort'un hiçbiri güvenlik duvarı değişikliği değildir. Saldırı tespit sistemleri. Şüpheli etkinlik için sistem günlüklerinizi izlemek için bir dizi farklı yaklaşım kullanırlar ve size e-posta göndermek veya uzak cinleri kapatmak veya ağ bağlantı noktalarını kapatmak gibi sonuçları izlemeye dayalı olarak işlem yapabilirler.
Ian C.

4

Ssh'ı sertleştirebilir ve denyhosts, sshguard ve Snort, Barnyard, Base ve Swatch yükleyebilirsiniz.

Ayrıntılar için bu bağlantılara bakın:

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

  1. Kök ve şifre girişlerini kapatın:

    vi /etc/sshd_config

    PermitRootLogin no
    PasswordAuthentication no
    ChallengeResponseAuthenticatio no

    Ardından ssh-keygenuzak istemcide, sunucuya uzaktan oturum açmak için kullanılabilecek genel / özel anahtarlar oluşturmak için kullanın:  

    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 ve sshguard'ı yükleyin.

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

    Denyhost'ları sadece ssh trafiğini değil tüm trafiği engelleyecek şekilde yapılandırabilirsiniz.

  3. Snort, dünya saldırıları haritası ile:

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


3

Sorulan soruya doğrudan cevap vermek. Herkes ssh ile başarılı bir şekilde oturum açarsa, yine gece yarısı civarında bana e-posta gönderen başka bir komut dosyası var.

#!/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

Düzen grepyukarıda İsterseniz kendi sabit IP dışlamak için ve e-posta adresi kullanmak. VNC'ye hata eklemek için diğer yanıtımdaki bazı kodları birleştirebilirsiniz.


Komut dosyasını bir programda çalıştırmak için oluşturdum ve bu gece e-postayı bekliyorum.
bloudraak

Günlük olarak bir şeyler yapmanın zorluğu, saldırının rüzgârını yakaladığınız zaman hasarın önceden yapılmış olabilmesidir.
Ian C.

@Ian C. - kabul ettiniz, ancak e-postanın sıklığını her zaman artırabilirsiniz. Ayrıca, ayarladığınız izinsiz giriş önleme tedbirlerine biraz inanmanız gerekir. Fail2ban kurulumuma çok makul derecede güveniyorum.
afragen

2

Fail2ban'da biraz genişletmek için, kurulduktan ve çalıştırıldıktan sonra, günlükleri kazımak ve Fail2ban'ın önceki gün için ne yaptığını bana e-posta ile göndermek için gece yarısından hemen önce çalıştırdığım bir komut dosyası var.

Komut dosyası aşağıdaki gibidir ve cron veya bir launchd plist'ten çalıştırılabilir.

#!/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

Belli bir şekilde seçtiğiniz e-posta adresini kullanmanız gerekecektir.

Fail2ban'ın kurulması başka bir konudur. Bunun hakkında kapsamlı bir şekilde yazdım.


0

Yüklü X kodu komut satırı derleyiciniz varsa Google Authenticator PAM eklentisini Mac OS X'e yüklemek oldukça kolaydır. Kod ve talimatlar burada:

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

Jetonunuzu başlattıktan sonra (telefonunuzdaki uygulamaya beslediğiniz bir kod oluşturun), makinenizi korumak için iki faktörlü kimlik doğrulamanız olur. Başlatılmış belirteci olmayan hiçbir hesap giriş yapamaz, bu nedenle root girişine izin vermek istemiyorsanız, o hesap için bir anahtar başlatmayın.

Ama cidden, DenyHosts gibi bir şey sadece SSH'yi internette açık tutmak zorundaysanız mantıklı. Ne yazık ki, Mac OS X V10.8'den beri, Apple'ın SSC arka plan programından kaldırılan tcpwrappers desteği, bu yüzden bana sorarsanız /etc/deny.hosts'ı yok sayar, bana sorarsanız, bir güvenlik özelliğini kaldırır.

Bu sorunu gidermek için, MacPorts'u güncel bir openssh arka plan programı yüklemek ve tam tcpwrappers işlevselliğini geri yüklemek için düzenledim ve DenyHosts arka plan programını kullanarak /var/log/system.log dosyasını izleyerek girişleri ve parolaları tahmin eden IP'leri yasaklayın . İşletim sistemini her yükselttiğinizde MacPorts'u güncellemeyi ve openssh / DenyHosts'u kontrol etmeyi / yeniden yüklemeyi unutmayın.

İyi şanslar!


0

Bunun eski bir gönderi olduğunu anlıyorum ama bunun programlayamayan veya web'de gezinirken zaman kazandıramayan birine yardımcı olabileceğini düşündüm. Bunu öğle tatilimde yazdım ve başarılı ve başarısız girişimlerin yanı sıra başarısız girişimler yoluyla engellenen IP'leri e-posta ile gönderecek. Program Ruby'de yazılmıştır. Sendmail, posta ve dosya kuyruğu mücevherleriyle birlikte yüklenir.

Aşağıdaki kaynak kodu:

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.