December 2

Как я обнаружил скрытую учетную запись пользователя на моем сервере Ubuntu (и что я с этим сделал)

Это перевод оригинальной статьи How I Found a Hidden Backdoor User Account on My Ubuntu Server (And What I Did About It)

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Введение:
Даже защищённые серверы могут быть незаметно скомпрометированы, и иногда злоумышленники не оставляют очевидных следов, таких как запущенное вредоносное ПО или исходящий трафик. В этой публикации я расскажу, как я обнаружил скрытую учётную запись бэкдора на одном из своих серверов Ubuntu, и о конкретных шагах, которые я предпринял для её обнаружения, исследования и блокировки.

1. Почему я начал расследование

Я заметил следующие вещи:

  • Немного более высокая загрузка CPU ночью
  • Активность входов в auth.log в неурочное время
  • Отсутствие тасков cron или перебора паролей SSH

Что-то не сходилось.

2. Команда аудита, которая раскрыла подозрения

Я запустил это:

cut -d: -f1,3 /etc/passwd | sort -t: -k2 -n | less

Это помогло мне обнаружить нового пользователя с UID выше 1000, которого я никогда не создавал, — с подозрительным именем backupadmin.

3. Подтверждение подозрительной активности

Я проверил последние входы в систему:

lastlog | grep backupadmin

И:

grep 'backupadmin' /var/log/auth.log'backupadmin' /var/log/auth.log

Пользователь вошел в систему через SSH, но никто из моей команды не создавал его.

4. Отключение и блокировка учетной записи

Я сразу же заблокировал аккаунт:

sudo passwd -l backupadmin

Затем отключил доступ к оболочке:

sudo usermod -s /usr/sbin/nologin backupadmin

Наконец, сделал резервную копию и удалил:

sudo tar -czvf /root/backupadmin_home.tar.gz /home/backupadmin
sudo userdel -r backupadmin

5. Как была создана эта учетная запись

Я проверил файлы .bash_history, /var/log/apt/history.log, но ничего не нашёл. Тогда я понял: злоумышленник использовал скрипт, чтобы зачистить следы, и обошёл ведение логов bash, очистив переменную $HISTFILE.

Единственная подсказка появилась при проверке системного журнала:

journalctl | grep useradd

Бум — скрипт добавил его несколько недель назад.

6. Меры усиления безопасности, которые я предпринял немедленно

  • Включил auditd для мониторинга будущих изменений учётных записей.
  • Настроил email-оповещения для команд useradd и usermod через audit.rules
  • Проверил все ключи SSH в /home/*/.ssh/authorized_keys
  • Установил fail2ban и ужесточил настройки SSH
  • Проверил файл sudoers на наличие мошеннических записей

Заключение:

Атака была негромкой. Она была тихой, терпеливой и незаметной. Поэтому даже «безопасные» системы требуют регулярного аудита. Никогда не предполагаете, что ваш сервер безопасен только потому, что он выглядит неактивным.

Начните с:

awk -F: '$3 >= 1000 {print $1}' /etc/passwd'$3 >= 1000 {print $1}' /etc/passwd

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.