|
||
Ответить |
|
|
#1
|
|||||||||||||
Вес репутации:
0
Регистрация: 27.02.2009
Адрес: Москва
Сообщений: 7,244
Сказал(а) спасибо: 574
Спасибок 2,669
в 1,896 сообщениях |
Безопасность сайтов -
27.12.2009, 11:52
Статья написана для непрофессионалов, поэтому дабы сделать ее более интересной для притязательных пользователей, я разбавил текст некоторыми случаями из жизни.
В данном документе перечислены основные уязвимости веб приложений и способы их профилактики, каждая уязвимость относиться к одной из основных категорий:
Нестойкие пароли. Категория: организационная уязвимость Использование простых паролей (qwerty, password, дата рождения, номер телефона) позволяет получить доступ к управлению сайтом путем перебора паролей или социальной инженерии. В общем случае желательно использовать автоматически сгенерированные пароли, но только в том случае если есть уверенность, что человек сможет его запомнить, а не запишет его на листке и повесит на монитор. В противном случае следует использовать сложные мнемонические пароли: первые буквы стихов или песен в другой раскладке клавиатуры, с изменением некоторых букв на цифрыили спецсимволы. Есть еще любимая тема оставлять пароли по умолчанию, типа root/ничего или admin/admin (в Йотовском яйце), и думать что об этом никто не узнает.Перехват пароля. Категория:организационная, эксплуатационная. Перехват пароля может быть осуществлен при передаче его от пользователя к серверу, это решается обязательным использованием защищенного соединения (https, ftps) при работе с сервером. Я помню Сергей Рыжиков, выступая на Хайлоаде или РИТе (не помню уже), спросил кто из присутствующих ходит на админки через защищенное соединение, и в ответ было поднято не так уж много рук. Из чего можно сделать вывод, что прогулка по какой-нибудь конференции с wi-fi сниффером может немного преобразить рунет.Кроме того, возможна кража с использованием так называемого «фишингового» сайта, т.е. сайт в браузере пользователя подменяется на идентичный, после ввода данных в форму входа, пароль попадает к злоумышленнику, в данном случае важно иметь «подписанный сертификат сайта». При использовании такого сертификата специальная компания (например http://verisign.com), подтверждает, что это действительно тот сайт, который предполагается, кроме того подписанный сертификат, удостоверяет тоже самое и пользователю сайта (что важно, например при оплате). Данная услуга стоит порядка $800 в год (на стоимость влияет уровень защиты и авторитетность компании, поставщика услуги) Меня все время удивляют организации, которые ленятся сделать нормальный сертификат, особенно в этом плане умиляет webmoney. Слава богу, сейчас они уже сподобились сделать нормальный сертификат, но еще месяц назад меня честно говоря передергивало от того, что браузер ругается на сайт, на котором я, между прочим, деньги держу.Ко всему прочему самоподписанные сертификаты могут вызывать разные мелкие баги: например с ними отказывается работать связка IE+Flash. Я убил довольно много времени, выясняя, почему перестал работать на продакшене мультизагрузчик, который в тот же самый момент спокойно работал себе на тестовом сервере.Кража пароля Категория:организационная Кража пароля осуществляется при помощи социальной инженерии или вредоносного ПО. Правила профилактики довольно банальны:
Большая головная боль вебстудий — пароли от сайтов клиентов, которые упорно оседают в хистори, архивах почты и расшаренных файликах на сервере.Отдельной приятностью является какой-нибудь мастер-пароль, который подходит к половине сайтов и известен менеджерам, разработчикам, их родственникам, а также блистательной плеяде уволившихся и уволенных сотрудников. Периодически предпринимаются попытки пройтись по всему портфолио и поменять, наконец, мастер пароль на что-то получше, которые обычно завязают где-то в самом начале.Проактивная защита Категория: проектирование. Определенные меры следует предпринять и на уровне архитектуры сайта, данные меры позволят частично обезопасить себя при утере пароля. Ограничение по IP Доступ в административный интерфейс должен быть ограничен по IP, т.е. вход должен быть возможен только из внутренней сети компании. Все прочие случаи (работа из дома, работа в командировке и т.п.) должны вводиться в виде исключений: явно указывается в какой период, в какое время (странно, когда кто-то заходит с неофисного IP в рабочее время), с какого IP (если это возможно) и какой пользователь может работать с сайтом. Вообще-то еще неплохо сразу сказать «до свидания» далеким странам и анонимным прокси (если вы конечно не сайт Кавказ-центр разрабатываете)Captcha Captcha (символы с картинки) в форме авторизации позволит снизить риск того, что в административный интерфейс войдет вирус или другая вредоносная программа. Бедой многих каптч, кстати, является неверие разработчиков в то, что пустая строка равна пустой строке, зачастую удалив сессию или почистив какое-нибудь скрытое поле, вы с удивлением обнаруживаете, что умная машина сравнила ничто с ничем, и пропустила вас дальшеОдноразовые пароли Также эффективным и недорогим средством является введение дополнительного «временного» пароля: для каждого из пользователя генерируется матрица из случайных чисел, и при входе или выполнении критичной операции требуется ввести 2 или более чисел, расположенных в заданной колонке и столбце. Так, в нижеприведенной схеме для входа предлагается ввести, например, число из 1-й колонки 2-й строки и 3-й колонки 1-й строки, т.е. 34 и 323 соответственно.
Клиентские сертификаты. Возможно ограничения доступа только пользователям, имеющим клиентский сертификат (т.е. все запросы на сервер подписываются ЭЦП). Мы в ответе за тех кого приручили—следя за своими персональными данными, не забывайте о персональных данных пользователей.Уязвимости приложения В данном разделе приводяться основные возможные уязвимости в коде приложения, а также методы их устранения и минимизации «человеческого фактора» при разработке. SQL injection Категория: проектирование Данная уязвимость позволяет злоумышленнику изменить запрос к базе данных, используя введенные данные. Пользуясь данной уязвимостью, взломщик может выбрать из базы данные, не предусмотренные разработчиком (что позволит, например, войти в административный интерфейс, не зная пароль) или подменить данные в БД (например, удалить какую либо таблицу или заменить тесты). Как правило, данная уязвимость устраняется экранированием данных при сборке запроса. В данном разрезе крайне желательно изначально убрать возможность обращаться к базе напрямую из кода, а работать с БД исключительно через специальную библиотеку, автоматически выполняющую необходимые преобразования. Не удержусь и пущу небольшой луч ненависти. Однажды к нашему сайту одна сторонняя контора приворачивала свой сервис, эти славные ребята прислали нам письмо в котором просили дать им доступ в БД, дабы сделать общую авторизацию. На это предложение мы ответили гневным отказом и схемой авторизации, снабженной надлежащими редиректами и ЭЦП.Code injection Категория: проектирование Происходит в случае, если какой-либо исполняемый код подключается или формируется на основе данных, введенных пользователем. Устраняется за счет введения дополнительных проверок, экранирования и использования специализированных библиотек. Если вы думаете, что code injection ограничивается хрестоматийным багом “include $_GET[‘file’]”, хочу вас немного расстроить.Межсайтовое выполнение сценария Категория: проектирование Внедрение злоумышленником html или javascript кода на сайт из-за недостаточной проверки и преобразования введенных данных. Позволяет изменить внешний вид сайта и в некоторых случаях «украсть авторизацию» (попасть в административный или пользовательский интерфейс без ввода пароля). Решается экранированием данных при выводе, оптимальным решением является автоматическое экранирование всей выводимой на странице информации, если обратное не указано явно. XSS это второе «наше все», тут можно посоветовать следовать принципу: «запрещено все, что не разрешено», который работает гораздо лучше принципа «разрешено все, что не запрещено», методов внедрения XSS придумано сто тысяч миллионов и кто знает, сколько их еще не придумано.CSRF. Межсайтовые запросы Категория: проектирование Данная атака направлено на то, что пользователь совершает какие-то действия незаметно для себя. Самый простой пример, что на сайте злоумышленника находится картинка, адрес которой совпадает с адресом удаления раздела, когда вы заходите на эту страницу, ваш браузер запрашивает URL картинки, и, если вы авторизованы в системе, вы сами незаметно для себя удаляете этот раздел. Данная проблема решается введением механизма подтверждения, т.е. вы можете совершить определенное действия только при переходе с определенной страницы, на этой странице формируется ссылка с уникальным временным кодом, валидность которого проверяется страницей, на которой совершается непосредственно действие. У нас на одном проекте пользователи стали частенько самоудаляться из сообществ, проблема оказалась в злостном iframe’e который вел на страницу суицида.Доступ к скрытым файлам Категория: проектирование. Позволяет атакующему, специальным образом сформировав запрос, прочитать произвольный файл на сервере. Решается проверкой корректности имени файла при запросе. Выполнение загружаемых файлов Категория: эксплуатация Файлы, загружаемые на сервер, могут быть выполнены, позволяет злоумышленнику, имеющему доступ в администраторский интерфейс получить полный доступ к системе. Меры предосторожности (осуществляется на уровне администратора сервера):
Отдельно следует заметить, что проверять надо и при загрузке, но лучше сразу запретить выполнение всего, а отдавать каким-нибудь nginx.Раскрытие кода Категория: эксплуатация/проктирование Доступ к служебным и разработческим скриптам, а также к исходному коду, могут дать злоумышленнику дополнительную информацию для взлома.
Несколько месяцев назад, благодаря папочке svn одни любознательные товарищи узнали много нового о ведущих сайтах рунета, о чем кстати и написали на хабре.Переполнение диска Категория: проектирование Из-за недостаточной проверки входных данных или неверно организованного кэширования злоумышленник может забить базу данных или диск ненужной информацией, что замедлит работу и может вызвать (если закончится место) неработоспособность системы.
Если вы любите идентифицировать кэш по строке запроса, будьте готовы к тому, что поставляя какие-нибудь дурацкие параметры, кто-то очень нехороший, сможет загадить ваш кеш, а между делом и подосить.Псевдокриптография Очень многие считают, что случайное число и md5 хэш и есть криптография. На самом деле это не так, md5 уже давно скомпрометирован и для целей безопасности его лучше не использовать. Что касается случайных последовательностей то они часто оказываются не совсем случайными, что автоматически означает, что их нельзя использовать, например для карт оплаты. В частности псевдослучайными является GUID генерируемый MS SQL сервером, о чем подробно и с выражением написано на RSDN. Также интересны случаи изобретения собственных систем шифрования и вытекающая из этого распространенная практика что-то зашифровать и не ходя далеко также расшифровать (как вариант подписать что-нибудь открытым ключом) Конфигурация сервера. Категория: эксплуатация Важным вопросом является правильная конфигурация сервера и периодическое обновление программного обеспечения. Администраторам следует отслеживать сообщения об уязвимости (bagtraq) и обновление ПО (веб сервера, сервера БД и т.п.), так как постоянно обнаруживаются новые ошибки и уязвимости. Однажды я столкнулся с одной организацией, которая блюла себя настолько, что сервер у них стоял за семью замками, а для того чтобы обновить сайт, надо было ехать туда с архивом на CD диске. При этом все ПО у них было поставлено 4 года назад и с тех пор не обновлялось, потому что страшно и лень.DDOS Категория: эксплуатация/проектирования Одна из наиболее сложных в плане предотвращения атак. Суть заключается в том, что на сервер идет поток запросов (flood), отчего банально заканчиваются ресурсы, и сервер не может справиться с нагрузкой. Как правило DOS атака является распределенной и осуществляется при помощи ботнета: сети из зараженных вирусом компьютеров. Следует понимать, что атака осуществляется специальными программами, которые при желании можно модифицировать под конкретную задачу, т.е. большую часть ухищрений по защите злоумышленник при желании может обойти. DDOS атака является объектом купли-продажи, т.е. злоумышленником может быть любой, кто в состоянии заплатить владельцу ботнета Стоимость аренды ботнета довольна расплывчата, если раньше она оценивалась в несколько тысяч USD, то сейчас цены сильно упали и есть предложение и в $100-150 за день атаки (правда это подразумевает предоплату, что в подобном высокоморальном бизнесе означает, что шансы просто потратить деньги, довольно высоки).DDOS атаки разделяются по степени грубости:
Про DDOS уже написано много и большей частью грустного— боты умнеют, их все больше, Гондор не выстоит и т.п. На самом деле при серьезном подходе он не так уж страшен (вот lib.rus.ec досят безостановочно и хоть бы хны), но всегда надо быть готовым к худшему, и сделать сплэш страницу: «на нас напали и DDOSят, пока мы тут бьемся в кровь, посмотрите ролик на youtube про наши новые сервисы». <!-- Вопросы задаем на форуме, не в ЛС --> |
||||||||||||
Ответить |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Инфо Хостинг для сайтов на движке Joomla | Vector | Joomla | 0 | 14.10.2009 16:59 |
Инфо Хостинг для сайтов на движке Drupal | Vector | Drupal | 0 | 14.10.2009 16:58 |
FAQ Безопасность в xp | Vector | FAQ по лечению вирусов | 1 | 02.07.2009 15:29 |