Повідомлення, коли хтось заходить у сервер за допомогою SSH або віддаленого робочого столу


12

У мене є міні-сервер mac з ОС X X Lion Server 10.7.3. Він в значній мірі працює без нагляду без проблем. Однак сервер знаходиться в постійній "атаці" відповідно до журналів. Здається, брандмауер та безпека підтримуються.

Чи є програма / скрипт, який може надсилати мені електронний лист кожного разу, коли хтось / хтось увійде на сервер за допомогою SSH, Admin Tools або ARD?

Оскільки машина працює без нагляду, без голови в центрі обробки даних в іншому місті, я стурбований тим, що хтось може (через чисту наполегливість) встигнути зламати пароль або знайти компроміс у системі. Знаючи, що я отримаю попередження, це полегшить мій розум.


2
Насправді не відповідь, тому коментар: чи розглядали ви, як використовувати щось на кшталт fail2ban ([How-Tow] ( fail2ban.org/wiki/index.php/HOWTO_Mac_OS_X_Server_(10.5) )? Таким чином ви можете заборонити IP-адресам, на яких вас атакують. встановіть правила, наскільки вони заборонені тощо. Це допоможе вам запобігти злому. І це, можливо, корисніше, ніж отримання електронного листа для кожної спроби входу.
боретом

Відповіді:


4

Ваш найкращий захист - це завжди вимкнути непотрібні послуги. Якщо ви не використовуєте віддалений робочий стіл: вимкніть його. Якщо ви не використовуєте сервери HTTP або FTP: вимкніть їх. Менше працює служб, менше в’їзних пунктів для можливих зловмисників для експлуатації.

Окрім того, щоб заблокувати це, є кілька безкоштовних та відкритих джерел, які є зручними для ОС X, і ви можете подивитися на виявлення вторгнення на вашій машині.

Хрип

Хоча я особисто не керував цим, у мене є колеги, які знають і довіряють йому для виявлення вторгнень. Він сумісний з BSD, тому він добре підходить для ОС X. Ще одна перевага для Snort - це він доступний як пакет Homebrew :

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

Таким чином, ви отримуєте спрощений шлях до встановлення і деяку довіру до того, що він добре портує до OS X і працює там. З встановленим Homebrew вам потрібно лише зробити:

> brew install snort

І ви готові почати з цього.

Перегляньте цей посібник із налаштування Snort для OS X Lion Server, який надає спільнота Snort, щоб розпочати роботу з написання правил для вашої машини OS X. Це чудовий документ, і крім того, щоб пройти встановлення Snort з джерела (що вам не потрібно робити), він розповідає про все, що вам слід зробити для вашого екземпляра OS X Lion Server, щоб допомогти його захистити. Якщо ви встановлюєте через Homebrew, почніть з розділу 5 (стор. 13) у PDF, оскільки вам не потрібно буде турбуватися про його встановлення з вихідного коду.

Tripwire

Я запускав Tripwire на машинах Linux для швидкого виявлення вторгнень та оповіщення. Це ефективно, але це трохи тварина, щоб налаштувати. Він може виконувати дії, коли правила порівнюються з файлами журналів. Звичайно, кмітливий хакер дізнається відключити Tripwire, як тільки вони ввірваються, щоб вони не закінчилися, коли їх сеанс буде відключений.

Натяк переговори MacWorld про налаштування Tripwire на OS X . Це не просто, і стаття закінчується згадкою, що вона не перевірена.


Адаптивний брандмауер OS X Lion Server зробив чудову роботу, відводячи людей. Яку користь надають мені Tripwire та Snort порівняно зі стандартним брандмауером? Чи варто докладати зусиль?
bloudraak

1
Ні Tripwire, ні Snort не призначені для заміни брандмауера. Вони є системами виявлення вторгнень. Вони використовують безліч різних підходів до моніторингу ваших системних журналів на предмет підозрілої діяльності та можуть вживати заходів на основі результатів моніторингу, таких як надсилання електронної пошти вам або відключення віддалених демонів або закриття мережевих портів.
Ян C.

4

Ви можете загартовувати ssh та встановлювати denyhosts, 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. Snort, зі світою картою атак:

    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вище, щоб виключити власний фіксований IP, якщо ви хочете, та використовувати свою електронну адресу. Ви можете поєднати частину коду в іншій моїй відповіді, щоб додати помилки для VNC.


Я створив сценарій для роботи за розкладом і чекаю електронної пошти.
bloudraak

Проблеми з щоденними вчинками - це до того моменту, коли ви потрапите на вітер вторгнення, шкода може бути вже зроблена.
Ян C.

@Ian C. - погодився, але частоту електронного листа завжди можна збільшити. Крім того, ви повинні мати певну віру в заходи запобігання вторгненням, які ви встановили. Я маю дуже розумну ступінь впевненості в моїх налаштуваннях Fail2ban.
afragen

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

Встановити плагін Google Authenticator PAM на Mac OS X досить просто, якщо у вас встановлений компілятор командного рядка X коду. Код та інструкції тут:

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

Після ініціалізації маркера (генерування коду, який ви подаєте в додаток на телефоні), ви матимете двофакторну автентифікацію для захисту машини. Будь-який обліковий запис без ініціалізованого маркера не зможе ввійти, тому якщо ви не хочете дозволити кореневий вхід, не ініціалізуйте ключ для цього облікового запису.

Але якщо серйозно, щось на зразок DenyHosts просто має сенс, якщо вам доведеться тримати SSH відкритим в Інтернеті. На жаль, оскільки Mac OS X V10.8, Apple видалила підтримку tcpwrappers з демона SSH, тож вона ігнорує /etc/deny.hosts, що було німим кроком, якщо ви запитаєте мене, видалення функції безпеки.

Щоб вирішити це, я використовував MacPorts для встановлення найновішого демона opensh та відновлення повної функціональності tcpwrappers, редагував і використовував демон DenyHosts для моніторингу /var/log/system.log та забороняв IP-адреси, які вгадують логіни та паролі . І не забудьте оновити MacPorts і перевірити / перевстановити openssh / DenyHosts щоразу, коли ви оновлюєте ОС.

Щасти!


0

Я усвідомлюю, що це стара публікація, але я подумав, що це може допомогти тому, хто не може програмувати або заощадити їх на час пошуку в Інтернеті. Я щойно написав це на перерві на обід, і він надішле електронною поштою успішні та невдалі спроби, а також заблоковані IP-адреси через невдалі спроби. Програма написана на Ruby. 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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.