У меня есть экземпляр Ubuntu EC2, работающий на AWS. Я всегда использовал сетевой ACL для управления доступом к порту 22 вместо использования групп безопасности.
Вопрос 1. Для варианта использования одного экземпляра EC2, есть ли плюсы и минусы между использованием NACL против SG для контроля доступа? (Помимо состояния с сохранением состояния и отсутствия различий в документации по безопасности AWS VPC.)
Вопрос 2: Как большая среда справляется с этим? Есть ли лучшая практика? (Я знаю, что в одной крупной компании NACL полностью открыт и контролирует все с помощью SG.)
Первым делом, чтобы попытаться найти ответ, я прочитал документы AWS по безопасности VPC: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html
Я вижу пару методов для контроля доступа в моем случае использования:
Вариант 1. Ограничьте вход NACL для портов 80, 443 и эфемерных портов до 0.0.0.0/0. Добавьте порт 22 доступа на IP-адрес. Запретить весь другой трафик. (Это то, что я всегда делал.) Если бы я хотел экземпляр частной подсети, я бы ограничил частную подсеть через SG внутренним CIDR публичной подсети.
Вариант 2. Откройте NACL для всего мира и используйте SG для контроля доступа к экземпляру EC2.
Вариант 3: быть избыточным и использовать оба.
Когда я перехожу в новое место (кафе) и хочу использовать SSH для своего экземпляра, я захожу в консоль AWS и добавляю новое правило NACL, чтобы разрешить доступ к порту IP-адреса 22. Добавление правила и к NACL, и к SG кажется одинаковым количеством щелчков мышью и вводом.
Что касается фактического создания среды, я использую terraform. Настроить ресурс довольно просто, используя любой из этих вариантов, поэтому я не считаю, что это за или против.
Ресурс NACL:
ingress {
protocol = 6
rule_no = 300
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 80
to_port = 80
}
Ресурс SG:
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
Единственное большое преимущество, которое я вижу для NACL, - если есть несколько Public SG, проще занести в черный список IP-адреса в NACL, если они обрабатываются вручную через консоль.