Как проверить, был ли взломан ваш Linux-сервер

SSH-серверы Linux привлекают большие внимание хакеров. Удаленный доступ делает их ценными точками входа для тех, кто намеревается использовать или скомпрометировать ващ сервер

Администраторы серверов могут запускать обновления, применять исправления и использовать меньше стандартных портов, чтобы отпугнуть хакеров, но как определить, что враг у ворот?

Распознайте признаки взлома

Многие взломы не являются сложными. Большинство из них являются результатом автоматизированных атак ботнетов или «скриптовых действий», использующих уже существующий вредоносный код.

Эти атаки, начиная от атак типа «отказ в обслуживании» (DoS) и заканчивая захватом серверов для распространения спама или добычи криптовалюты, подчеркивают разнообразие киберугроз.

Такие действия демонстрируют сочетание хитроумных схем и использования известных уязвимостей, которые значительно сокращают вреям на взлом вашего сервера.

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

К счастью, существуют простые меры, которые вы можете принять для проверки безопасности вашего сервера. Ниже перечислены шаги, которые помогут обеспечить целостность вашего сервера.

Шаг 1. Проверьте активные логины

Если злоумышленник взломал ваш сервер, он все еще может его использовать и заходить на него. Самый простой способ проверить, так ли это, – подключиться к серверу Linux через SSH и выполнить:

w

Эта простая однобуквенная команда отображает других подключенных пользователей и время их входа в систему. В идеале она покажет, что кроме вас нет других подключенных пользователей (как на картинке).

Если вы выполните команду w, вы сможете увидеть IP-адреса других подключенных пользователей в поле „FROM“. Вы можете использовать команду whois, чтобы определить, где IP был первоначально зарегистрирован:

whois 8.8.8.8

Вы также можете просмотреть информацию о вошедших в систему пользователях и всех активных процессах, которые они запускают с помощью:

who -u

Шаг 2. Проверьте предыдущие входы

Если в настоящее время на сервере нет неизвестных пользователей, необходимо проверить историю входов на сервере. Проще всего это сделать, выполнив:

last

Вывод этой команды shell отобразит имя пользователя, IP-адрес и время входа предыдущих пользователей.

Если вы не узнали пользователя, как в случае с gremlin на изображении выше, вы можете повторно выполнить команду с его именем пользователя, чтобы просмотреть только его историю входа, например.

last gremlin

Вы также можете использовать команду whois на IP-адресе пользователя еще раз, чтобы попытаться отследить его местоположение.

Если пользователь неавторизован, вы можете завершить его SSH-сессию и все процессы, связанные с его именем пользователя, используя pkill, например:

sudo pkill -U gremlin

При выполнении последней команды вы заметите, что последняя строка вывода относится к „wtmp“, например:

"wtmp begins Wed Feb 7 16:47:08 2024"

Убедитесь, что вы обратили внимание на дату и время. Если они недавние, хакер мог удалить /var/log/wtmp, в котором хранятся последние попытки входа в систему, чтобы замести следы.

Шаг 3. Проверьте предыдущие команды

Если вы обнаружили нераспознанных пользователей, необходимо проверить, какие команды были выполнены. Этот список хранится в файле
/.bash_history, который можно просмотреть в Терминале, выполнив:

cat 
/.bash_history

Обычно вы увидите здесь длинный список команд. Обратите внимание на такие распространенные команды, как install, curl или wget, которые могут использоваться для загрузки и установки вредоносных программ.

Если Terminal сообщает вам, что такого файла или каталога нет, хакер мог удалить этот список, чтобы скрыть следы запущенных команд.

Шаг 4. Проверьте наиболее интенсивные процессы

Как мы уже выяснили, хакеры взламывающие серверы, часто запускают интенсивные системные процессы, например, устанавливают программы для майнинга криптовалюты.

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

Информация здесь может показаться непомерно большой, поэтому для начала просто сосредоточьтесь на колонке **Command, где перечислены имена активных процессов. Если вы увидите незнакомый процесс, запишите его PID (идентификатор процесса). Когда закончите, используйте Ctrl + C для выхода.

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

Вы также можете узнать, к каким файлам обращался определенный процесс, используя lsof вместе с идентификатором процесса, например:

lsof -p 772

Шаг 5. Проверьте все системные процессы

Если хакер умен, он позаботится о том, чтобы установленные им программы не отнимали слишком много системных ресурсов, стараясь остаться незамеченными. Следовательно, запущенные ими процессы могут не отображаться в списке команды top. Чтобы перепроверить все запущенные процессы, используйте:

ps auxf

Эта команда логически упорядочивает запущенные процессы. Столбцы здесь не требуют пояснений. И снова идентификатор процесса (PID) и использование процессора и памяти перечислены в процентах от общего объема системы.

Снова внимательно проверьте столбец Command. Если вы не узнали ни одного процесса, используйте поисковую систему и lsof, как в предыдущем шаге, чтобы определить их. Используйте Ctrl + C для выхода.

Шаг 6. Проверьте сетевые процессы

Умелые хакеры иногда устанавливают программы-бэкдоры, настроенные только на дальнейшее удаленное подключение. Они потребляют минимум ресурсов процессора/системы, поэтому их легко пропустить.

Чтобы подстраховаться, просмотрите список всех процессов, которые прослушивают сетевые соединения, выполнив:

sudo lsof -i

Посмотрите в конец каждой записи, чтобы проверить, находится ли процесс в режиме «Прослушать», т. е. ожидает соединения. Если вы не узнали имя процесса, попробуйте узнать о нем больше, используя методы, описанные в Шаге 4.

Шаг 7. Завершите неавторизованные процессы

Если вы обнаружили подозрительный процесс, вы можете немедленно завершить его, используя команду kill, а также PID:

sudo kill -9 2046

Если программа запустила несколько процессов, вы можете завершить их все с помощью killall:

sudo killall fish

Если вас взломали

После просмотра зарегистрированных пользователей, истории команд и активных процессов, если вы считаете, что ваш сервер взломан, вы можете удаленно отключить его с помощью команды:

sudo shutdown -h now

Если вы арендуете серверное пространство у третьей стороны, вы также можете отключить его через личный кабинет.

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

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.linuxinsider.com

Похожие статьи

Комментарии (0)