Я тоже удивляюсь, как людей конторы веб-девелоперские иногда разводят.
Моему другу недавно сделали «сайт» с флешом и всякими рюшечками за 25000 грн. = $3125.
Сайт визитка, закачка прайсов, и флешовый рекламный баннер :-)
Причем когда начали проверять, оказалось что дизайн полностью содрали с сайта конкурента :-)
Помню похожий случай, попросили дописать вывод списка последних тем форума (рнрВВ2) на главную страницу сайта, на таком «супер-пупер движке за пять кило-зелёных». Открыл исходники, думал умру от смеха. Когда сказал заказчику что его надули в прямом смысле, он сказал что-то типа «да кто ты такой, эти люди большие бабки берут, не могут они плохого сделать»
И еще при этом говорят нам надо сделать вот тут совсем немного за 2000р., а когда слышат, что это стоит 20.000р., то с удивленным видом говорят: «да нам за столько весь сайт сделали.»
Да уж. В прошлом году писал подобный модуль защиты от изменения файлов для своего велосипеда. По итогам работы спасло много нервов пользователям. Думаю, что разработчики смс должны по умолчанию включать такие гварды в свои программы.
Из того, что умеет мой защитник
— делает базу контрольных сумм файлов в базу (есть 2 вариант всех файлов или только часто вскрываемых.)
— делает бекап файлов
— проверяет файлы на изменение по расписанию и в измененных сравнивает сигнатуры(есть возможность их обновления с нашего сайта)
— если находит новые файлы то шлет письмо админу с отчетом и ссылкой на рабочий последний бекап
— если в измененных находит вирусы или шеллы, то делает бекап и помещает их в карантин. Шлет отчет админу и предлагает отправить файлы на анализ нашей поддержке
— из отчета или из настройки ативируса в админку нужно принять изменения файлов, если он их менял и пересчитать новую контрольную сумму файлов, чтобы больше не ругался
А что, у нас уже веб-серверу дают права на изменение файлов скриптов? Куда катится мир?
Лет 15, если не больше, твердят: сервер должен иметь права на запись исключительно в определённые директории (временные файлы, кэши, аплоады), при этом эти директории НЕ ДОЛЖНЫ быть доступны через веб.
Насчёт «запретить» — не знаю, но я, как старый админ-параноик, склонен пользоваться SFTP по ключу.
К сожалению, современные тенденции вебмастеринга ведут к тому, что веб-программисты повально не задумываются о безопасности вообще. Я понимаю, когда Вася Пупкин покупает себе shared hosting для странички «обо мне и моей собачке Жучке» — но я категорически отказываюсь понимать, когда достаточно крупные веб-проекты экономят на грамотном админе.
Безопасность — вещь комплексная, её нельзя оценивать никак иначе.
Не давайте PHP доступа к исполнению бинарников, кроме необходимых для проекта. Запретите в .htaccess доступ ко всем файлам, кроме перечисленного списка (index.php, basket.php, showsomething.php). Запретите directory listing. Контролируйте софт, который установлен на машине — apache, php, mysql, ftpd, всё прочее. Какие версии? Не было ли обнаружено в них багов? Читайте багтрак, принимайте решения сразу, как только стало известно о какой-то проблеме. Проверьте, какие сервисы торчат наружу, если в этом нет необходимости — переведите их на локалхост. Закройте доступ ко всем портам на файрволле, откройте необходимые — 80, 443, 22.
Это всё задачи, которые должен выполнять админ сервера. Он же должен проводить аудит разрабатываемого программистами кода и бить по рукам, если что. Кстати, раньше обязательным правилом хорошего тона было держать на сервере tripwire или аналогичный софт, который как раз и выполнял подсчёт контрольных сумм файлов и орал, если что-то изменилось.
Тогда и проблем с утекшими смсками и аналогичных можно было бы избежать :)
Все верно с одной стороны, с другой стороны крупный проект (со своим сервером, админом и пр) просто не нуждается в подобных скриптах, так как все тоже самое можно сделать при помощи серверного софта.
Это решение как раз для мелких и средних сайтов расположенных на shared-хостингах… Кто им там позволит разворачивать «тяжелую артиллерию»?
При нынешних ценах на VPS — любой «коммерческий» сайт, по идее, может себе это позволить. Но в целом да — лучше уж такие скрипты, чем полная бесконтрольность.
Нет, их есть смысл использовать только как одно из средств при проведении аудита системы. В реальной ситуации надо проверять чексумы конфиг-файлов, определённого содержимого /var (кронтабы, например) и прочее — то есть без специализированного софта не обойтись всё равно.
чексуммы всего и вся есть смысл проверять если система представляет из себя замкнутую среду :)
впрочем, если некто получит администраторские привелегии на такой, то скорее всего плакали все ваши ухищрения
Кто говорит о «всего и вся»? Безусловно, для каждой системы список контролируемых файлов будет свой.
Анализ же контрольных сумм нужен не для предотвращения взлома, а для своевременного оповещения об оном. Ежу понятно, что если стало известно, что система была скомпрометирована — то её эксплуатировать нельзя, а вот узнать,
Кроме того, с вышеописанными тенденциями — вовсе необязательно получать привилегии администратора. Ну как пример — взломали какое-нибудь веб-приложение, а тут апач с правами записи в /var/www — и давай пихать туда всякие пхпшеллы. Вот в такой ситуации tripwire очень даже поможет.
Безусловно, панацеи — нет. Защита должна строиться из очень многих уровней, проверка контрольных сумм критичных файлов — только один из них.
Писать на PHP «антивирусы» (в реальности видимо — примитивные сканеры с распознаванием зловредов на регулярках) — это уже по моему, совсем треш какой-то. Обходится, подозреваю, банально обфускацией кода. Не знаю как вы, а я плагины для вордпрессов и джумлы вообще за софт не считаю — так, скрипты какие-то, на коленках написанные.
Насчет FTP - я на одном сервере вообще не ставил FTP, код деплоил из репозитория скриптом, и удобно, и безопасно.
Просто не надо хранить пароли в Тотал Коммандере (или другом FTP-клиенте), и не надо подхватывать вирусы. А если у вас паранойя — раз в несколько месяцев просматривайте логи подключений (IP-адреса) по FTP/SSH, или слепите примитивный скрипт, который будет вам слать письмо при заходе с нового IP-адреса. Но проще все же не сохранять пароли и не ловить вирусы.
p.s. Насчет запрета на запись: честно, это крайне неудобная штука, при том что FTP пользователь все равно может менять любой файл, а веб-серверу доступен /tmp + папки для аплоада (для того, чтобы загрузить туда например exploit). Реальную защиту мне кажется, дает только запирание всего веб-сервера в тюрьму (или виртуализация).
сигнатуры зловредов обычно не нужны, достаточно просто сверять контрольные суммы
кстати, мой вариант спокойно противостоял ифреймеру, который использовал уязвимость в по сервера — пока другие мучались, вычищая вручную, мой скрипт прибивал заразу сходу, пока не поменял хостера на более толкового
Как работает WebsiteDefender