Привет. Возможно, все будет описано непонятно, но я постараюсь подоходчивее. Имеется 5 сайтов. Часть из них написана мной, часть - нет. Везде стандартная связка PHP + MySQL. Все 5 штук сложные, с большим количеством кода. Естественно в них могут присутствовать дыры. На сайтах встречаются загрузка файлов(не картинок), загрузка картинок, include прямо из get запроса(естественно защищенный, по крайней мере я так думаю). Требуется какой-то супермегамодуль, который я смогу внедрить на эти 5 сайтов для защиты от основных уязвимостей и атак: - SQL injection - LFI/RFI - XSS - Оповещения о DDoS - Любое изменение любого файла - Защита форм от брутфорса - Защита от заливки плохих файлов или даже тех же jpg с кодом внутри Скорее всего я что-то пропустил, среди ночи голова плохо варит. Требования, которые, к сожалению, по разным причинам невозможно обойти: - В существующий код нельзя вносить изменения. В идеале это должен быть просто include() - С базой данных защищаемого приложения тоже никакого взаимодействия - Данные о попытках SQL inj и всякого прочего должны сохраняться в удаленную БД MySQL Почему такие дурацкие требования? Вот так захотелось заказчику. По каким причинам ему так захотелось и почему это не смогли организовать люди, поддерживающие его эти 5 сайтов, мне неизвестно. Вполне возможно, что они не могут этого сделать, а раз такие кодеры, то и защита дополнительная нужна. В общем не суть, меня это не касается. Итак, в общих чертах я понимаю, как это реализовать. Например: 1. Та же защита от SQL inj может реализоваться хотя бы перебором массивов $_POST и $_GET 2. АнтиDDoS - проверкой кол-ва запросов с одного IP к определенному скрипту в период времени. Писать защиту от DDoS средствами PHP по моему мнению - грабли, достаточно только оповещения, какого - будет решаться потом(email, sms, звонок на моб. тел., по мне - хоть запуск боеголовки, оповещение - не моя проблема). 3. LFI/RFI - по принципу п.1 4. XSS - так же 5. Слабо представляю себе защиту от брута. Теоретически можно было бы проверить количество отправок формы с одного IP, но как мне узнать что это именно та форма? Код то менять нельзя. Могу проверить запросы к скрипту с одного IP опять же в период времени, но вдруг это будет чат? Тогда запросы могут быть частыми, а брут вполне можно настроить на задержку между попытками. С другой стороны какой же это будет брут, если перебор, например словаря из 10000 паролей займет почти 3 часа.. 6. Проверка файлов на подмену. Мысль хранить в сторонней БД список файлов для каждого сайта с md5 того самого файла. Насколько это будет безопасно - не знаю. Возможно несложно будет найти коллизию, а возможно я сейчас спорол чушь. 7.Про заливку файлов - тут, вроде все понятно. Перебрал $_FILES. Проверил расширение. Посмотрел в содержимое - вдруг какая гадость там сидит, да и все. В общем, не буду тянуть. Чего я, собственно сюда приперся? Хочу попросить людей, хорошо осведомленных в вопросах безопасности дать пару подсказок. Чувствую, что все, что я придумал пока довольно сыро и непродуманно. Акцентирую внимание на том, что я не прошу готовый код или какие-либо другие халявные для меня решения. Мне просто нужны подсказки по нескольким пунктам: 1. Какие из возможных уязвимостей я пропустил? 2. Насколько описанные мной методы действенны? Может есть возможность реализовать что-то проще, а что-то по другому? Добавить что-то? 3. Может, кто-то сталкивался с чем-то подобным? 4. Ваше общее впечатление. Стоит ли вообще браться за это? Оплата обещана серьезная, да и мне интересно заняться. Опыт бесценен. Вообще, вся мало-мальски полезная информация принесет пользу. Обещаю не вякать "это и так понятно" и "ничего нового ты мне не сказал". Огромное спасибо за ваши ответы, советы и критику.
А не вариант настроить modsecurity2 на серваке? или там только виртуальный хостинг прокатывает? Просто если код написан через ЗД, то даже навешанные защиты в теории можно обойти, так как навешанные защиты обычно это фильтры запросов, а фильтры как известно можно обойти. А если сами сайты написаны довольно не плохо, то можно различные варианты попробовать. Про вариант 7 не так все просто, потому как анализ нужно делать очень сложный, как недавно кто-то из больших компаний признал, что любая загрузка опасна. Но это все теория, на практике чаще нужно выполнить уравнение целесообразность=сложность, если это не особо сложные сайты, то это одна степень защиты и сложности, если там что серьезное то защита должна быть на разных уровнях.
Один из сайтов лежит на VPS, остальные на разных вирт. хостингах, причем парочка из них вызывает сомнение На сайтах нет переписки президентов и не хранятся секретные документы, однако конфиденциальные данные все-таки есть. Поломать можно все, это факт. На данном этапе стоит задача минимизировать уязвимости независимо от кривости рук программиста, писавшего сайт.
RomanoFFUA Можно попробовать обойтись хорошо составленными правилами для .htaccess, как практика показывает, часто довольно действенное средство, если конечно написаны не кривыми руками и отлажены под конкретный сайт. 5 пункт тоже задача довольно смутная, так как брут можно пустить через соксы н-го количества или вообще через Tor, тогда будет в принципе невозможно этому противостоять, но от обычного брута просто ловить кол-во попыток запроса к форме, и если более 4 неудачных то капчу выкидывать
Практика показывает, что "наказаны" будут все. Вопрос лишь в цене. Доверься лучше специалисту и не занимайся безопасностью сам.
Как вариант - привязывать кол-во попыток авторизации к логину, например. Как сказано выше - есть два варианта: или не делать, или делать только средствами подключения какого-то модуля include-ом, потому до кода, .htaccess, равно как и до прочего добраться я не смогу. Естественно, накажут всех Довериться специалисту в какой сфере?
spider-intruder Наказаны не наказаны, зависит от ситуации и договоренностей) Если есть возможность попрактиковаться самому, то почему нет? если это не инет магазин и что-то критичное. А если доверяться только всегда специалистам, коих единицы обычно, а остальные 99% только мнимые спецы, а вот цену все любят винтить в зависимости от того насколько позволяет совесть. И самое главное, как определит тот кто не супер спец, что он имеет дело со спецом? эта тема такая что можно мутить воду на каждом шагу и будет ясно что ты имеешь дело не с спецом только тогда, когда либо произойдет взлом, а до тех пор будет ощущение безопасности. Так что тут вопрос спорный, да и форумы не для того чтоб посылали к спецам, а чтоб давали советы, а кто там уже за что будет отвечать это за себя берет ответственность ТС
Teratex На правах рекламы - https://audit.antichat.ru А вообще - серебряной пули не бывает. То, что вы хотите - решает WAF, причем решает плохо и ненадежно. Без подключения модулей апача/сторонних приложений - не решается вообще.