Как сделать неуязвимый сайт?
Создана: 18 Марта 2010 Чтв 16:46:14.
Раздел: "Компьютерная безопасность, коды, доступы и т.д."
Сообщений в теме: 16, просмотров: 5995
-
Если хочется сделать сайт, надёжно защищенный от всякого рода наездов со стороны властей или каких-то иных злопыхателей, то вполне достаточно применить дешевую и эффективную схему, о которой я и хочу рассказать. Как раз эта схема в данный момент используется на Омском Форуме.
Смысл этой схемы в том, чтобы спрятать реальный, мощный сервер (или несколько серверов) своего ресурса, за двумя слоями дешевых арендованных промежуточных серверов.
Для посетителя из интернета виден только внешний слой (L3) - это могут быть дешевые VDS, какие-то Shared-хостинги, либо вообще какие-то компьютеры пользователей, которые дополнительно нагружены функцией внешнего слоя.
Идеально подходит для организации внешнего слоя NGINX - собственно говоря, эта штука как раз и предназначена для организации внешнего слоя (правда, официально - не для обеспечения секретности, а для распределения нагрузки).
Следующий слой (L2) - как раз и является буфером, обеспечивающим безопасность. Это могут быть, например, VDS арендованные где-то за рубежом - это если требуется обеспечить высокую степень защиты. Для того чтобы узнать местонахождение серверов L2 злоумышленнику потребуется сначала вскрыть защиту слоя L3 - в награду он получит IP-адрес сервер L2. На этом моменте весьма желательно отследить факт вскрытия безопасности и уничтожить "засвеченный" сервер L2, заменив его на другой. Множество готовых L2 серверов могут быть заранее настроены и "спать" в ожидании своего часа. Всё зависит от степени надёжности и безопасности, который требуется обеспечить. Если у злоумышленника скорее всего не получится получить доступ к серверам L2 (например. если они находятся в надёжном месте или где-то за рубежом), то можно и не рубить "засвеченные" сервера уровня L2. Если же наоборот, требуется максимальная надёжность но при этом нет надёжных "точек опоры", тогда на уровне L2 можно построить несколько дополнительных уровней безопасности, несколько раз перебросив соединения из одного дата-центра в другой. Тогда для вскрытия уровня L2 злоумышленнику придется пройти по всей цепочке и получить доступ к каждому промежуточному серверу.
И, наконец, самый секретный слой - L1, на котором находятся реальные сервера ресурса. Чтобы вычислить их местонахождение потребуется прежде вскрыть уровень L2.
Чтобы обеспечить надежность серверов на уровне L1 надо настроить один или несколько зеркальных серверов, на которые будет постоянно сбрасываться информация об изменениях, но никакие сервера L2 не должны указывать на эти зеркальные сервера.
Таким образом, если злоумышленнику удастся вскрыть уровень L2 и захватить сервер уровня L1 то в этот момент должна сработать защита, которая заблокирует все данные на сервере и злоумышленнику достанется лишь фарш из многих гигабайт данных, которые он может расшифровывать в течение нескольких лет.
Существуют готовые решения (например, www.truecrypt.org), которые позволяют сделать так, чтобы при включении сервер требовал пароль, без которого расшифровать данные на дисках невозможно. Поэтому, достаточно либо рубануть питание сервера, либо просто инициировать какой-то сбой, и злоумышленник гарантированно лишится доступа к данным на сервере.
На Омском Форуме, конечно, не требуется супер-безопасности, у нас нет ничего криминального, нет каких-то коммерческих данных, которые могли бы кого-то сильно заинтересовать. Тем не менее эта несложная схема реализована и работает. Все сервера, которые доступны по адресам [внешняя ссылка] и [внешняя ссылка] и другие - это сервера уровня L3, на которых нет никакой информации. От них идёт зашифрованный канал на L2 сервер, на котором к тому же система закрыта на TrueCrypt. А уже оттуда - канал на главный сервер L1. А если мы реализуем зеркальный L1, то система будет не только безопасной от "кавалерийских набегов", но и значительно более устойчивой. -
млин, из-за этих экскекриментов с внешней базой сегодня днём 50\% переходов по страницам были холостые, либо проблема коннекта с базой пишет, либо тупо старая обновляется, я уж молчу про глюки с авторизацией, "бегушкой", стилем и проблемами при переходах в большие многостраничные темы. Кстати, как-бы сделать чтобы юзверь мог настраивать кол-во постов на странице у себя в профиле? Лично для меня крайне полезная функция, думаю для других пользователей тоже :)