Посмотрите на вывод last
команды и все, что содержит IP-адрес или имя хоста вместо пустого пространства, пришло по сети. Если sshd
это единственный способ сделать это в этой системе, тогда вы идете.
В качестве альтернативы (если это Linux), вы можете проверить /var/log/secure
(на дистрибутивах на основе RH) или /var/log/auth.log
(на дистрибутивах на основе Debian), где sshd
обычно будут отслеживать выполненные соединения, даже если они не приводят к успешным входам в систему (которые бьют utmp
/ wtmp
, которые это то, что last
будет читать с). Пример:
Apr 3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr 3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2
IIRC Solaris sshd
(возможно, не обязательно OpenSSH sshd
) будет регистрировать эту информацию в/var/adm/messages
РЕДАКТИРОВАТЬ:
@derobert делает отличное замечание. Важно помнить, что в любой системе, если ваша учетная запись суперпользователя скомпрометирована, все ставки отключены, поскольку файлы журнала, такие как /var/log/wtmp
или /var/adm/messages
могут быть изменены злоумышленником. Это может быть смягчено, если вы перемещаете журналы вне сервера в безопасное место.
Например, в одном магазине, в котором я работал, у нас была машина «Audit Vault», которая была защищена так, чтобы получать файлы журнала аудита только с различных серверов в центре обработки данных. Я бы порекомендовал в будущем подобную настройку (так как «У меня есть тестовая машина», похоже, что вы работаете в крупном магазине)
Это должно дать вам список:
Затем вы можете использовать
geoiplookup
изgeoip-bin
пакета перейти от имени хоста или IP-адреса к стране.источник
sed
навыки не тот бог. Чтобы сделать что-то более сложное, используйте Python или специальный анализатор логов. Но вы можете попробовать это:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Ну, как и ожидалось, и, как сказал @Joel Davis, все журналы были стерты, но был один файл, о котором упоминал @Ramesh, в котором есть несколько попыток доступа к пользователю root, но несколько раз не удалось ввести правильный пароль, а затем отключение для слишком много повторов.
Я запустил трассировку по трем адресам, два из которых из Китая, а другой из Пакистана; это IP-адреса:
Дополнительная информация о ботнете, который был внедрен в сервер после взлома:
Хакеры редактируют crontab так, чтобы он выполнял 7 исполняемых файлов, которые будут каждые x раз использовать весь ЦП, максимизировать сетевую производительность серверов, а затем просто умрут. Также они добавляют readme в crontab 100 раз, чтобы скрыть добавленные строки, поэтому, когда вы это сделаете,
crontab -l
вы будете получать спам со спрятанными строками. Чтобы обойти это, я использовалcrontab -l | grep -v '^#'
и вот вывод этой команды:Как видите, все файлы журнала очищены, поэтому я не смог получить много информации.
Он отключил весь сервер (все виртуальные машины), вызвав тайм-ауты на сайтах и на Proxmox. Вот график (шипы обозначают бот-сеть, которая активно DDoS'ит и замечает выход из сети):
В результате я буду добавлять весь диапазон китайских IP-адресов в брандмауэр, чтобы заблокировать все соединения (у меня нет китайских пользователей, поэтому мне все равно), я также запрещаю вход в удаленный root и использую длинные сложные пароли. Я также, скорее всего, изменю ssh-порт и буду использовать частные ssh-ключи.
источник
Из этого ответа я вижу приведенную ниже информацию.
Говоря о SSH-серверах, я дам вам решения для командной строки.
Отслеживание пользовательских входов и выходов . Это просто, файл
/var/log/auth.log
должен иметь эту информацию.Отслеживайте активность этих пользователей : если они несколько невинны, вы можете проверить файл
.bash_history
в их домашнем каталоге. Вы увидите список команд, которые они выполнили. Проблема, конечно, в том, что они могут удалить или отредактировать этот файл.Запретить пользователям удаление журналов . Пользователи не должны касаться
auth.log
. Чтобы не дать им поигратьbash_history
, нужно сделать пару трюков.Что если пользователю удастся получить root-доступ? : Ты пьян. Если он не совершит ошибку, он сможет скрыть все свои шаги.
Также из этого ответа мы видим IP-адрес клиента, использующего
SSH_CLIENT
переменную.Также из этого ответа я вижу, что история ssh может храниться в этих файлах.
В дополнение к
/var/log/lastlog
, есть 3 файлов в/var/run
и/var/log
:utmp
,wtmp
иbtmp
, которые держат информацию о текущих логины (и дополнительной информации), исторические и неудачные логины. Смотрите вики для подробного описания. Вы не можете редактировать файлы с обычными редакторами, но можете стереть их.источник
Простейшая команда для входа в систему последних 10 пользователей - это
last|head
.Чтобы получить всех пользователей просто используйте
last
командуисточник
Эта машина была взломана. Это означает, что любые данные на нем, исторические или текущие, больше нельзя доверять.
Короче, ответ - нет. Вы не можете быть уверены, что нашли исходный адрес из любого файла журнала, записанного на этом аппарате.
Протрите и переустановите. И патч.
источник
Чтобы увидеть только успешные попытки входа с паролем:
источник
для Debian тестовый поиск сформулирован немного иначе
источник