Реєстрація спроб доступу до SSH


60

Я налаштував сервер ubuntu з openssh для того, щоб підключитися до нього та виконувати команди з віддаленої системи, наприклад телефону чи ноутбука. Проблема в тому, що я, мабуть, не єдиний.

Чи є спосіб дізнатися всі спроби входу, які були зроблені на сервері?


Слід також розглянути можливість запуску sshd на нестандартному порту. Крім того, можна налаштувати iptables, щоб відмовити в нових спробах з'єднання, якщо один IP намагається повторити ssh-з'єднання X раз за хвилину.
іваніван

Для мене випуск не був провалом2ban, але sshguard, про що я ніколи не чув
Рей Фосс

Відповіді:


55

На серверах Ubuntu можна знайти, хто входив, коли (і звідки) у файл /var/log/auth.log. Там ви знайдете записи типу:

May  1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

2
З цікавості, робить Ubuntu є в lastbкоманді ?
Братчлі

1
@JoelDavis My Ubuntu 12.04 робить, але вихід є єдиною лінією, яка зовсім не схожа на ваш вихід. Можливо, це потрібно налаштувати.
Антон


На сервері Ubuntu 14.04 і новіших /var/log/auth.log
версій

29

У дистрибутивах на основі Red Hat, таких як Fedora / CentOS / RHEL, ви можете перевірити, чи користувачі увійшли у файл /var/log/secure.

Якщо ви хочете отримати додаткову інформацію, прочитайте цей запит SuperUser Q&A під назвою: Як я можу зареєструвати спроби доступу до SSH та відслідковувати, що в кінцевому підсумку користувачі SSH роблять на моєму сервері? .


1
Ні /var/log/secureв одній із моїх систем Ubuntu немає.
Антон

@Anthon, на диво у мене немає /var/log/authв моїх системах. Ось чому, перш ніж публікувати відповідь, я перевірив, чи є /var/log/secureу мене в моїй системі, яка також є сервером Ubuntu :)
Рамеш

Я перевірив 14.04, 12.04 і стару машину під 8.04. Яку версію ви використовуєте? Ви робили щось особливе, щоб отримати цей файл?
Антон

@Anthon, виявляється, сервер, на якому я тестував, був RHEL. Однак відповідь у посиланні, яке я надавав, стосується Ubuntu, що здається дивним, оскільки ви перевірили 3 варіанти ubuntu, і немає /var/log/secure.
Рамеш

6
/var/log/secure- це ism Fedora / CentOS / RHEL.
slm

8

У Ubuntu ви можете увійти через SSH та використовувати хвостову команду Linux для відображення останнього x числа рядків вашого /var/log/auth.logфайлу. Коли ви ввійшли через SSH, використовуйте таку команду, щоб переглянути 100 останніх рядків вашого журналу SSH:

tail /var/log/auth.log -n 100

або навіть чистіше

tail -100 /var/log/auth.log | grep 'sshd'

7

Зауважте, що конфігурація за замовчуванням на Ubuntu - НЕ входити в /var/log/authфайл ssh-реєстрацій . Це INFOрівень реєстрації.

Якщо ви хочете, щоб він включав спроби входу у файл журналу, вам потрібно буде відредагувати /etc/ssh/sshd_configфайл (як root або з sudo) та змінити LogLevelз INFOна VERBOSE.

Після цього перезапустіть демон sshd

sudo service rsyslog restart

Після цього спроби входу в ssh будуть записані у /var/log/auth.logфайл.


4

Моя рекомендація - використовувати аудид . Це ведення журналу за допомогою підсистеми аудиту ядра Linux і, на мій погляд, правильний спосіб зробити це, якщо ви серйозно. І зважаючи на характер питання (безпека пов'язана), ви також повинні використовувати PAM . На рівні за замовчуванням, коли встановлено аудит та PAM , вам слід автоматично отримувати всі успішні та невдалі спроби SSH увійти у ваш файл audit.log. Тож вам насправді нічого не потрібно налаштовувати, просто встановіть аудит та встановіть PAM . Я знаю це з перших рук для SLES. І став би, і RHEL, і будь-яка інша корпоративна версія Linux працюватиме аналогічно.

http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html

У сирому журналі аудиту, сформованому аудитом, ви можете використовувати або використовувати щось на кшталт того, aureportщоб відфільтрувати його, описане на сторінках аудитора , записати власний аналізатор тексту, або просто використовувати VI та шукати ключові слова.

ось, крім мого /var/log/audit/audit.logфайлу зі мною ssh'ing на моєму сервері Linux.

node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
  • Згадане вище, моє ім’я сервера - акула .
  • багато таких рядків є в audit.log, я хочу, щоб цей був заснований на exe = "/ usr / sbin / sshd"
  • uid облікового запису, в який входить ssh'd, - це значення auid, яке становить 23456 для цього прикладу
  • ім'я облікового запису користувача, пов’язаного з auid, вказується через acct = "ron"
  • У більшості випадків система аудиту записуватиме ім'я хоста dns системи, яка намагається підключитися, але завжди має її ip-адресу
  • дата запису, яка знаходиться в епоху, тож вам доведеться перетворити це через щось на кшталт того, date --date @1480622612.317що призводить до Thu Dec 1 15:03:32 EST 2016і є, коли я ssh'd на свій сервер.

Коли res=failedви хочете дослідити ці ip адреси та імена хостів, щоб побачити, які системи намагалися підключити, під якою спробою користувальницьке ім'я. І очевидно, що успішні ssh намагаються зрозуміти, що відбувається у вашій системі - наприклад, ваш колега-колега, який щодня сидить за одним столом з ім'ям хоста = bobscomputer та ip адресою = 192.168.5.5; якщо ви бачите успішну сш сш вчора о 2 ранку під його ім'ям користувача з ip адреси 10.10.5.6, наприклад, тоді вам може бути в інтересах поговорити з бобом, щоб розслідувати. Можлива спроба зламати когось іншого? І незабаром після цього є спроби вкорінитись у журнал аудиту з облікового запису bob?

коли ви бачите, що повторюються res=failedі auid=0і acct=rootто , що хто - то намагається SSH в ваш ящик в кореневій облікового запису, і при зміні /etc/hosts.denyз цим IP - адресою для SSHD.


2

Я знаю, що це старе, але я щось написав, щоб відстежувати успішні та невдалі з'єднання / спроби ssh. А також заборонені IP-адреси, якщо ви використовуєте sshguard. Програмне забезпечення написане Python. Він надішле вам електронний лист, коли хтось успішно підключиться через ssh, коли хтось помилиться паролем ssh або коли когось забороняють через багато невдалих спроб. Сподіваємось, це допоможе комусь у майбутньому, хто шукає це питання та знайде мій код!

https://github.com/amboxer21/SSHMonitor

Для сценарію python я написав скрипт bash для моніторингу процесу. Він перевіряє, чи працює він щохвилини за допомогою завдання root root. Якщо він не працює, він запускає інший процес. Яка щохвилина викликається завданням root cron.


-2

Найкраще, що я коли-небудь наштовхувався на реєстрацію команд SSH - це кореневий інструмент, що дозволяє адміністратору отримувати кожну команду з кожного сеансу з великим рівнем ведення журналів.

Я написав сценарій для встановлення та налаштування ROOTSH в ubuntu та CentOS / RHEL

завантажити з github ось посилання

https://gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh

chmod +x setup_rootssh.sh ; sudo ./setup_rootssh.sh

Я думаю, що це поганий спосіб просувати свій профіль github ... В основному ви просите завантажити сценарій з Інтернету та виконати його за допомогою root. Downvoted
UserK

Я не просуваю свій профіль github, я просто намагався спростити речі, як це роблять люди вище, якщо ви голосуєте за те, щоб ви проголосували за профілі вниз, проголосуйте за них. до того ж у керівництві правилами обміну стеками нічого не написано, як ми не можемо ділитися кодовими файлами з персональних сховищ.
Мансур Алі

Пробачте, будь ласка, моє погане почуття гумору. Перш за все дякую за відповідь Мансур. Основний результат походить від того, що ви просите виконати купу невідомих команд як root користувача. Востаннє, коли я це зробив, всередині з'явилася "rm -R коса".
UserK

1
Добре, до речі, стек-обмін не дозволить мені настільки довгі коди, тому я ставлю цей сценарій у свою відповідь. Linux дуже простий.
Мансур Алі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.