Пример настройки групп безопасности для облачных серверов в одной подсети
Мы не рекомендуем использовать группы безопасности в существующих сетях, это может привести к сбоям в работе балансировщика нагрузки и нарушению репликации облачных баз данных. Чтобы избежать сбоев и не потерять данные, создайте новую приватную сеть или публичную подсеть и включите в ней фильтрацию трафика (port security).
Цель настройки
Настроить группы безопасности для двух облачных серверов, чтобы ограничить доступ серверов друг к другу и доступ к серверам из интернета.
Что нужно для настройки
В примере для настройки мы использовали два облачных сервера, которые находятся в одном пуле:
- на одном сервере развернут веб-сервер, сервер подключен к интернету через публичный IP-адрес;
- на другом сервере развернута база данных MySQL, которая принимает запросы от веб-сервера на стандартный порт 3306.
Серверы добавлены в одну приватную подсеть. В приватной сети и на портах серверов в этой сети включена фильтрация трафика (port security).
Результат настройки
Созданы две группы безопасности и назначены на порты серверов:
- для веб-сервера — группа разрешает входящий HTTP- и HTTPS-трафик из интернета;
- для сервера с базой данных — группа разрешает входящий трафик от веб-сервера на стандартный порт базы данных.
Весь исходящий трафик от серверов разрешен.
Шаги настройки
Панель управления
OpenStack CLI
Terraform
- Создайте группу безопасности для веб-сервера.
- Создайте группу безопасности для сервера с базой данных.
1. Создать группу безопасности для веб-сервера
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
-
Перейдите в раздел Группы безопасности.
-
Нажмите Создать группу безопасности.
-
Выберите пул, в котором находится веб-сервер.
-
Создайте правило, которое разрешает входящий HTTP-трафик для веб-сервера:
5.1. Нажми те Добавить правило входящего трафика.
5.2. Выберите протокол — TCP.
5.3. Выберите источник трафика (Source) — CIDR и введите IP-адрес подсети по умолчанию
0.0.0.0/0
.5.4. Введите порт (Dst. port), на который разрешено принимать трафик —
80
.5.5. Опционально: введите комментарий для правила.
5.6. Нажмите Добавить.
-
Создайте правило, которое разрешает HTTPS-трафик для веб-сервера:
6.1. Нажмите Добавить правило входящего трафика.
6.2. Выберите протокол — TCP.
6.3. Выберите источник трафика (Source) — CIDR и введите IP-адрес подсети по умолчанию
0.0.0.0/0
.6.4. Введите порт (Dst. port), на который разрешено принимать трафик, в примере —
443
.6.5. Опционально: введите комментарий для правила.
6.6. Нажмите Добавить.
-
В блоке Порты отметьте порт веб-сервера, на которые будет назначена группа безопасности. После создания группы на порте прервутся все активные сессии, которые не соответствуют правилам группы.
-
Введите имя группы или оставьте имя, созданное автоматически.
-
Опционально: введите комментарий для группы.
-
Нажмите Создать группу безопасности.
2. Создать группу безопасности для сервера с базой данных
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
-
Перейдите в раздел Группы безопасности.
-
Нажмите Создать группу безопасности.
-
Выберите пул, в котором находится сервер с базой данных.
-
Создайте правило, которое разрешает входящий трафик из группы веб-сервера:
5.1. Нажмите Добавить правило входящего трафика.
5.2. Выберите протокол — TCP.
5.3. Выберите источник трафика (Source) — SG и выберите группу безопасности, которую вы создали для веб-сервера.
5.4. Введите порт (Dst. port), на который разрешено принимать трафик —
3306
.5.5. Опциона льно: введите комментарий для правила.
5.6. Нажмите Добавить.
-
В блоке Порты отметьте порт веб-сервера, на которые будет назначена группа безопасности. После создания группы на порте прервутся все активные сессии, которые не соответствуют правилам группы.
-
Введите имя группы или оставьте имя, созданное автоматически.
-
Опционально: введите комментарий для группы.
-
Нажмите Создать группу безопасности.
-
Создайте группу безопасности для веб-сервера:
openstack security group create \
--description "<description_1>" \
<security_group_name_1>Укажите:
<description_1>
— описание группы безопасности, напримерAllow internet traffic for web server
;<security_group_name_1>
— имя группы безопасности, напримерweb
.
Группа создастся с двумя правилами, которые разрешают весь исходящий трафик.
-
Создайте правило, которое разрешает входящий HTTP-трафик для веб-сервера:
openstack security group rule create \
--protocol tcp --dst-port 80 \
--remote-ip 0.0.0.0/0 \
<security_group_1>Укажите
<security_group_1>
— ID или имя группы безопасности, которую создали для веб-сервера на шаге 2, можно посмотреть с помощью командыopenstack security group list
. -
Создайте правило, которое разрешает HTTPS-трафик для веб-сервера:
openstack security group rule create \
--protocol tcp --dst-port 443 \
--remote-ip 0.0.0.0/0 \
<security_group_1>Укажите
<security_group_1>
— ID или имя группы безопасности, которую создали для веб-сервера на шаге 2, можно посмотреть с помощью командыopenstack security group list
. -
Создайте группу безопасности для сервера с базой данных:
openstack security group create \
--description "<description_2>" \
<security_group_name_2>Укажите:
<description_2>
— описание группы безопасности, напримерAllow traffic from web server group
;<security_group_name_2>
— имя группы безопасности, напримерdatabase
.
Группа создастся с двумя правилами, которые разрешают весь исходящий трафик.
-
Создайте правило, которое разрешает входящий трафик из группы веб-сервера:
openstack security group rule create \
--protocol <protocol> --dst-port <port> \
--remote-group <security_group_1> \
<security_group_2>Укажите:
<protocol>
— протокол, в примере —tcp
;<port>
— порт на сервере с базой данных, на который разрешено принимать трафик, в примере —3306
;<security_group_1>
— ID или имя группы безопасности, которую вы создали для веб-сервера на шаге 2, можно посмотреть с помощью командыopenstack security group list
;<security_group_2>
— ID или имя группы безопасности, которую вы создали для сервера с базой данных на шаге 5.
-
На порт веб-сервера назначьте группу безопасности, которую вы создали на шаге 2:
openstack port set \
--security-group <security_group> \
--enable-port-security \
<port_1>Укажите:
<security_group>
— ID или имя группы безопасности, которую создали на шаге 2, можно посмотреть с помощью командыopenstack security group list
;<port_1>
— ID или имя порта веб-сервера из приватной подсети, можно посмотреть с помощью командыopenstack port list
.
-
На порт сервера с базой данных назначьте группу безопасности, которую вы создали на шаге 5:
openstack port set \
--security-group <security_group> \
--enable-port-security \
<port_2>Укажите:
<security_group>
— ID или имя группы безопасности, которую вы создали на шаге 5, можно посмотреть с помощью командыopenstack security group list
;<port_2>
— ID или имя порта сервера с базой данных из приватной подсети, можно посмотреть с помощью командыopenstack port list
.
-
Опционально: проверьте созданные группы:
openstack security group list
-
Опционально: проверьте список правил в группе:
openstack security group rule list <security_group>
Укажите
<security_group>
— ID или имя группы, правила которой вы хотите посмотреть, можно посмотреть с помощью командыopenstack security group list
.
Используйте инструкцию Создать группу безопасности и назначить ее на порт сервера в документации Terraform.