Назад | Перейти на главную страницу

Какая безопасность достигается за счет отделения базы данных от веб-сервера (двухуровневая веб-архитектура)?

У меня есть конфиденциальные данные, хранящиеся в базе данных mysql, которая обслуживается веб-сервером, работающим в том же физическом ящике. Если я разделю два сервера (и даже поставлю между ними брандмауэр), как именно я усложнил доступ к базе данных mysql, если веб-сервер скомпрометирован? Веб-приложение хранит строки подключения в текстовом файле конфигурации. Все, что нужно сделать хакеру, - это подключиться к серверу базы данных, используя эти учетные данные, и сервер БД не может узнать, что это не авторизованный клиент.

Это ряд аспектов безопасности, важной концепцией является предотвращение и обнаружение.

Брандмауэр, очевидно, является профилактическим, однако у вас также должны быть системы обнаружения. С обнаружением на месте любая система, которая замедляет работу вашего хакера, становится для него / нее цейтнотом. Представьте себе две группы запертых дверей в доме, и как это может отпугнуть грабителя, который просто подумает: «Я пойду куда попроще».

Практически вы также можете гарантировать, что ваши файлы подключения могут быть прочитаны только соответствующей учетной записью, что не обязательно будет у злоумышленника, если он получит какой-то доступ к устройству.

Также имейте в виду, что это может быть ваш брандмауэр периметра, который скомпрометирован, и в этот момент только с одним уровнем злоумышленник сможет напрямую запросить вашу базу данных. С 2 уровнями они должны побить другой брандмауэр.

Есть еще один метод атаки, от которого защищает разделение. Если злоумышленнику посчастливится получить доступ к оболочке веб-сервера, он сможет захватить сами файлы базы данных для автономного анализа или использовать любое количество других методов захвата данных. Имея базу данных на отдельном сервере, они ограничены тем, что они могут запрашивать, с помощью любых токенов аутентификации, которые они могут найти, что может быть недостаточно для получения хороших вещей.

Это нечто большее, чем просто разделение уровней на разные машины. Вам также необходимо ограничить возможности веб-приложения с вашей базой данных, подключившись к ней с минимальными правами. Если вы подключитесь, скажем, как владелец базы данных, то злоумышленник, который найдет способ запустить произвольный код в процессе вашего веб-сервера, сможет делать все, что вы можете делать с этой базой данных.

Поэтому важно подключаться к этой удаленной базе данных с минимальными привилегиями. Если вы это сделаете, то получите некоторую пользу. Конечно, если вы не последуете совету Марка и не реализуете какую-либо форму обнаружения, вы не получите почти такой же пользы. Если злоумышленник закрепится на вашем веб-сервере, он начнет атаковать ваш сервер базы данных оттуда, и, если вы не знаете, что это происходит, он может в конечном итоге найти путь внутрь. Разделение замедляет атаку, поэтому у вас есть время чтобы заметить и отреагировать (например, исправить проблему на веб-сервере / приложении, которое изначально допустило использование эксплойта).