Обзор
Файрвол — это программный механизм для фильтрации входящего и исходящего трафика на основе правил. С его помощью вы можете:
- контролировать трафик между ресурсами сети;
- контролировать соединения ресурсов с интернетом.
Файрвол настраивается на уровне сети.
Правила по умолчанию
По умолчанию действуют системные правила:
- Запрещен исходящий SMTP-трафик. Это правило имеет наивысший приоритет и перекрывает все пользовательские правила. Отменить его действие нельзя.
- Разрешен входящий и исходящий трафик для служебных компонентов и сервисов: DNS, DHCP, NTP и сервиса метаданных.
- Разрешен исходящий трафик за пределы сети.
- Запрещен входящий трафик извне.
Системные правила невозможно удалить или изменить. Чтобы настроить сеть в соответствии с собственными требованиями, создайте пользовательские правила.
Структура правила
Правило файрвола содержит следующие параметры:
- направление трафика, для которого применяется правило:
Ingress— входящий,Egress— исходящий; - действие, которое нужно выполнить в рамках правила:
ALLOW— разрешить,DENY— запретить; - источник трафика — диапазон IP-адресов источника трафика (в CIDR-нотации);
- назначение трафика — диапазон IP-адресов назначения (в CIDR-нотации);
- протокол и порт, для которых будет применяться правило.
Правила можно добавлять через веб-консоль, MWS CLI или через API.
Приоритет правила
Приоритет — это целое число в диапазоне от 1 до 65535, определяющее порядок обработки правил. Чем меньше число, тем выше приоритет.
Для системных правил зарезервированы диапазоны значений 0 до 999 и от 64535 до 65535.
Пользовательские правила могут иметь приоритет от 1000 до 64534. Рекомендуется выставлять для них приоритет кратным 1000. Это даст запас значений, которые помогут избежать перенумерации приоритетов при добавлении новых правил.
Правила применяются по следующим принципам:
Из двух правил с одинаковыми параметрами, но разным приоритетом, всегда применяется то, у которого приоритет выше.
Из двух правил, отличающихся только действием (в одном —
DENY, в другом —ALLOW), всегда применяется запрещающее правило (с действиемDENY).
Примеры правил
Пример 1: разрешить входящие подключения по SSH
{
"metadata":{
"name":"<allow-ssh>",
"displayName":"Разрешить подключение по SSH"
},
"spec":{
"priority":1000,
"direction":"INGRESS",
"action":"ALLOW",
"source":{
"spec":{
"cidrs":[
"0.0.0.0/0",
]
}
},
"destination":{
"spec":{
"cidrs":[
"192.168.0.4/32"
]
}
},
"protoPorts":[
"TCP:22"
],
"active":true,
"network":"my-network"
}
}Пример 2: разрешить подключения к БД MySQL только для указанного диапазона внутренних IP-адресов
{
"metadata": {
"name": "allow-mysql-internal",
"displayName": "Разрешить MySQL из внутренней сети"
},
"spec": {
"priority": 1000,
"direction": "INGRESS",
"action": "ALLOW",
"source": {
"spec": {
"cidrs": [
"10.0.1.0/24"
]
}
},
"destination": {
"spec": {
"cidrs": [
"10.0.2.5/32"
]
}
},
"protoPorts": [
"TCP:3306"
],
"active": true,
"network": "my-network"
}
}Пример 3: разрешить запросы к веб-серверу с любых адресов в интернете
{
"metadata": {
"name": "allow-web-external",
"displayName": "Разрешить внешний доступ к веб-серверу"
},
"spec": {
"priority": 1000,
"direction": "INGRESS",
"action": "ALLOW",
"source": {
"spec": {
"cidrs": [
"0.0.0.0/0"
]
}
},
"destination": {
"spec": {
"cidrs": [
"10.0.1.10/32"
]
}
},
"protoPorts": [
"TCP:80",
"TCP:443"
],
"active": true,
"network": "my-network"
}
}