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

Как заблокировать интернет-трафик к MySQL в Ubuntu 18.04

Я установил два KVM-сервера с локальной службой хостинга. Они предоставляют мне один общедоступный IP-адрес на каждый сервер. На одном из них я установил mysql-server 8. Прежде чем описывать проблему, вот результат, на который я надеюсь: 1) Второй сервер должен иметь возможность подключаться к MySQL на первом сервере 2) Я не смогу подключиться с моего ноутбука, которого нет на том же сеть Т.е. Я только хочу, чтобы порт (3306) был открыт для локальной сети.

Я еще не установил адрес привязки MySQL и не создал пользователей в MySQL. Но я думаю, что сначала мне нужно настроить брандмауэр, как указано ниже.

В настоящее время, когда я бегу

mysql -h -u корень -p

Я получаю тот же результат на своем ноутбуке и на втором сервере:

ОШИБКА 1130: Хосту не разрешено подключиться ...

Это ожидается на втором сервере (потому что я не добавлял пользовательские разрешения в MySQL), но с моего ноутбука я ожидал, что он просто откажется от соединения. Если необходимо, ping также получает ответы от моего ноутбука и второго сервера.

Я думаю, мне нужно использовать ufw, чтобы заблокировать соединения из Интернета. Как мне это сделать, все еще разрешая соединения в локальной сети? Я также могу запустить ifconfig. Помощь признательна, спасибо.

Проверка текущего статуса ufw:

sudo ufw status verbose

По умолчанию UFW настроен на отклонение всех входящих подключений и разрешение всех исходящих подключений. Если по какой-то причине это не так, вы можете использовать эту команду:

sudo ufw default deny incoming

Затем, чтобы разрешить входящие соединения MySQL с определенного IP-адреса или подсети, укажите источник. Подсеть, предоставленная вам вашим поставщиком услуг, будет работать здесь. Например:

sudo ufw allow from 11.22.33.0/24 to any port 3306

Только для одного IP-адреса:

sudo ufw allow from 11.22.33.44 to any port 3306

В MySQL вы можете использовать GRANTs чтобы контролировать часть или все, о чем вы просите.

Источник может быть

  • localhost - относится к сокетному соединению на том же сервере
  • host.name - какое-то конкретное имя хоста или подстановочный знак. % опасный
  • 11.22.33.44 - какой-то IP-адрес или подстановочный знак.

См. Документацию для более подробного обсуждения.