Раньше мы уже говорили о вирусах в Linux. Большинство людей считают, что вирусов в Linux нет и кое в чем они правы. Ведь вредоносных программ, которые сами могли бы распространяться по системе и заряжать другие компьютеры в сети минимум. Известные широкой общественности программы такого рода для Linux можно сосчитать на пальцах. Но есть и другой тип угроз, более характерный для Linux. Это руткиты, программы которые устанавливаются вручную и скрывают свою деятельность в системе.
Эти программы могут предоставлять установившему их человеку полный доступ к вашей системе, вычислительным ресурсам и данным. Не стоит недооценивать эту опасность. Если ваш компьютер подключен к интернет без использования локальной сети (роутера) и без технологии NAT, то обратится к нему может любой человек из сети провайдера. Для этого даже не обязательно знать ваш IP адрес. Злоумышленник может просто перебирать все адреса в своей подсети и если на вашем компьютере или сервере окажется искомая им уязвимость, например слабый пароль ssh или любая другая уязвимость в системном сервисе программная или недостаток настройки - ваш компьютер будет взломан.
Содержание статьи
Проверка Linux на вирусы
Чтобы понять не подключался ли кто к вашему компьютеру, вы можете посмотреть содержимое файла /var/log/audit.log или /var/log/secure.
tail -f /var/log/secure
Здесь фиксируются все события в системе, в том числе неудачные попытки входа по ssh. Я был удивлен когда увидел что мой пароль пытались подобрать. Также можно посмотреть логи сервиса sshd с помощью journalctl:
sudo journalctl _SYSTEMD_UNIT=sshd.service
Ну а если уже хакер получит доступ к вашей системе, тут у него уже много вариантов для действий - всплывают все уязвимости в системных библиотеках и ядре, которые можно использовать для обхода защитных механизмов Linux и повышения привилегий в системе. Поэтому не лишним будет следить за актуальностью своего программного обеспечения, в новом ПО скорее всего, уже закрыли известные уязвимости, а также иногда проверять компьютер специальной программой для поиска руткитов. В этой статье мы рассмотрим как проверить компьютер на вирусы в Linux.
Для поиска руткитов мы будем использовать утилиту rkhunter или RootkitHunter, а также chkrootkit. Мы рассмотрим как ее установить и настроить для правильной проверки. Вообще, я больше склоняюсь к первой, она новее и имеет больше функций.
Поиск вирусов с помощью RkHunter
RkHunter (Rootkit Hunter) - это инструмент для сканирования системы Linux / Unix с открытым исходным кодом, выпущенный под лицензией GPL. Утилита выполняет сканирование Linux на предмет руткитов, бекдоров, локальных эксплойтов и уязвимостей. На данный момент известно 349 руткитов, и всех их программа может найти, если они были установлены в вашей системе. Программа - всего лишь скрипт, позволяющий проверить локальные файлы, и обнаружить известные руткиты. Также выполняется проверка изменения системных команд, файлов запуска, а также проверка сетевых интерфейсов, на предмет прослушивания определенных портов.
Установить программу в Ubuntu можно командой:
sudo apt install rkhunter
В CentOS надо выполнить такую команду:
sudo yum install rkhunter
Если у вас другой дистрибутив, вы всегда скачать установочный скрипт на SourceForge:
cd /tmp
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz
tar -xvf rkhunter-1.4.2.tar.gz
cd rkhunter-1.4.2
./installer.sh --layout default --install
Перед тем как будет выполнена проверка linux на вирусы, необходимо обновить базу данных утилиты. Для этого выполните:
rkhunter --update
Теперь необходимо собрать информацию о файлах в системе, это нужно, чтобы программа могла понять пытался ли кто модифицировать системные файлы при следующей проверке. Для этого выполните:
rkhunter --propupd
Обновление желательно выполнять регулярно, поэтому давайте создадим специальный скрипт и будем запускать его с помощью cron каждый день. Для этого создайте файл скрипта в папке /etc/cron.daily:
vi /etc/cron.daily/rkhunter.sh
Здесь мы выполняем проверку версии, обновление баз данных и в последней строчке мы запланировали проверку и отправку уведомления вам на Email. Для работы необходимо заменить your@email.com на ваш адрес электронной почты.
Теперь осталось только дать программе права на выполнение:
chmod 755 /etc/cron.daily/rkhunter.sh
С установкой программы разобрались. Сначала давайте рассмотрим основные опции программы которые мы уже использовали, или которые вам могут пригодится:
- --verbose-logging - максимально подробный вывод
- --quiet - минимум информации в выводе
- -l, --logfile - записать лог программы в свой файл
- --cronjob - не интерактивный режим проверки, используется для запуска с помощью cron, отсюда и название.
- --list - позволяет посмотреть какие возможности проддерживает программа, можно передать несколько параметров, test - тесты, lang - языки, rootkits - руткиты.
- --unlock - удаляет файл блокировки базы данных, может быть полезна если предыдущий сеанс работы с программой был завершен некорректно.
- --check - проверка системы
- --update - обновление баз руткитов
- --versioncheck - обновление программы
- --propupd - создать базу данных файлов
Например, чтобы посмотреть все руткиты, которые может найти программа выполните:
sudo rkhunter --list rootkits
Для того чтобы проверить Linux на вирусы всю систему выполните от суперпользователя:
rkhunter --check
Программа кроме вывода информации на экран, создаст лог проверки. На информацию выводимую во время проверки не обращайте большого внимания, она немного урезана все станет более понятнее при просмотре лога.
cat /var/log/rkhunter.log
К сожалению программа работает только на английском, поэтому, чтобы понять в каком состоянии ваша система вам придется немного понимать английский.
Чтобы вам было более понятно что делает программа и как анализировать ее результаты, давайте рассмотрим лог сканирования.
Сначала программа инициализируется и загружает конфигурационные файлы, здесь нет ничего интересного. Заметьте, что мы рассматриваем лог проверки системы, логи обновления и создания базы данных, они находятся выше в этом же файле, нас не интересуют. Проверка системы начинается с этих срок:
Программа сканирует системные утилиты и пытается выявить там подозрительные признаки, в том числе проводится сравнение хеша утилиты с хешем сохраненным в базе данных, чтобы понять не была ли она изменена. Обычно если с утилитами все хорошо лог заполнен такими строками:
Также выполняется проверка параметров файлов, например если файл должен быть бинарным, а он скрипт, то это не порядок:
При обнаружении подозрительного файла программа тут же объясняет в чем с ним проблема. Возможно это ложное срабатывание, однако эти файлы вам стоит проверить или можно переустановить пакеты, которым они пренадлежат.
Дальше будет выполнена проверка Linux на вирусы с поиском известных руткитов:
Обычно, если в этом разделе что-то обнаружено, то это значит, что в системе есть руткит и с этим нужно что-то делать, но обычно мы видим строки Not found (не найдено):
Дальше будет запущен поиск нежелательного программного обеспечения:
Проверка опасных портов:
На этапе проверки конфигурационных файлов мы тоже получаем предупреждение:
Но здесь видно, что проблема не в вирусе, а в том, что программе просто нет с чем сравнивать.
Дальше выполняется проверка настроек системы, и здесь тоже программе не все нравится:
А именно две вещи - разрешенный root доступ по ssh и возможность использовать протокол первой версии для подключения к ssh. И она права, это очень небезопасно.
Дальше будет выполнено сканирование файловой системы:
И обнаружено несколько скрытых файлов, но все они, похоже, хорошие. Вы можете отследить какая программа работает с определенным файлом с помощью команды lsof:
sudo lsof | grep /адрес/файла
Осталась проверка приложений:
И небольшой отчет о найденных проблемах:
Для удобства просмотра лога вы можете не смотреть его полностью, а выбрать только предупреждения:
sudo cat /var/log/rkhunter.log | grep -A5 "\[ Warning \]"
Параметр A5 означает показывать еще пять строк после строки с обнаруженным вхождением, так мы точно ничего не пропустим.
Теперь давайте рассмотрим еще одну программу с помощью которой может быть выполнена проверка Linux на руткиты. Это chkrootkit. Она мнение функциональна, но тоже хорошо делает свое дело.
Поиск вирусов с помощью Chkrootkit
Chkrootkit - это классический инструмент позволяющий не только искать руткиты Linux, но и проверять систему на признаки чужого присутствия. Программа просканирует ваш компьютер или сервер на наличие подозрительных процессов, руткитов и проверит список известных руткитов. Функциональность программы очень похожа на Rkhunter.
Программа состоит из нескольких отдельных утилит:
- chkrootkit - скрипт для проверки системы;
- ifpromisc - сканирование интерфейсов на предмет неразборчивого режима;
- chklastlog - проверить лог lastlog на предмет удаления записей;
- chkwtmp - проверка лога wtmp на предмет удаления записей;
- chkproc - поиск троянских программ и скрытых файлов в подсистеме proc.
Установить программу в Ubuntu можно с помощью команды:
sudo apt install chkrootkit
Если у вас другой дистрибутив, то вы можете собрать программу из исходников:
wget --passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvfz chkrootkit.tar.gz
cd chkrootkit-*/
make sense
make install
В CentOS вам понадобится установить такие библиотеки перед сборкой:
yum install gcc-c++ glibc-static
Команды выполняются без параметров. Достаточно запустить нужную утилиту чтобы найти руткиты linux:
sudo chkrootkit
Лог программы немного похож на предыдущую, поэтому мы не будем его отдельно разбирать. Здесь сначала выполняется проверка системных команд, более ограниченная чем в rkhunter, затем поиск руткитов linux.
Аналогично вы можете выполнить другую утилиту, чтобы проверить на модификацию lastlog:
sudo chklastlog
Но, возможно придется создать символическую ссылку на lastlog, чтобы программа смогла его найти.
Выводы
Вот и все. Выполняйте регулярное сканирование Linux, чтобы вовремя выявить все угрозы, особенно это актуально для серверов, которые чаще всего могут подвергаться хакерским атакам. Возможно, руткитов вы не найдете, но зато программы вам сообщат о потенциальных проблемах с безопасностью, которые желательно исправить.
/usr/bin/lwp-request [ Warning ] Checking for passwd file changes [ Warning ]
Checking for group file changes [ Warning ]
Checking /dev for suspicious file types [ Warning ]
Нашёл что-то. А опасно ли это? Как и чем исправить?
Программа говорит, что файлы /etc/passwd и /etc/group были изменены, возможно даже вами, скорее всего не опасно, но на всякий случай проверьте эти файлы. Последнюю строчку можно игнорировать, в большинстве случаев в каталоге /dev случается ложное срабатывание.
ADMIN: Спасибо за интересную и подробную статью !!
Очень большая просьба сделать обзор по софту входящему в Fedora Security думаю не одному мне это будет интересно .
После ввода команды rkhunter --update получаю сообщение Invalid WEB_CMD configuration option: Relative pathname: "/bin/false"
и обновления не происходит. Что можно предпринять?
https://www.linuxquestions.org/questions/linux-security-4/%5Bsolved%5D-rkhunter-no-long-updating-under-mx-linux-4175638503/
Совершенно не понятно, что и чего там надо делать?
Пытался "и так и сяк" - ничего не выходит.
Подскажите : в какое место в файле rkhunter и чего КОНКРЕТНО прописать (вставить), что бы можно было сделать обновление ?
Надо ли ставить знак # и где (перед какими строчками) ?
Какие пробелы и где в этом файле надо ставить ?
И вообще - почему выкладываете НЕ рабочую (не правильную) версию, требующую - отдельной пользовательской доработки ?
P.S Почему не указываете, что обновление надо делать от sudo ?!
Спасибо! Уже проверяюсь. Только вот при запуске sudo chkproc выдает "sudo: chkproc: command not found"
у меня по адресу var/log нет файла audit.log. Ubuntu 16.04
У меня тоже
Потому что этот файл есть только на машинах RedHat
Что это может быть?
в винде я бы вычислил корневой каталог программы и узнал бы в гугле что за ззверь такой а тут не совсем понимаю что это. 4.4.0-22 смахивает на версию ядра а вот что такое vdso я понять не могу гугл тоже не дает внятного ответа. помогите=) ниже выдержка из лога скана программы chkrootkit
При поиске подозрительных файлов и директорий, это может занять некоторое время были найдены ... Следующие подозрительные файлы и каталоги:
/usr/lib/debug/.build-id /lib/modules/4.4.0-22-generic/vdso/.build-id /lib/modules/4.4.0-21-generic/vdso/.build-id
/usr/lib/debug/.build-id /lib/modules/4.4.0-22-generic/vdso/.build-id /lib/modules/4.4.0-21-generic/vdso/.build-id
Это модуль ядра, скорее всего это ложное срабатывание программы.
писк троянских программ ))
" $ vi /etc/etc/cron.daily/rkhunter.sh "
Не лишнее ли одно /etc ?
Да)
Здравствуйте. Подскажите, что сие значит: Warning: The command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: a /usr/bin/perl -w script, ASCII text executable
Спасибо.
Вряд-ли тут проблема, скорее всего, было выполнено обновление wp-request с помощью скрипта и теперь хеш этого файла не совпадает с базой данных rkhunter.
Здравствуйте. В suse, при попытке заглянуть в /var/log/audit.log, система отказала в доступе сославшись на недостаток прав. Как это исправить?
В suse такого файла нет, он находится по адресу /var/log/audit/audit.log, можно создать символическую ссылку.
Здравствуйте. Не подскажете что это?
Checking for passwd file changes [ Warning ]
[14:08:58] Warning: User 'postfix' has been added to the passwd file.
Спасибо
Все в порядке, просто в файл /etc/passwd был добавлен пользователь postfix для запуска этой программы.
Подскажите, это нормально?
[00:18:02] Checking for preloaded libraries [ Warning ]
[00:18:02] Warning: Found preloaded shared library: libesets_pac.so
[00:18:02]
[00:18:02] Info: Starting test name 'shared_libs_path'
[00:18:02] Checking LD_LIBRARY_PATH variable [ Not found ]
[00:18:02]
--
[00:18:22] /usr/bin/lwp-request [ Warning ]
[00:18:22] Warning: The command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: a /usr/bin/perl -w script, ASCII text executable
[00:18:22] /usr/bin/x86_64-linux-gnu-size [ OK ]
[00:18:22] /usr/bin/x86_64-linux-gnu-strings [ OK ]
[00:18:22] /usr/bin/telnet.netkit [ OK ]
[00:18:22] /usr/bin/w.procps [ OK ]
--
[00:19:54] Checking /dev for suspicious file types [ Warning ]
[00:19:54] Warning: Suspicious file types found in /dev:
[00:19:54] /dev/shm/pulse-shm-3621704724: data
[00:19:54] /dev/shm/pulse-shm-3713040201: data
[00:19:54] /dev/shm/pulse-shm-2177300441: data
[00:19:54] /dev/shm/pulse-shm-3724039668: data
--
[00:19:54] Checking for hidden files and directories [ Warning ]
[00:19:54] Warning: Hidden directory found: /etc/.java
[00:19:54] Checking for missing log files [ Skipped ]
[00:19:54] Checking for empty log files [ Skipped ]
[00:21:11]
[00:21:11] Info: Test 'apps' disabled at users request.
В общем и целом - да. Используете preload?
Спасибо за комментарий, собственно я в Linux недавно, пока не знаю, что я использую. Ничего в системе критичного не трогал, только cinnamon удалил и поставил xfce. Обновил систему и ядро. Извиняюсь за нубство, но потому я здесь 🙂
У меня вот такое окно появилось при установке RkHunter. Это нормально? Просто с этим ничего не возможно сделать) подскажите, пожалуйста, что с этим делать? и что это значит?
Настройка пакета
┌─────────────────────────┤ Postfix Configuration ├─────────────────────────┐
│ │
│ Выберите тип настройки почтового сервера, наиболее соответствующий вашим
│ требованиям.
│
│ Без настройки:
│ Этот вариант можно выбрать, чтобы оставить текущую настройку без
│ изменений.
│ Интернет-сайт:
│ Почта отправляется и принимается напрямую с использованием SMTP.
│ Интернет-сайт, использующий smarthost:
│ Почта отправляется и принимается напрямую с использованием SMTP или
│ с помощью запуска утилиты, такой как fetchmail. Исходящая почта
│ отправляется через smarthost.
│ Система-спутник:
│ Вся доставляемая почта отправляется на другую машину, называемую
│
│
│ │
└───────────────────────────────────────────────────────────────────────────┘
выберите без настройки
Выбрать ,,без настройки,, и куда нажать? Нажимаю enter - снова появляется это окно
доброго времени суток. при проверке программа выдала следующее:
/usr/bin/lwp-request [ Warning ]
что это?
подскажите, пожалуйста, при проверке ругается:
Checking system commands...
- /usr/bin/lwp-request [ Warning ]
Performing filesystem checks
Checking /dev for suspicious file types [ Warning ]
Checking for hidden files and directories [ Warning ]
система временами подтормаживает....ОС Debian testing amd64
Сложно сказать без подробной информации, попробуйте еще проверить chkrootkit.
Подскажите , что это и что делать ? Линукс Zorin-9 . Я новичок .
Searching for Suckit rootkit... Warning: /sbin/init INFECTED
Там много выскочило , но с угрозой только это .
Комп стал медленнее работать . Чем дольше , тем медленнее.
Спасибо !
при установке утилит выполняется построение дерева каталогов и дальше сообщается,что пакеты не найдены.
Если работает злоумышленник с руткитом, то и логи им же чистится могут, так ведь?
а что имелось ввиду под этим Daily Run (Ваш сервер)'
ваш сервер???
Это сообщение будет отправляться вам на email после проверки, что вы там напишите не имеет никакого значения.
Подскажите, нет ли чего подозрительного 🙂
[10:03:49] Info: Starting test name 'passwd_changes'
[10:03:49] Checking for passwd file changes [ Warning ]
[10:03:49] Warning: User 'lightdm' has been added to the passwd file.
[10:03:49] Warning: User 'ntp' has been added to the passwd file.
[10:03:49] Warning: User 'whoopsie' has been added to the passwd file.
[10:03:49]
[10:03:49] Info: Starting test name 'group_changes'
[10:03:49] Checking for group file changes [ Warning ]
[10:03:49] Warning: Group 'wireshark' has been added to the group file.
[10:03:49] Warning: Group 'lightdm' has been added to the group file.
[10:03:49] Warning: Group 'ntp' has been added to the group file.
[10:03:49] Warning: Group 'whoopsie' has been added to the group file.
[10:03:49] Checking root account shell history files [ OK ]
[10:03:49]
Доброго времени суток
Помогите , похоже кто то плотно сидит у меня
Checking for preloaded libraries [ Warning ]
/usr/bin/lwp-request [ Warning ]
Checking /dev for suspicious file types [ Warning ]
Checking for hidden files and directories [ Warning ]
File properties checks...
Files checked: 149
Suspect files: 1
Выдал следующее -You must be the root user to run this program. .Что делать в данном случае?
/var/log/rkhunter.log
bash: /var/log/rkhunter.log: Отказано в доступе
Подскажите, что делать?
Под рутом в доступе отказывает
tail -f /var/log/secure
tail: невозможно открыть '/var/log/secure' для чтения: Нет такого файла или каталога
tail: больше нет файлов
Дальше статью можно не читать.
Добрый день. Хорошая статья, для легких проверок самое то) Мне вот только интересно, он будет на все типы руткитов писать "[warning]" или там есть несколько уровней предупреждений?
tail -f /var/log/secure вот такое выдает
tail: невозможно открыть '/var/log/secure' для чтения: Нет такого файла или каталога
tail: больше нет файлов
ничего не понятно..
были обнаружены следующие подозрительные каталоги
/usr/lib/modules/5.11.0-36-generic/vdso/.build-id /usr/lib/modules/5.11.0-34-generic/vdso/.build-id /usr/lib/debug/.build-id
/usr/lib/modules/5.11.0-36-generic/vdso/.build-id /usr/lib/modules/5.11.0-34-generic/vdso/.build-id /usr/lib/debug/.build-id
что с ними делать ? как удалить?
chklastlog и chkwtmp - просто переходит на следующую строку без какой-либо информации.
ifpromisc: команда не найдена
chkproc: команда не найдена
?
У меня в логе только Info и Warning, скорее всего только они и есть.