إذا كنت تستخدم تثبيت Discourse قياسيًا قائمًا على Docker، فإن قواعد جدار الحماية غير المعقد التالية ستحمي أي خدمات غير تابعة لـ Docker تعمل على الخادم الخاص بك:
أي، السماح بـ HTTP (المنفذ 80) و HTTPS (المنفذ 443) و SSH (المنفذ 22)، ولا شيء آخر.
ملاحظة: يقوم Docker بالتلاعب بـ iptables مباشرة ويتجاوز قواعد ufw. هذا يعني أن ufw لا يمكنه حظر أو تقييد الوصول إلى المنافذ المكشوفة بواسطة حاويات Docker (المنافذ 80 و 443 في تثبيت Discourse قياسي). قواعد ufw المذكورة أعلاه ستحمي فقط الخدمات غير التابعة لـ Docker التي تعمل على المضيف الخاص بك.
تحقق من الحالة الحالية لجدار الحماية الخاص بك باستخدام
ufw status verbose
مثال للإخراج:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
80 ALLOW IN Anywhere
443 ALLOW IN Anywhere
22 ALLOW IN Anywhere
80 (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
22 (v6) ALLOW IN Anywhere (v6)
وإذا أردت إيقافه في أي وقت
ufw disable
تثبيت Docker الافتراضي لـ Discourse يعرض فقط المنفذين 80 و 443، لذا فإن جدار حماية المضيف ليس ضروريًا بشكل صارم. ولكن إذا كانت لديك خدمات أخرى قيد التشغيل على المضيف تستمع إلى منافذ إضافية، فإن إضافة جدار حماية يوفر طبقة إضافية من الأمان “للاحتياط” لتلك الخدمات.
الموضوع ليس دقيقًا تمامًا. إذا تم استخدام UFW خارج Docker، كما هو “طبيعي” على VPS، فإنه لا ينطبق بحد ذاته على Discourse. يمكنني تعطيل المنفذ 80 وسيظل مفتوحًا بالكامل لـ Discourse/docker.
بالتأكيد، إنه يحمي كل شيء آخر ولكن إذا لم تكن هناك خدمات أخرى تستمع، فهو غير ضروري.
لا أعرف كيف تعمل UFW أو iptables إذا تم استخدامها بعد enter app أو إذا كان يمكن لجدار الحماية العمل بهذه الطريقة على الإطلاق.
أود بالتأكيد أن أسمع هذه القصة، ربما في موضوع منفصل
على سبيل المثال، المناقشات حول العلاقة بين Docker و ufw / جدران الحماية قديمة قدم Docker نفسه، إليك مناقشة ذات أهمية كبيرة مع الكثير من الأفكار المثيرة للاهتمام
لا أريد إغراق الموضوع بالكثير من الروابط، ولكن إذا كنت مهتمًا بموضوع جدران الحماية، فتبدو هذه القطع مفيدة حقًا للمراجعة، جنبًا إلى جنب مع البحث العام على Google لمزيد من التفاصيل.
بناءً على بعض هذه المشاعر، وعلى الموضوع المفيد للغاية الذي رابطه @Jagster، يبدو أن التكوين الافتراضي لتثبيت Discourse الجاهز مع Docker كافٍ بحد ذاته؟ بعد كل شيء، يبدو جهازي هكذا؛
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5dd4a572cd8e local_discourse/app \"/sbin/boot\" 6 days ago Up 16 hours 0.0.0.0:80-\u003e80/tcp, :::80-\u003e80/tcp, 0.0.0.0:443-\u003e443/tcp, :::443-\u003e443/tcp app
لذلك، ما لم أكن مخطئًا، وما لم تكن هناك منافذ أخرى قيد الاستخدام بواسطة برامج أخرى على الخادم، أعتقد أن حركة المرور الوحيدة التي يجب أن تتصل بها من الداخل ستكون على هذه المنافذ المدرجة 80 و 443