Лучший способ разрешить ТОЛЬКО доступ MySQL к серверу?

Вот пример использования:

У меня есть система SaaS, которая была построена (среда разработки) на одном компьютере. Я переместил все в облачную среду под управлением Ubuntu 10.10. Один сервер запускает приложение, другой - базу данных. Основная идея заключается в том, что сервер, на котором работает база данных, должен быть доступен только приложению и машине администратора, у которых оба есть правильные ключи RSA.

Мой вопрос:

Будет ли лучше использовать межсетевой экран для блокировки доступа ко ВСЕМ портам, кроме MySQL, или пропустить межсетевой экран / iptables и просто полностью отключить все другие службы / порты? Кроме того, я должен запустить MySQL на нестандартном порту? Эта база данных будет содержать довольно конфиденциальную информацию, и я хочу убедиться, что я делаю все возможное, чтобы должным образом защитить ее.

Заранее спасибо. Я читал здесь некоторое время, но это первый вопрос, который я задал. Я постараюсь также ответить на некоторые =)

4 ответа

Решение

В идеале, для максимальной безопасности, вам нужно несколько слоев.

Это включает в себя такие вещи, как брандмауэр, блокирующий любой доступ к сетевым портам ( shorewall довольно легко настроить), а также использование tcpwrappers ( hosts.allow / hosts.deny) для ограничения доступа к различным демонам.

Если ваш сервер базы данных получает соединения только от данного сервера (со статическим IP-адресом), то этот IP-адрес также можно использовать в сочетании со стандартными настройками брандмауэра, методами аутентификации tcwrapper и mysql, чтобы дополнительно ограничить доступ только к этому одному серверу.

Какой-то безопасный туннель между серверами был бы идеальным, иначе блокировал бы весь доступ к серверу БД.

За исключением этого, я думаю, что это хорошая идея - использовать брандмауэр для фильтрации всего нежелательного и нежелательного, даже если это кажется избыточным (например, есть ли текущий демон, прослушивающий порт X или нет). Одна "хорошая" вещь в фильтрации всего (через DROP в netfilter) состоит в том, что она не делает простое сканирование TCP-порта быстрым и легким.

Я также не думаю, что это плохая идея изменить порт по умолчанию для БД, если он должен быть открыт для Интернета. Только никогда не думайте об этом, в одиночку, как "мера безопасности".

Эй, попробуйте это с /etc/hosts.allowed и /etc/hosts.deny

Добавьте ALL: ALL к хостам, но ваш IP и mysqld к hosts.allowed запрещены. Читайте больше на:

http://linux.about.com/od/commands/l/blcmdl5_hostsal.htm

Это самый простой способ.

Ваш конфиг будет выглядеть так:

/etc/hosts.allow ALL: (Your-Connecting-IP) и /etc/hosts.deny ALL: ALL

добавление localhost к разрешенному может быть хорошей идеей.

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

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

Вам также следует проверить вопрос " Укрепление сервера MySql" на security.se.

Другие вопросы по тегам