У меня есть сервер Ubuntu 16.04 с приложением, работающим с использованием Docker:
web: &django
restart: always
environment:
- DJANGO_SECRET_KEY=local
image: web
build:
context: .
dockerfile: ./compose/production/web/Dockerfile
command: /gunicorn.sh
volumes:
- /static:/static
- /media:/media
depends_on:
- postgres
- redis
links:
- redis
ports:
- "8083:5000"
env_file: .env
В конфигурации nginx сервера Ubuntu у меня есть:
proxy_pass http://0.0.0.0:8083;
но когда я сканирую сервер, используя Nmap Я вижу этот порт 8083
открыто:
PORT STATE SERVICE
80/tcp open http
443/tcp open https
8083/tcp open us-srv
Даже если я его закрою:
ufw deny 8083
ufw deny 8083/tcp
и снова просканируем с помощью nmap, он кажется открытым. Как я могу закрыть этот порт?
Если вы не хотите, чтобы докер-контейнер открывал порт, тогда не публиковать этот порт в первую очередь.
Просто удалите порт из конфигурации вашего контейнера.
Просто удалите это отображение:
ports:
- "8083:5000"
(Задний план: докер создает правила брандмауэра это на хосте откроет порты, которые вы публикуете, чтобы сделать контейнер доступным для всего мира. Эти правила имеют приоритет над ufw deny
команда. https://docs.docker.com/config/containers/container-networking/)