Лучший способ разрешить ТОЛЬКО доступ 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.