Наскільки погано встановити прив'язку MySQL до 0,0.0.0?


35

Я намагаюся дозволити віддаленому серверу отримати доступ до екземпляра MySQL, який наразі ділиться сервером Linux з веб-додатком. Згідно з документацією, єдиним способом цього було б можливо (якщо я не розумію правильно), якщо директива bind-address встановлена ​​на 0,0.0,0 , що призводить до того, що MySQL дозволяє отримати доступ з будь-якого IP, який може створити дійсного користувача.

Отже, два питання:

  1. наскільки це може завдати шкоди безпеці?
  2. чи є кращий підхід до можливості локальної та віддаленої взаємодії з MySQL?

Відповіді:


36

Я думаю, ви трохи не розумієте налаштування прив’язки до адреси . Це локальні адреси, які MySQL прослуховуватиме для з'єднань. За замовчуванням - 0,0.0,0, що є всіма інтерфейсами. Цей параметр не обмежує, які IP-адреси можуть отримати доступ до сервера, якщо ви не вказали 127.0.0.1 лише для localhost.

Якщо вам необхідно обмежити певні користувач з певних IP - адрес, використовувати створення / користувач гранту , як цеCREATE USER 'bobdole'@'192.168.10.221';


+1, але лише зауваження, що адреса прослуховування за замовчуванням змінюється залежно від способу встановлення MySQL.
Джон Гарденєр

Дякую Дугу, я думаю, що за замовчуванням у цьому випадку був мій локальний хост, але це добре знати, що користувачі певної бази даних все ще обмежені IP-адресою.
jonathanatx

@jonathanatx Прив'язка за замовчуванням MySQL (у 5.6 і наскільки я знаю) 0.0.0.0. Хоча, я вважаю, що для багатьох установок найкращим варіантом є лише прив’язка локально. Не відкривайте двері, якщо ви не хочете, щоб хтось проходив крізь неї.
ebyrob

1

а. Це погано. Незважаючи на те, що ви можете обмежити доступ користувача на ip у кожній базі даних, я вважаю, що безпечніше, щоб усі з'єднання надходили локально. На своїх серверах я дозволяю MySQL приймати лише локальні з'єднання, 127.0.0.1, як це конфігурація за замовчуванням. Щоб отримати доступ до бази даних віддалено, все, що вам потрібно зробити, - це створити ssh тунель перед підключенням до бази даних, а потім підключитися локально. Якщо ви кодуєте php, зробити це досить просто. Якщо ви використовуєте настільний додаток, це легко зробити в Linux (шукайте ssh tunnel), у Windows я зазвичай використовую таку програму, як Putty, щоб зробити для мене тунель.


7
Це досить божевільно. Стандартний спосіб зробити це - створити користувачів, до яких можна отримати доступ лише з певних імен хостів або IP-адрес. Змушувати кожен веб-сервер робити тунель SSH до бази даних - це набагато більше роботи, ніж потрібно зробити.
TheLQ

3
Ваш веб-сервер і сервер баз даних не завжди є одним пристроєм. Звичайно, не дозволяйте з'єднанням надходити з Інтернету. Але є безпечні способи архітектурних рішень із доступом до мережі MySQL.
Шейн Медден

1
Для невеликої установки (один дб, один WWW) ви могли б зробити SSH тунелювання. Для реальної настройки ваші vpns та брандмауери захищатимуть вас, тому ви відкриєтесь через 0.0.0.0, щоб дозволити віддалений доступ.
Соня Гамільтон

2
Усі, хто думає, що ідея тунелю SSH божевільна, вважають, що основна частина трафіку MySQL ясна. Якщо вам чомусь доводиться підключатися через ненадійну мережу (тобто Інтернет), розгляньте SSH або зробіть це через VPN. Запустіть Wireshark або якийсь інший нюховий пакет, якщо ви хочете побачити, про що я говорю.
Бред

2
@Brad MySQL підтримує шифрування, тому це невірно.
Marti Markov
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.