Вопрос или проблема
Я заметил, что каждые 15 минут происходят попытки SSH-подключения к удаленному серверу.
Как я могу обнаружить, какой процесс пытается подключиться к удаленному хосту через SSH?
каждые 15 минут
Тогда проверьте cron задачи, настроенные на вашей машине:
/var/spool/cron/*
/etc/crontab
/etc/cron.*/*
Если вы включите аудит процессов, auditd может записывать что/кто запускает процесс.
Альтернативно, вероятно, что клиент вызывает /usr/bin/ssh для управления подключением – переместите это и замените на обертку-скрипт, который будет сохранять информацию о родительском процессе и окружении в известное место.
Ответ или решение
В случае, если вы заметили регулярные попытки подключения к удаленному серверу по SSH, исходящие с вашего компьютера, это может свидетельствовать о несанкционированной деятельности или о неправильно настроенных автоматических задачах. Разберемся, как выявить процесс, который инициирует эти соединения.
Теория
Первый шаг в решении этой проблемы — понять, какие процессы или задачи могут инициировать выходные SSH соединения. В операционных системах Unix-подобного типа, таких как Linux, существует несколько распространенных способов автоматизации задач и запуска процессов по расписанию, таких как:
-
Cron — система планировщика задач, которая позволяет запускать команды или скрипты по расписанию. Задания cron’а часто расположены в нескольких местах:
/var/spool/cron/*
/etc/crontab
/etc/cron.*/*
-
Скрипты и программы, которые могут самостоятельно инициировать SSH-соединения в зависимости от своей логики или триггеров.
-
Управляемые политиками процессы могут быть настроены посредством системных демонов, которые запускаются при определенных условиях.
Пример
В вашей ситуации вы заметили попытки подключения каждые 15 минут. Это частый интервал, который можно встретить в cron-заданиях. Для диагностики таких ситуаций желательно:
-
Проверка Cron задач:
- Проверьте все задания cron, расположенные в указанных выше каталогах. Может быть, один из них выполняет команду
/usr/bin/ssh
каждые 15 минут.
- Проверьте все задания cron, расположенные в указанных выше каталогах. Может быть, один из них выполняет команду
-
Аудит процессов:
- Можно включить процесс аудита с помощью
auditd
, что позволит отслеживать, какие процессы и каким образом инициируются. Настройка правил аудита может помочь записать информацию о процессе, который запускает SSH.
- Можно включить процесс аудита с помощью
-
Модификация исполняемого файла SSH:
- Один из интересных и практичных методов — переместить файл
/usr/bin/ssh
и создать на его основе обертку-скрипт. Этот скрипт может записывать информацию о том, какие процессы и с какими параметрами его вызывают. Например:
#!/bin/bash ps -o pid,ppid,cmd -p $$ >> /var/log/ssh_wrapper.log /path/to/original/ssh "$@"
После получения информации вы можете восстановить оригинальный бинарный файл на его место.
- Один из интересных и практичных методов — переместить файл
Применение
Для обнаружения проблемы начните с аудита cron-заданий, так как временной интервал в 15 минут наиболее вероятно указывает на задание cron.
Далее выполните настройку и включение auditd
для мониторинга системных вызовов. Это позволит вам точнее понять, какие задачи инициируют вызов SSH, особенно если они маскируются под легальные системные задачи.
Наиболее радикальная мера — это создание обертки для SSH, как было описано ранее. Это даст реальное представление о том, какие команды и с какими параметрами вызывают SSH. Обязательно убедитесь, что все изменения в системе сохраняют ее в работоспособном состоянии, особенно перед тем, как выполнять такие манипуляции с системными утилитами.
И, конечно, не забудьте, что помимо технических мер важно следить за политикой безопасности на уровне пользователя: пароли, обновление программного обеспечения, настройка фейрволлов для ограничения исходящих подключений и прочие меры защиты. Это все — часть комплексного подхода к безопасности IT-системы.