Побочные эффекты разрешения контейнера прослушивать порт 80
Чтобы упростить управление портами служб между контейнерами Docker, я хотел бы разрешить содержащимся HTTP-службам прослушивать TCP-порт HTTP по умолчанию 80 для IP-адресов их соответствующих контейнеров.
Прослушивание номеров портов ниже 1025 классически ограничено для пользователей со специальными привилегиями, такими как root
, Причина этого, насколько я понимаю, заключается в том, чтобы запретить непривилегированным пользователям в многопользовательских системах действовать в качестве авторитетного сервиса HTTP для всей машины.
В более новых версиях Linux также возможно разрешить это определенным исполняемым файлам, применяя возможности ядра Linux CAP_NET_BIND_SERVICE
, Чтобы это работало в контейнерах Docker, мне также, кажется, нужно применить эту возможность к самому контейнеру Docker, либо через --add-cap
флаг на клиенте Docker или Docker-Compose cap_add
раздел.
Теоретически, причина такого ограничения номера порта в этом случае устарела, потому что сетевое пространство имен ядра Linux позволяет процессам в контейнере связываться только со своими собственными IP-адресами, которые являются исключительными для них.
Мой вопрос сейчас будет, если есть какие-либо серьезные предостережения по поводу этого. Является ли это или это может каким-то образом стать проблемой безопасности, не рассматриваемой мной? Или есть какие-то другие проблемы с этим?
2 ответа
Я вижу ноль проблем в этом.
Хотя можно использовать "cap add" и вызывать дыры в безопасности, разрешение использования порта 80 не является проблемой. Это просто порт TCP/IP, который прослушивает ваше программное обеспечение, и с точки зрения безопасности он ничем не отличается от любого другого случайного номера порта.
На данный момент я бы рекомендовал просто привязать к другим портам. Один всегда перенаправляет их в другой порт при создании контейнера. Возиться с безопасностью и оставить ненужные привилегии в контейнере кажется слишком большой проблемой, чтобы просто привязать ее к определенному порту.