هاست و زیرساختراهنمای کاربردی

امنیت پورت Docker؛ سرویس داخلی را عمومی منتشر نکنید

پورت‌های منتشرشدهٔ Docker را ببینید، بک‌اند هم‌میزبان را به localhost محدود کنید و دسترسی بیرونی را بیازمایید؛ همراه مثال Compose و نقش فایروال.

خلاصهٔ کاربردی

آنچه باید بدانید

  • نگاشت بدون آدرس می‌تواند همهٔ رابط‌های میزبان را باز کند.
  • loopback باید با مسیر واقعی پراکسی سازگار باشد.
  • پس از بازسازی، موفقیت داخلی و نبود دسترسی بیرونی را بیازمایید.

مسیر اتصال موردنظر را ترسیم کنید

این آموزش میزبان لینوکس Docker با پراکسی معکوس روی همان میزبان را فرض می‌کند. پیش از ویرایش Compose، مسیر مجاز مشتری، پراکسی، برنامه و دیتابیس را بکشید. اگر پراکسی داخل کانتینر دیگر است، شبکهٔ خصوصی مناسب کانتینر را طراحی کنید؛ localhost آن با localhost میزبان یکی نیست. تنظیمات سالم را ذخیره و زمان بازسازی سرویس درگیر را مشخص کنید.

پورت‌های منتشرشده را فهرست کنید

راهنمای انتشار پورت Docker توضیح می‌دهد نگاشت بدون آدرس میزبان معمولاً روی همهٔ رابط‌ها منتشر می‌شود. نگاشت واقعی و پورت‌های شنود را ببینید:

docker ps --format 'table {{.Names}}\t{{.Ports}}'
sudo ss -lntup

سرویس محدود به شبکهٔ کانتینر را از پورت نگاشت‌شده به میزبان جدا کنید. وضعیت IPv4 و IPv6 را بنویسید. نصب قدیمی Engine را با محدودیت‌های مستند، از جمله رفتار انتشار localhost در نسخه‌های قدیمی‌تر از 28.0.0، مقایسه کنید.

بک‌اند هم‌میزبان را آگاهانه محدود کنید

در تعریف سرویس فعلی، نمونهٔ زیر آدرس انتشار را به loopback در IPv4 محدود می‌کند:

ports:
  - "127.0.0.1:8080:80"

این فقط قطعهٔ تنظیم است، نه فایل کامل Compose. تصویر، volume، متغیرها و شبکهٔ برنامه را حفظ کنید. پراکسی همان میزبان باید به بک‌اند تازه اشاره کند. دیتابیسی که فقط در شبکهٔ داخلی کانتینر استفاده می‌شود معمولاً به پورت منتشرشدهٔ میزبان نیاز ندارد؛ پیش از حذف نگاشت، مصرف‌کنندگان را بررسی کنید.

هر دو سمت مرز را آزمایش کنید

docker compose config --quiet

پس از تأیید ساختار، سرویس موردنظر را در زمان توافق‌شده بازسازی کنید؛ تغییر نگاشت پورت صرفاً بارگذاری مجدد برنامه نیست. ارتباط پراکسی و برنامه را بررسی کنید و از دستگاه بیرونی مستقل ببینید پورت بک‌اند در دسترس نباشد. سایت عمومی را هم عادی بیازمایید. Docker قواعد فایروال خود را می‌سازد؛ سیاست UFW به‌تنهایی مدرک جداسازی کانتینر نیست.

مرز و روش برگشت را ثبت کنید

اگر پراکسی خراب شد، نگاشت ذخیره‌شده را برگردانید و هنگام بررسی، همان سرویس را بازسازی کنید. در تغییر شبکه، پشتیبان دیتابیس و volume ماندگار را دست‌نخورده نگه دارید. Docker بدون root کنترل دیگری برای کار مناسب است و جای تعیین دقیق دسترسی شبکه را نمی‌گیرد. راهنمای فایروال میزبان و حفاظت کلیدها استقرار را تکمیل می‌کنند.

منابع و مطالعهٔ بیشتر

گزارش این مطلب بر پایهٔ منابع اصلی زیر است. توصیه‌های اجرایی، راهنمای عمومی کیاوا هستند و باید با شرایط پروژه تطبیق داده شوند.

  1. Docker: published ports and localhost binding
  2. Docker: firewall integration
  3. Docker: rootless mode
از مطالعه تا اجرا

برای پروژهٔ خودت تصمیم بگیر.

نیاز وب‌سایت، سرور یا تیم فناوری‌تان را با کیاوا مطرح کنید.

گفتگو با کیاوا