Knowledge Base
MinIO Console открыта публично (порт 9001)
MinIO Console открыта публично
Категория: Server Hardening · Риск: high
MinIO Console открыта публично
Угроза
MinIO — S3-совместимое объектное хранилище. Публичная Console (порт 9001) или API (порт 9000) позволяет просматривать и скачивать содержимое bucket'ов.
При дефолтных или слабых учётных данных — **полная утечка всех хранимых объектов**: резервные копии БД, пользовательские файлы, медиа-контент, конфиги.
API-порт 9000 (S3 API)
Публичный порт 9000 с дефолтным `MINIO_ROOT_USER/MINIO_ROOT_PASSWORD` даёт:
# AWS CLI с MinIO credentials
aws s3 ls --endpoint-url http://<IP>:9000 s3://
aws s3 cp s3://backups/db.sql . --endpoint-url http://<IP>:9000
Исправление
1. Закрыть оба порта файрволом
ufw deny 9000
ufw deny 9001
ufw allow from 127.0.0.1 to any port 9000
ufw allow from 127.0.0.1 to any port 9001
ufw reload
2. Docker Compose — привязать к localhost
services:
minio:
image: minio/minio
command: server /data --console-address ":9001"
ports:
- "127.0.0.1:9000:9000" # Только локально
- "127.0.0.1:9001:9001" # Console только локально
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: StrongPassword123!
3. Сменить дефолтные credentials
# В .env или docker-compose.yml:
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=<минимум 16 символов, upper+lower+digit+special>
4. Nginx reverse proxy с TLS (если нужен внешний доступ)
# Только S3 API через HTTPS с подходящим ACL
server {
listen 443 ssl;
server_name minio.example.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
# Дополнительно: ограничить по IP allowlist
}
}
5. Настроить Bucket Policies
# Все bucket'ы должны быть private по умолчанию
mc alias set myminio http://127.0.0.1:9000 admin password
mc anonymous set none myminio/mybucket
Проверка
# Должно вернуть Connection refused
curl -I http://<PUBLIC_IP>:9001/
curl -I http://<PUBLIC_IP>:9000/
# Список bucket'ов без credentials — не должен работать
curl http://<PUBLIC_IP>:9000/
# Ожидаемо: AccessDenied или Connection refused
Связанные статьи
- [Container public ports inventory](/kb/server_hardening/container-public-ports-inventory)
- [Production secrets baseline](/kb/server_hardening/production-secrets-baseline)
- [UFW firewall](/kb/firewall/ufw-basic-server-firewall)