Pull to refresh
0

Система безопасности сайтов САНТИ

Reading time 6 min
Views 16K
антивирус для сайтов САНТИПривет, Хабр. Этим постом я хотел бы рассказать Вам о своём Open-source проекте web-антивируса для сайтов САНТИ, о том, что уже получилось реализовать и какие планы на будущее. Но главная задача — получить фидбек, который послужит для дальнейшего развития.

Начну с лирики, так как она была в основе. Ежегодно взлому подвергаются миллионы сайтов, от сайтов визиток и развлекательных площадок до государственных интернет-порталов. Цель всех взломщиков одна — использовать посетителей сайтов и получить выгоду, использовать ресурсы взламываемых сайтов. Например, при взломе сайтов в них внедряются вирусы (эксплойты) посредством iframe вставок, которые заражают компьютер посетителя сайта, а затем вымогают деньги, либо крадут финансовую информацию жертвы и выводят деньги с их банковских счетов. От этих преступных действий страдают все — как посетитель, так и сайт, который был взломан. В результате действий “вредителей”, есть возможность потерять файлы и БД сайта, попасть под блокировку поисковых систем, а затем и блокировку настольными антивирусами, потерять драгоценный трафик и лицо компании.

Увы, при разработке сайтов многие web-разработчики не всегда проводят аудит безопасности кода, да и зачастую просто не хватает квалификации в этой области, а популярные же CMS находятся под пристальным вниманием взломщиков и результат – массовые взломы. Кроме уязвимостей самого сайта, зачастую происходят утечки доступов к серверам с файлами сайта. Что бы защитить свои сайты, владельцам необходимо нанимать специалистов по безопасности, программистов, администраторов и вести постоянный мониторинг целостности интернет-проекта и его защиты. Но позволить себе это могут единицы компаний, а миллионы сайтов на популярных CMS и их посетители остаются уязвимыми.

За последние 10 лет, работая в различных веб-студиях, я сталкивался с проблемами взломов сотен сайтов, это были как правило проекты без администрирования и обслуживания, сайты работающие под управлением всем известных CMSок. Необходимость создания системы для мониторинга целостности сайтов и их автоматической защите витала в воздухе уже давно, копились наработки и мысли, а в этом году я наконец решил реализовать этот инструмент.

Какой должна быть система защиты сайтов?


Начиная работать над САНТИ, в основу были заложены несколько обязательных условий:
  • Система должна быть автономной и ставиться под ключ на сайты, без использования сторонних серверов для работы с содержимым web-проекта;
  • Простейшее юзабилити;
  • Защищенный web-интерфейс;
  • Начало работы в полтора клика – скачал, настроил;
  • Открытый исходный код;
  • Свобода выбора необходимых инструментов;
  • Вспомогательные инструменты для веб-мастеров;
  • Автоматический мониторинг и защита;
  • Моментальное уведомление владельца о угрозе сайту;
  • Помощь сообщества пользователям;
  • Обновляемая;

Получившаяся сегодня система удовлетворяет всем поставленным перед ней условиям и совершенствуется.

Текущий функционал системы


За три месяца с первой публикации САНТИ в интернете и презентации его на популярных форумах Рунета, САНТИ оброс интересным функционалом, был собрали неоценимый фидбек, на основе которого уже выпущена версия САНТИ 0.5.

Базовая часть системы – Автопилоты, это PHP скрипты автоматически срабатывающие по расписанию. Для легкости используется удаленный CRON сервер САНТИ – ВКЛ/ВЫКЛ и работает, но в настройках можно активировать локальный CRON и настроить запуск автопилотов вручную на своем CRON сервере, ссылки к автопилотам на виду.

Реализованы следующие автопилоты:
  • Файловый автопилот – инструмент для мониторинга файлов сайта и уведомление в случае перемен. Скрипт создает при первом запуске антивируса образ файлов сайта – запоминает CRC файлов, размер, дату изменения, права. Если файл изменился/удалили/добавили – файловый автопилот сообщает подробную информацию собственнику сайта.
  • Автопилот бекапинга файлов сайта – сохранение всех файлов в gzip архив с сохранением chmod файлов. При восстановлении из данного архива – права на папки и файлы так же восстанавливаются, в основу положен инструмент AlfaUngzipper. Бекапинг возможен как на сервер с сайтом, так и в облако Яндекс.Диск.
  • Автопилот бекапинга БД сайта – сохранение дампа БД сайта как на локальный сервер, так и на Яндекс.Диск. Инструмент был создан на основе открытого инструмента Sypex Dumper.
  • Автопилот сканирования поисковых систем – проверяет сайт в Яндекс и Google на предмет блокировки из-за вредоносности сайта, при обнаружении блокировки происходит уведомление пользователя САНТИ.
  • Проверка сайта настольными антивирусамиАвтопилот проверки сайта по настольным антивирусам – регулярная проверка сайта на предмет обнаружения вредоносных вставок настольными антивирусами, такими как Касперский Антивирус, NOD, Avast и т.д., более 30 антивирусов. При обнаружении вредоносов предоставляется уведомление и отчет о том, какие файлы представляют угрозу и по мнению какого из антивирусов.
  • Автопилот самозащиты САНТИ – САНТИ проверяет самого себя на предмет вмешательства в файлы и в случае обнаружения изменений самоудаляется и восстанавливается в изначальный вид.

Автопилоты защиты сайта

Раздел САНТИ “Вручную” – позволяет воспользоваться инструментами для проверки и лечения сайта в реальном времени, не дожидаясь срабатывания автопилота.

Утилиты – раздел САНТИ, которые включает в себя набор всевозможного инструментария для обеспечения безопасности сайта и помощи Вебмастеру, данный раздел постоянно пополняется новыми инструментами. Уже реализованные утилиты:
  • Генератор паролей – классика, которой зачастую нет под рукой, а фантазии на генерацию стойкого к взлому пароля не хватает;
  • Date-поиск файлов – инструмент, который не раз выручал при поиске вредоносов уже после заражения сайта, позволяет задать временной интервал изменения файлов, задать фильтр по каким файлам ищем, или какие исключаем. Результат его работы – список файлов измененных/загруженных в заданный промежуток времени;
  • Поиск и удаление вредоносных вставок – инструмент для поиска вставок в файлах по маске начало/конец, поддерживает два режима – поиск/удаление вставок;
  • .ftpaccess конфигуратор – на хостингах, которые пользуются FTP серверами на базе ProFTPD, Pure-FTP возможно контролировать доступ по FTP, конфигурируя файл .ftpaccess (ограничения по IP, IP исключения и т.д.), данный инструмент помогает сгенерировать начинку данного файла;
  • Бекап и восстановление – тут всё понятно, инструмент для бекапа сайта, либо восстановления ранней версии сайта, позволяет задавать параметры бекапинга, такие как: форматы исключения, размеры файлов, путь архивации, имя архива.
  • PHP info – смешная утилита конечно, но частота её использования среди всех утилит – максимальна. Вывод информации о сервере.
  • Новости – RSS reader новостей САНТИ и новостей интернет-безопасности, последние берутся из RSS лент глубокоуважаемого SecurityLab и с их разрешения!
  • Редактор файлов – редактор файлов, которые были обнаружены файловым сканером, date-поиском, поиском вредоносных вставок. Реализован на базе ACE Editor, работает с разными кодировками, в новом релизе появится определение типа файла и соответствующая подсветка синтаксиса, так же предусмотрена подсветка вредоносного кода.
  • .htaccess блокировка сайта – один из любимых инструментов, блокировка сайта на время лечения сайта или атаки – организуется внедрением правила переадресации RewriteRule в .htaccess файл на сайт заглушку, заглушка так же входит в комплект САНТИ, папка САНТИ игнорируется, что бы можно было отключить блокировку и работать с ним.

Утилиты САНТИ


Что ещё интересного и особенного?


При первом входе в САНТИ пользователь проходит диалог настроек, который я постарался облегчить подсказками, валидаторами и пояснениями. В диалоге настраиваются все параметры уведомлений, здесь же можно зарегистрировать аккаунт на СМС шлюзе и включить эту функцию. По окончании настроек, САНТИ создает свой образ и снимок файлов для самозащиты, снимок файлов сайта для файлового автопилота, запускает самозащиту.

Интерфейс САНТИ требует авторизации, защищен от брутфорса ограничением на количество попыток входа. При входе в панель управления, САНТИ проверяет наличие новой версии антивируса и, при необходимости, оповещает пользователя, что требуется обновиться. При старте происходит загрузка RSS ленты новых событий антивируса.

Если подключен СМС сервис для уведомлений от автопилотов, то в интерфейсе отображается баланс аккаунта.

Под капотом: UI — CSS Bootstrap, адаптирован под планшеты, PHP + JS.

С целью облегчить и ускорить установку web-антивируса, я решил отказаться от использования MySQL, SQLite и остановился на старенькой библиотеке под названием PHP Flatfile package, все данные хранятся в текстовых файлах с TAB разделителями. За выбранный подход может быть можно и попинать, но пока в выборе не разочаровался.

В САНТИ внедрен он-лайн консультант, через который пользователь системы может обратиться к любому специалисту по безопасности из сообщества web-антивируса за консультацией.

Что дальше?


Планов и идей для будущих релизов множество:
  • Активно идет разработка поиска вредоносов по сигнатурам;
  • Подготовка системы для возможности свободной локализации на другие языки;
  • Автопилот сканирования поисковых систем на предмет появления новых страниц в выдаче (появление дорвеев);
  • Автопилот обнаружения изменений в БД сайта;
  • Обнаружение слива мобильного трафика;
  • Добавить разнотиповые файлы ловушки для удаленного мониторинга;
  • Предстоит глобальный рефакторинг и оптимизация кода, т.к. текущая версия антивируса, это больше прототип собранный из наработок и изысканий, которые копились годами;
  • Тестер хостинга;
  • Инструкции по обеспечению безопасности сайтов и умный помощник при взломе сайта;
  • Перехватчик SQL инъекций;

Список можно продолжать долго и он в будущем будет только расширяться.

Пока всё. Очень хотелось бы найти на Хабре единомышленников в области безопасности интернет-сайтов, разработчиков и милости просим в сообщество.

Будем рады любому фидбеку, ждём ваших комментариев и предложений. Спасибо! Скоро мы вернемся с новым постом.

Ссылки:
Сайт САНТИ – http://santivi.com
Скачать САНТИ — http://santivi.com/skachat/
Демо предпоследней версии САНТИ – http://demo.santivi.com/santi/
Сообщество и поддержка – http://forum.santivi.com
Tags:
Hubs:
+6
Comments 18
Comments Comments 18

Articles

Information

Website
santivi.com
Registered
Founded
Employees
2–10 employees
Location
Россия