Мы запускаем веб-сервер виртуального хостинга с обычным стеком LAMP. Он запущен и работает много лет назад (ммм, Apache-1.3 и PHP-3 дня?) И прошел через множество итераций. Мы стремимся иметь хорошие политики системного администратора, такие как поддержание всего стека в актуальном состоянии, проверка слабых паролей, минимизация поверхности атаки, использование suhosin, отслеживание системных журналов и т. Д. Конечно, каждый виртуальный хост ограничен своим каталогом (как для доступа по FTP, так и как php open_basedir).
Но, в конце концов, это всегда веб-сервер, на котором запущен ненадежный PHP-мусор, загруженный клиентами (читайте: неизвестные и в основном глупые пользователи без какого-либо опыта в сфере ИТ) с HTTP, доступным миру (веб-формы и еще много чего) ... эти сценарии не так уж и редко:
При исследовании скомпрометированного PHP / JS / HTML / любого другого материала мы иногда обнаруживаем вредоносное ПО в виде javascript (либо в файлах .js, либо встроенных в html), а иногда мы даже находим внутри файлы .zip с вредоносными программами / вирусами для Microsoft Windows.
В такой дикой среде невозможно многократно запускать автоматические тесты уязвимости на веб-сайтах, и, вероятно, это также не принесет особой пользы. Я также думаю, что о таких вещах, как mod_security, не может быть и речи в такой общей, общей, неконтролируемой среде.
Но мне интересно, есть ли что-нибудь вроде антивируса, которое мы могли бы запускать на стороне сервера, по крайней мере, для поиска веб-сайтов, скомпрометированных с помощью хорошо известного javascript или исполняемых файлов, или известных уязвимостей в старых версиях веб-приложений PHP. Что-то, что можно запускать из cron каждую ночь и получать хороший отчет по электронной почте.
Что-то подобное существует? Может ли clamav обнаружить некоторые из этих неприятных вещей JS? (Я предполагаю, что мы уже можем использовать его для обнаружения загруженных zip-файлов с вредоносным ПО Win32). Что-нибудь еще, о чем я не думал, что можно запустить на стороне сервера для статического сканирования? А как насчет содержимого, хранящегося в MySQL (например, javascript, загруженного из форм и сохраненного в SQL для последующего отображения на веб-страницах)?
В дополнение к ClamAV рассмотрите возможность использования Мальдет для дополнительного обнаружения вредоносных программ. Согласно документации, он может интегрироваться с ClamAV, хотя я лично это не настраивал.
Антивирус моллюска это тот инструмент, который вам нужен. Он видит общие обязанности в почтовых системах, но нет причин, по которым вы не могли бы отслеживать загрузки, поступающие через ваше веб-приложение.
Просто помните, что вам, вероятно, потребуются изменения в коде приложения, чтобы использовать это эффективно. При этом необходимо учитывать тот факт, что ClamAV будет сканировать, обнаруживать и, возможно, удалять / блокировать файлы независимо от вашего приложения. Лучшим вариантом будет вызов ClamAV из вашего приложения для каждой загрузки, но это может занять больше времени на разработку, чем вы бы хотели инвестировать.
Snort может обнаружить, пока загружается вредоносная программа. Также используйте Cloud Linux или SELinux и т. Д. Это предотвратит компрометацию сайта многими работами, если это настроено. Вы можете запустить Kaspersky Scan и на веб-сервере, он кое-что обнаруживает, но не всегда лечит должным образом. Прежде всего, вы можете реализовать политику таким образом, чтобы все загружаемое должно иметь ограниченный доступ, а также то, что вы можете сделать, - это предотвратить перезапись файлов, за исключением специальных папок, которые не могут быть связаны извне. Это возможно, и есть много способов сделать это. ACL, SELinux, SUEXEC и т. Д.
Я рекомендую вам попробовать использовать Linux Malware Detect (http://www.rfxn.com/projects/linux-malware-detect/). Поместите его в cron для периодического сканирования:
0 * * * * / usr / local / sbin / maldet -r ~> вывод