Друзья, а вы когда-нибудь сталкивались с ситуацией, когда внезапно ни с того ни с сего сервер зависает, а вентилятор бешено крутится? Поздравляем, ваш компьютер находится под вирусной атакой!
Атака вредоносного ПО может вызвать уязвимости в системе безопасности, остановить работу компании на длительный период времени, вывести из строя оборудование и потребовать от компании денег на ремонт зараженных устройств и удаление вредоносного ПО.
В этой статье мы поговорим о том, как бороться с вирусами на Linux-серверах (рабочих станциях).
В зависимости от злоумышленника и метода атаки обычные люди не могут удалить вредоносное ПО, которым заражена система, со 100% уверенностью. Рекомендуется переустановить систему сразу после резервного копирования важных данных. После подтверждения того, что усиление защиты завершено, при восстановлении пользовательских данных необходимо проверять и удалять исполняемые файлы и другие потенциально опасные файлы.
Рекомендуется использовать Live CD для запуска сервера для всех операций по очистке, описанных в этой статье, вместо того, чтобы напрямую работать в зараженной вирусом системе. В противном случае измененный вами пароль может отслеживаться, восстанавливаемый файл может быть изменен обратно скрытым вирусом. И даже ваш рабочий процесс может контролироваться на протяжении всего процесса.
В этой статье используется метод командной строки Shell и для выполнения требуются привилегии root. Если вы не знакомы с этим, рекомендуется отказаться от чтения этой статьи и переустановить систему.
Найдите и очистите процесс, занимающий CPU/GPU
Используйте команду top, чтобы найти процессы с высокой загрузкой ЦП.
top
Нажмите клавишу C на клавиатуре в рабочем интерфейсе программы, чтобы отсортировать процессы в соответствии с использованием ЦП и вручную найти вредоносный процесс.
Вы также можете использовать команду ps для поиска процессов с высокой загрузкой ЦП.
ps -eo cmd,pcpu,pid,user --sort -pcpu | head
Найдя процесс с высокой загрузкой ЦП, используйте команду ls, чтобы найти фактический путь к программе.
ls -l /proc/{pid}/exe
Используйте команду kill, чтобы остановить процесс.
kill -9 {pid}
Используйте команду rm для удаления подозрительных программных файлов (обратите внимание на правильность команды, ввод неправильной команды может привести к удалению неправильных данных).
rm -f {path}
Процесс проверки загрузки графического процессора аналогичен описанному выше процессу. Официальный драйвер видеокарты Nvidia поставляется с командой nvidia-smi для проверки загрузки графического процессора. Команда выглядит следующим образом:
nvidia-smi -q -d utilization -l
После запуска команды текущее использование графического процессора будет продолжать отображаться. После обнаружения pid процесса вы можете использовать описанный выше метод, чтобы определить фактическое местоположение программы и выполнить необходимые действия.
Откажитесь от этих действий:
1. Если вредоносная программа использует технологию сокрытия или маскировки, вышеуказанные операции могут не позволить точно определить ее местонахождение.
2. Если вредоносная программа имеет другие внедренные бэкдоры, то вредоносная программа запустится снова.
Обнаружение и очистка неизвестных сетевых подключений
Используйте команду ss для обнаружения сетевого мониторинга и внешних подключений. Протокол TCP использует следующие команды:
ss -anpt
Эта команда отображает все прослушиватели и соединения TCP, включая имена программ и pids.
Команда для просмотра протокола UDP:
ss -anpu
Вы также можете использовать команду tcpdump:
tcpdump -i {имя сетевой карты} host {локальный IP} and udp port {номер локального порта}
Из выходной информации команды вы можете просмотреть информацию об IP-адресе и порте взаимодействующего узла. Если информация не зашифрована, вы также можете сохранить захваченные пакеты и продолжить отладку. После получения IP-адреса вы можете использовать общедоступную службу базы данных безопасности, чтобы проверить, является ли IP-адрес известным вредоносным IP-адресом.
Откажитесь от этих действий:
1. Сетевое расследование также эффективно только в том случае, если вредоносная программа не использует технологии маскировки и сокрытия;
2. Некоторые атаки используют динамические IP-адреса, и эти IP-адреса, возможно, не будут записаны в общедоступной аналитике угроз;
3. Все больше и больше сетевого трафика использует технологию шифрования, и сетевой захват не может использоваться для эффективного анализа данных;
4. Существуют также более продвинутые методы атаки, такие как ICMP-туннель, DNS-туннель и т. д. Обычным пользователям сложнее проводить расследование самостоятельно, поэтому они здесь не указаны;
5. При расследовании необходимо не только проверить подключение, инициированное извне к системе, но и проверить подключение, инициированное локально. Файрвол мало влияет на машину, в которую проникли;
Найдите и исправьте необычные учетные записи пользователей
Серверы заражены «майнерскими» вирусами, часто из-за того, что пользователи используют слабые пароли. Если пользователь root или пользователь с полномочиями sudo использует слабый пароль, рекомендуется прекратить чтение этой статьи и выполнить переустановку напрямую.
Рекомендуется после резервного копирования пользовательских данных удалить пользовательские и связанные данные и восстановить их. При восстановлении пользовательских данных следует отсеивать и устранять исполняемые файлы и другие потенциально опасные файлы.
Используйте пользователя root для изменения любого пароля пользователя:
passwd {имя пользователя}
Обычные пользователи могут изменить свои собственные пароли:
$ passwd
Система Linux ssh по умолчанию поддерживает вход без пароля, если вы не знакомы с этой функцией, настоятельно рекомендуется изучить ее самостоятельно и начать использовать. Ключ пользователя по умолчанию находится в ~/.ssh/authorized_keys, его содержимое можно просмотреть с помощью следующей команды:
$ cat ~/.ssh/authorized_keys
Чтобы злоумышленники не добавили другие ключевые файлы доверия, вы можете проверить конфигурацию sshd_config для подтверждения:
grep AuthorizedKeysFile /etc/ssh/sshd_config
Как правило, мы рекомендуем запретить пользователю root напрямую подключаться к системе через ssh. Вместо этого пользователь-администратор сначала входит в систему как пользователь с обычными привилегиями и временно использует команду sudo для получения привилегий root, когда требуются привилегии root для операций.
Мы также рекомендуем отключить удаленный вход на основе пароля и заставить всех пользователей входить в систему с сертификатами. Вы можете использовать следующую команду, чтобы проверить текущие настройки входа в систему пользователя root.
grep Root /etc/ssh/sshd_config
Проверьте, разрешает ли ssh вход по паролю:
grep Password /etc/ssh/sshd_config
При выполнении вышеуказанных команд вы также должны обратить внимание на соответствующие настройки, чтобы предотвратить злонамеренные изменения со стороны хакеров, например: разрешить пользователям без паролей удаленный вход в систему.
После того, как полномочия пользователя root системы потеряны, ни одному пользователю и любому файлу в системе нельзя доверять. Даже если не внедрена никакая бэкдор-программа, можно добавить пользователей или изменить встроенную пользовательскую конфигурацию системы. В этом можно убедиться, проверив файлы /etc/passwd и /etc/shadow.
Используйте следующую команду для просмотра скрытых файлов в Linux:
ls -a
Откажитесь от этих действий:
1. Злоумышленник может использовать программу-бэкдор для обхода системного механизма управления пользователями для получения разрешений;
2. Даже если слабые пароли используют только обычные пользователи, злоумышленники все равно могут получить привилегии суперпользователя через локальные уязвимости;
3. Если есть скрытая программа-бэкдор или система неполная, все действия могут быть бессмысленными;
В следующей статье мы продолжим рассматривать методы обнаружения и удаления вирусов в системе Linux.
Важно отметить, что не только вредоносное ПО и вирусы влияют на работу сайта, а и многие другие факторы. Но, какова бы ни была причина, по которой страница сайта не открывается, например проблемы с базой данных или сервером, DDoS-атаки или вирусы, важно контролировать доступность сайта для посетителя. Ситуация, при которой пользователь не может открыть страницу вашего сайта, отрицательно влияет на поднятие сайта в поиске (поисковой выдаче) и оставляет негативное впечатление о вашем сайте у посетителя. Вы теряете потенциальных клиентов, а значит и деньги. Используйте хороший сервис, например BAILRY для постоянного контроля (проверки) доступности сайта. Сервис предоставляет как бесплатную регулярную (периодическую) проверку доступности сайта, так и платную услугу - для постоянного контроля доступности сайта.
Компания Mainton - разработка и тестирование программного обеспечения под заказ, DevOps и SRE, SEO и реклама в интернете с 2004 года.