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

    антивирус для сайтов САНТИПривет, Хабр. Этим постом я хотел бы рассказать Вам о своём 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

    САНТИ

    19,00

    Компания

    Поделиться публикацией
    Комментарии 18
      0
      «Скачивание файла означает Ваше согласие с условиями использования антивируса для сайтов САНТИ.» — не рабочая ссылка. Точнее ее отсутствие.
        +1
        Спасибо, исправлено!
        +1
        Ни какой awsome-magic-tool не заменит специалиста с мозгом.
          +1
          Согласен, для этого и предусмотрели в САНТИ возможность консультации с мозгом специалиста посредством он-лайн консультанта.
          0
          Шрифт у вас классный используется
            0
            С точки зрения пользователя все более ли менее ясно.

            Интересно как оно «под капотом».
            Особенно интересны моменты:
            — Как Санти проверяет изменения в самом себе, учитывая, что сам алгоритм проверки может быть скомпрометирован? Или такое исключено?
            — Тестировали ли файловый автопилот на предмет обработки большого числа мелких файлов? Например, особенно «жирные» инсталляции битрикса. Как он поступает если не может закончить проверку и подсчет контрольных сумм всех файлов в отведенные 30 секунд жизни (при дефолтной настройке и без возможности продлить)?
              0
              без возможности продлить)
              Доступ к директиве есть, разве что хостинг может запретить доступ к функции, но я такого не встречал ни когда, хотя и очень обширно пользовался шаред хостингами.
                +1
                1. Изменения в самом себе он так же проверяет по отпечатку, который делает при прохождении далога настроек, проверяет CRC, дату изменения, права на файлы. Если при изменении файлов Санти сделать корректировку в файле отпечатка — то скомпрометрировать можно. Учитывая данный минус, мы решили создать файлы ловушки, целостность которых будем проверять удаленно, с серверов Санти.

                2. Тестирование для больших объемов файлов проводилось, если есть недостаток памяти на обработку — скрипт прерывает обработку, в планах оптимизация данного автопилота для больших объемов данных.

                Спасибо за вопросы.
                0
                Редактор файлов

                Редактор файлов зачем? Если у пользователя процесс web-сервера позволяет писать в сорцы, то он конечно молодец, а вы как бы намекнете ему что он молодец и пусть дальше так делает. Вещь мне кажется бесполезная и только развращает.
                  +1
                  Если автопилот находит изменения у файлов, то появляется возможность посмотреть на эти файлы редактором не выходя из Санти, и при необходимости удалить вредоносную вставку в код.
                  +3
                  Вообще впечатление — вроде работа какого-то школьника, недавно начавшего учить PHP. Также как-то не очень впечатляет наплевательство к копирайтам. К примеру, тот же Sypex Dumper, да в статье он упоминается, но в самом коде нигде копирайты не упоминаются, даже сам класс вместо Sypex_Dumper стал Santi_Dumper.

                  Также для бэкапа файлов использован AlfaUngzipper, не лучший вариант, конечно, но тем не менее и у него никаких копирайтов и упоминаний о нём, и расширение файла изменили с auae на sabu.

                  Кстати забавно почему при проверке заблокированности сайта в Яндекс, используется User-Agent: MSIE 6.0, а для Google — Chrome 29 :) Ощущение, что авторы просто понаходили куски кода в инете, и вставили в этот Санти, не особо вникая в детали.
                  Ну собственно антивируса там нет, так как нет проверки сигнатур. Да и лечение предлагается вручную. Хотя если есть встроенный бэкап, можно было сравнить файлы, и показать пользователю, что изменилось, но с форматом файла от AlfaUngzipper, это весьма затратно.
                    0
                    По ходу статьи я писал о том, что сейчас я назвал бы это только прототипом, собранный из ранних набросков и изысканий в интернете, которому ещё предстоит пройти рефакторинг, оптимизицию, изменения, следов того же AlfaUngzipper не останется, т.к. как вы сказали он весьма ресурсоемкий. Проект открытый и два месяца как появился, дайте время и я думаю с помощью сообщества он обретет совсем другой вид. На сайте создан блок партнеры, куда включаются все, кто учавствуют и помогают проекту и Sypex Dumper там так же окажется.
                      0
                      Насчет сообщества, весьма сомнительно. Так как у проекта уж слишком пафосное описание. Вы с одной стороны говорите, о вроде как огромном опыте, а на деле оказывается поделка на коленке. Что вызывает смешанные чувства. Или вы думаете достаточно дать рекламные посты на нескольких популярных сайтах, и народ побежит доделывать и переделывать Санти?
                        0
                        Не буду скрывать, но надежда на то, что появится интерес со стороны разработчиков сайтов — есть. К работе над САНТИ за последний месяц присоединилось несколько человек и это обнадеживает. Ваши замечания так же являются большим подспорьем и будут учтены.
                        Мой опыт заключается в количестве сайтов которые приходили за реанимацией и я их восстанавливал, искал инструменты которые могут помочь, в т.ч. и Ваш дампер, набрасывал что-то сам. А САНТИ — это идея обьеденить все в одно и мне кажется эта идея должна начать реализовываться.
                    +1
                    В OpenSource Initiative opensource.org/ будут «рады» вашему логотипу. Эта фигура столь очевидна, что это уже не первый случай.
                      +1
                      Абсолютно произвольное совпадение, нашел в залежал даже процесс придумки логотипа для САНТИ:

                      image
                        0
                        Ну я-то верю, но сути дела это не меняет. С Open Hardware из-за схожести лого они уже бодались.
                          0
                          Посмотрел на Open Hardware, схожести больше чем у нас, а вообще попробую я написать в OpenSource Initiative и узнать их точку зрения. Кстати, после того как уже лого нарисовали натыкались на схожие ещё у какого-то бренда.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое