Как проверить блог на вирусы
Мне сильно кажется, что большинство людей на хабре публикуют заметки даже не удосужившись проверить тот продукт о котором они пишут на практике, дополнить исполнение команды и применение к реальности реальными примерами, а не простым копированием документации и немного переведенного текста на наш с вами русский язык. Мне заинтересовала заметка про сканер, целью которого является поиск любого нежелательного, зловредного на моем блоге. И теперь я хочу раскрыть данную тему полностью со всеми возникнувшими у меня нюансами, может даже еще чем-то. Все описанное будет проделано на примере моего блога — www.ekzorchik.ru
В роли главного героя выступит сканер уязвимостей Linux Malware Detect (в дальнейшем для краткости LMD) который я буду использовать на своей системе Ubuntu Trusty Server amd64
Устанавливаю необходимые пакеты перед скачиванием и инсталлированием приложения в систему:
$ sudo rm -Rf /var/lib/apt/lists
$ sudo apt-get update && sudo apt-get upgrade -y
Linux srv-trusty 4.4.0-98-generic #121
14.04.1-Ubuntu SMP Wed Oct 11 11:54:55 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Советую привести систему к последнему релизу ядра по этой заметке.
$ tar zxf maldetect-current.tar.gz
/maldetect-1.6.2$ sudo ./install.sh
$ rm -Rf maldetect-1.6.2/ maldetect-current.tar.gz
$ sudo apt-get install clamav clamav-daemon clamav-freshclam clamfs -y
$ sudo nano /etc/clamav/freshclam.conf
Обновляем сканер maldetect до самого последнего актуального состояния:
За работу утилиты отвечает конфигурационный файл:
$ sudo nano /usr/local/maldetect/conf.maldet
#почтовый ящик куда отправлять отчеты
#глубина на которую сканер осуществляет проверку целостности файлов
#минимальный размер файлов в байтах
#максимальный размер файлов (b (байты),k(килобайты),M(мегабайты)
#каталоги временных файлов доступных на запись
scan_tmpdir_paths=»/tmp /var/tmp /dev/shm»
#разрешить или запретить обычным пользователям использовать утилиту maldet (я запрещаю)
#перемещать инфицированные файлы в карантин
остальные опции я оставил по умолчанию
Теперь проверю свой бекап на предмет наличия зараженности:
$ sudo maldet -a /home/ekzorchik/file
maldet(29396):
171223-0959.29396
$ sudo maldet —report 171223-0959.29396
SCAN ID: 171223-0959.29396
STARTED: Dec 23 2017 09:59:28 +0300
COMPLETED: Dec 23 2017 09:59:48 +0300
ELAPSED: 20s [find: 0s]
TOTAL CLEANED: 0
Linux Malware Detect v1.6.2
Запустить в ручном режиме утилиту maldet на предмет проверки каталога Web— сервера содержащего пользовательские сайты:
$ sudo maldet -b -r /var/www
Linux Malware Detect v1.6.2
(C) 2002-2015, R-fx Networks
(C) 2015, Ryan MacDonald
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(25083):
Проверяем в другом окне (или лучше задействовать tmux) консоли что утилита maldet запущена:
$ sudo ps aux | grep maldet
$ sudo ps aux | grep inotify
Работает утилита maldetect с ледующим образом, производит мониторинг нацеленных директорий и в случае нахождения инфицированных файлов уведомляет на почту. Также инфицированные файлы могут быть перемещены в карантин или же просто удалены.
Linux Malware Detect (LMD) — это сканер для Linux, предназначенный для поиска веб-шеллов, спам-ботов, троянов, злонамеренных скриптов и прочих типичных угроз характерных для веб-пространств и особенно актуален для виртуальных шаред-хостинг платформ. Главное отличие от прочих Linux-антивирусов — его веб направленность, сканирование файлов веб-сайтов, ведь обычные антивирусы ориентируются на более глобальные угрозы уровня системы.
В основе утилиты maldetect лежит скрипт который посредством базы grep производит сканирование на основе своей базы сигнатур, но в свою очередь — если установить антивирус clamav , то весь процесс будет идти через него. Это создает двойной выигрыш в применяемых средствах.
После того, как утилиту maldetect я установил в свою систему, заметил что создались ежедневные задания для обновления сигнатур и запуска сканирования.
$ ls -l /etc/cron.daily/maldet
-rwxr-xr-x 1 root root 2672 Nov 18 06:59 /etc/cron.daily/maldet
а главном конфигурационном файле за это отвечает параметр:
На заметку: по умолчанию утилита maldet проверяет каталоги якобы популярных движков, как directadmin,ispmgr,ensim,psa,Virtualmin, froxlor,cpanel, см файл и в него можно добавить свои пути.
$ sudo nano /etc/cron.daily/maldet
После проверяю текущий статус службы maldet:
$ sudo service maldet status
error no default monitor mode defined, set $MONITOR_MODE in /etc/sysconfig/maldet or $default_monitor_mode in /usr/local/maldetect/conf.maldet
$ sudo nano /etc/default/maldet
$ sudo /etc/init.d/maldet status
Checking maldet monitoring status: Not running
$ sudo /etc/init.d/maldet start
Starting maldet: Linux Malware Detect v1.6.2
(C) 2002-2017, R-fx Networks
(C) 2017, Ryan MacDonald
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(30485):
$ sudo apt-get install inotify-tools -y
$ sudo /etc/init.d/maldet start
$ sudo /etc/init.d/maldet status
Checking maldet monitoring status: Running
Работает. Либо же можно не настраивать автоматический запуск, а использовать ключи сканирования для обнаружения вредоносного.
Сканирование происходит с использованием собственного скрипта на базе grep, а если в системе установлен ClamAV — то при помощи clamscan. Аналогично с сигнатурами: программа имеет свою базу сигнатур, если же в системе установлен ClamAV, то использует дополнительно и его базу. Когда производим нацеливание на каталог с файлами, то отчет можно настроить что будет высылаться на электронную почту.
В каталоге куда установилась программа присутствует довольно понятный файл README целью которого дать наиполнейшее представление, как работать и что может данная утилита:
/usr/local/maldetect/conf.maldet — главный конфигурационный файл
По умолчанию в автоматическом режиме перенос файлов в карантин деактивирован, а потому при наличие каких либо совпадений с базой сигнатур придется разбираться, а на то идет жалоба и что нужно делать самим. Такой вариант может устроить только тех кто хочет понять каким образом произошло заражение, либо же задействовать параметр со значением quar_hits=1 чтобы все подозрительные файлы сразу же переносились в специально обозначенный каталог карантина.
- /usr/local/maldetect/quarantine — каталог куда переносятся файлы в случае нахождения совпадений по базе данных сигнатур.
- /usr/local/maldetect/ignore_paths — каталог/файлы которые не стоит проходить проверкой утилиты, к примеру сейчас в нем по умолчанию содержаться:
/usr/local/maldetect/ignore_file_ext — игнорировать файлы по маске, к примеру вот так:
- /usr/local/maldetect/ignore_sigs — игнорировать наличие сигнатуры сканируемого
- /usr/local/maldetect/ignore_inotify — исключения из мониторинга
Думаю описывать назначение каждого параметра это излишне, но все же остановлюсь на некоторых:
- -b — запуск в фоне при длительном сканировании
- -u — обновить сигнатуры обратившись с официальному сайту rfxn.com
- -d — обновить инсталлируемую версия с официального сайта rfxn.com
- -m (—monitor USERS|PATHS|FILE) — запуск утилиты maldet
- -k — завершить запущенную утилиту.
- -r — нацелить просканировать конкретный каталог и файлы созданные/изменяемые в течение указанных дней, по умолчанию (7 дней)
maldet -r /home/ekzorchik 5
- -a — просканировать все файлы по заданному пути
maldet -a /home/ekzorchik
- -с — после проверки файлы загрузить его сигнатуру на официальный сайт
- -l — просмотреть лог файл событий
- -e — отправить отчет на почтовый ящик:
maldet —report list
maldet —report идентификатор формируемый после окончания сканирования
maldet —report SCANID user@host.com — отчет на почту
- -s — восстановить все файлы из карантина
- -q — поместить все файлы из отчета в карантин
- -n — очистить на основании SCANID все файлы
- -U — назначение атрибутов на конкретного пользователя, используется при восстановлении файлов из карантина
- -co — ручной запуск утилиты maldet где в строке перечислены атрибуты с которыми следует работать (атрибуты берем из главного конфигурационного файла), maldet —config-option email_addr=user@host.com,quar_hits=1 и т. д.
- -p — Очистить логи,удалить все из каталога «Карантин»,сессии и временные файлы.
Чтобы данный сервер мог уведомлять о проблемах на почту в системе должен быть настроен агент MTA — я использую утилиту ssmtp.
Просканировать весь домашний каталог (? — то же самое что и символ звездочка):
$ sudo maldet -a /home/?
$ sudo maldet -a /var/www/wordpress/?
$ sudo maldet —report 171223-1027.904
SCAN ID: 171223-1027.904
STARTED: Dec 23 2017 10:27:51 +0300
COMPLETED: Dec 23 2017 10:30:58 +0300
ELAPSED: 187s [find: 2s]
TOTAL FILES: 16778
TOTAL CLEANED: 0
Linux Malware Detect v1.6.2
Для восстановления файла перемещенного в карантин следует:
sudo maldet –restore /usr/local/maldetect/quarantine/FILENAME
Теперь мой ресурс посвященный реальным заметкам в той степени безопасности которую я могу ему обеспечить на основании своего опыта.
Пока на этом у меня всё, с уважением, автор блога Олло Александр aka ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще 🙂
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
Источник
Linux Malware Detect — антивирус для веб-серверов
Интернет уже не тот, что прежде — кругом враги. Тема обнаружения непосредственного заражения сайта и поиска вредоносных/зараженных скриптов на взломанном сайте рассмотрена слабо, попробуем это исправить.
Итак, представляем вашему вниманию Linux Malware Detect.
Linux Malware Detect (LMD) — это сканер для Linux, предназначенный для поиска веб-шеллов, спам-ботов, троянов, злонамеренных скриптов и прочих типичных угроз характерных для веб-пространств и особенно актуален для виртуальных шаред-хостинг платформ. Главное отличие от прочих Linux-антивирусов — его веб направленность, сканирование файлов веб-сайтов, ведь обычные антивирусы ориентируются на более глобальные угрозы уровня системы.
Что умеет
- Поиск угроз по базе MD5 и распознавание типа угрозы (например, php.cmdshell.nan.296.HEX) по HEX-базе.
- Статистический анализ файлов на наличие обфусцированных зловредов и инъекций.
- Обнаружение установленного в системе ClamAV для использования его в качестве сканера.
- Ручное и автоматическое (по крону) обновление сигнатур.
- Ручное и автоматическое обновление версии самого скрипта.
- Возможность сканирования недавно добавленных/измененных файлов (например за последние 2 дня).
- Опция загрузки обнаруженных потенциальных угроз на официальный сайт для анализа.
- Система отчетов.
- Очистка файлов от вредоносных инъекций.
- Крон-заготовки для запуска регулярного сканирования юзерспейсов или других директорий.
- Наборы исключений по расширениям, сигнатурам и путям.
- Возможность отправки результатов сканирования на e-mail.
- Мониторинг в реальном времени созданных/модифицированных/измененных файлов при помощи inotify_watch: мониторинг выбранных пользователей, каталогов или файлов.
- … и прочее.
Как это работает
Сканирование происходит с использованием собственного скрипта на базе grep, а если в системе установлен ClamAV — то при помощи clamscan. Аналогично с сигнатурами: программа имеет свою базу сигнатур, если же в системе установлен ClamAV, то использует дополнительно и его базу.
Источники сигнатур:
- Срез данных сети. Разработчик LMD является администратором хостинга на 35.000 сайтов, данные ежедневно анализируется и обрабатываются. Основной источник сигнатур.
- Данные сообщества собранные с антималвар-сайтов.
- ClamAV, взаимообмен сигнатурами.
- Данные, присылаемые пользователями.
Сигнатуры обновляются практически ежедневно, RSS-лента с обновлениями сигнатур присутствует на официальном сайте.
Результаты сканирования сохраняются в файл, а также могут высылаться на указанный в конфиге e-mail. Интеграции с популярными панелями управления, увы, нет, если же вы хостер — сообщения клиентам придется рассылать вручную.
Интеграция с популярными панелями ISPmanager и Cpanel была бы неплохим вкладом в сообщество (это в случае если кто желает).
Что это дает
Типичные примеры обнаружений
Отчет о сканировании выглядит следующим образом:
Установка
При запуске install.sh программа установки размещает файлы LMD в /usr/local/maldetect, заносит исполняемый скрипт в /usr/local/sbin и libinotifytools.so.0 в /usr/lib.
В процессе инсталляции автоматически создаются ежедневные крон-задания для обновления сигнатур и запуска сканирования. По умолчанию в конфигурации указаны типичные пути для сканирования вебспейсов популярных панелей управлений, таких как ensim, psa, DirectAdmin, cpanel, interworx и дефолтных apache-путей размещения сайтов (/var/www/html, /usr/local/apache/htdocs). Для ISPmanager путь /var/www/ придется добавлять вручную.
Настройка
Конфиг LMD находится в файле /usr/local/maldetect/conf.maldet.
Конфиг хорошо документирован и позволяет настроить все, что душе угодно.
На заметку:
ionice -c 3 добавленный к строкам запуска скриптов по поиску и сканированию файлов поможет предотвратить нагрузку на дисковую подсистему выставив наинизший приоритет i/o.
В файле /usr/local/maldetect/maldet
находим:
Стоит отметить, что данное решение — своего рода «костыль», данную опцию стоит добавить в апстрим.
Типичные команды
Запускаем сканирование указанного каталога:
По окончанию получаем результат вида:
Принудительно обновляем базы с rfxn.com:
Принудительно обновляем версию с rfxn.com:
Сканируем все изменные за последние X дней файлы (в данном случае 2) в указанном каталоге
Отправляем неизвестную уязвимость на rfxn.com:
Помещаем в карантин результаты сканирования SCANID (id из результатов сканирования)
Пытамся очистить результаты сканирования
Программа распространяется по лицензии GNU GPLv2.
Официальная страничка проекта: http://www.rfxn.com/projects/linux-malware-detect Linux Malware Detect.
Имею опыт использования и настройки, на все вопросы с удовольствием отвечу в комментариях.
Источник