لكن أوامر iptables معقدة ، ويجد العديد من المستخدمين صعوبة في تذكر جميع الخيارات والحالات التي ينبغي استخدامها فيها. لذلك ، ينشئ مطورو التوزيع إضافات خاصة بهم عبر iptables ، مما يساعد على تبسيط إدارة جدار الحماية. يحتوي CentOS على وظيفة إضافية لإدارة iptables تسمى Firewalld.
توجد عدة اختلافات مهمة في جدار الحماية عن iptables. هنا ، يتم تنفيذ التحكم في الوصول إلى الشبكة على مستوى المناطق والخدمات ، وليس على السلاسل والقواعد. وأيضًا يتم تحديث القواعد ديناميكيًا دون مقاطعة الجلسات الجارية. ستوجهك هذه المقالة خلال إعداد جدار حماية CentOS 7 باستخدام Firewalld كمثال.
كما قلت أعلاه ، لا يعمل جدار الحماية مع سلاسل القواعد ، ولكن مع المناطق. يمكن تخصيص منطقة محددة لكل واجهة شبكة. المنطقة هي مجموعة من القواعد والقيود والأذونات التي تنطبق على واجهة الشبكة هذه. يمكن تحديد منطقة واحدة فقط لكل واجهة. أنشأ المطورون عدة مناطق محددة مسبقًا:
وبالتالي ، لتمكين خدمة أو تعطيلها ، ما عليك سوى إضافتها أو إزالتها من المنطقة الحالية أو تغيير منطقة الواجهة إلى المنطقة المسموح بها. إنه مشابه لسياسة الحزمة الافتراضية في iptables. تحتوي المنطقة الموثوقة على سياسة ACCEPT وتسمح لجميع الاتصالات ، ولدى منطقة الحظر سياسة DENY التي ترفض جميع الاتصالات ، ويمكن اعتبار جميع المناطق الأخرى ورثة لمنطقة الحظر ، بالإضافة إلى أن لديهم بالفعل قواعد محددة مسبقًا للسماح باتصالات الشبكة لبعض الخدمات .
يحتوي جدار الحماية أيضًا على نوعين من التكوين:
الآن بعد أن عرفت كل ما عليك القيام به ، دعنا ننتقل إلى الأداة المساعدة firewalld-cmd.
يمكنك إدارة إعدادات جدار الحماية باستخدام الأداة المساعدة لوحدة التحكم firewall-cmd والواجهة الرسومية. يتم استخدام CentOS بشكل شائع على الخوادم ، لذا سيتعين عليك العمل في محطة طرفية. دعنا نلقي نظرة على صيغة الأداة:
خيارات جدار الحماية- cmd
تُستخدم الصيغة التالية لإدارة المناطق:
جدار الحماية - cmd - التكوين - المنطقة = خيارات المنطقة
كتكوين ، تحتاج إلى تحديد الخيار الدائم لحفظ التغييرات بعد إعادة التشغيل أو عدم تحديد أي شيء ، وستكون التغييرات صالحة فقط حتى إعادة التشغيل. استخدم اسم المنطقة المرغوبة كمنطقة. دعنا نلقي نظرة على خيارات الأداة المساعدة:
هذه ليست كل خيارات الأداة المساعدة ، لكنها ستكون كافية لهذه المقالة.
تتمثل الخطوة الأولى في إلقاء نظرة على حالة جدار الحماية. للقيام بذلك ، قم بتشغيل:
sudo systemctl حالة جدار الحماية
إذا تم تعطيل خدمة جدار الحماية ، فأنت بحاجة إلى تمكينها:
بدء جدار الحماية sudo systemctl
sudo systemctl تمكين جدار الحماية
أنت الآن بحاجة إلى معرفة ما إذا كان جدار الحماية يعمل باستخدام الأمر firewall-cmd:
sudo firewall-cmd --state
إذا كان البرنامج يعمل وكان كل شيء على ما يرام ، فستتلقى الرسالة "قيد التشغيل".
كما فهمت بالفعل ، المناطق هي الأداة الرئيسية للإدارة اتصالات الشبكة... لعرض المنطقة الافتراضية ، قم بتشغيل:
sudo firewall-cmd --get-default-zone
في حالتي ، هذه هي المنطقة العامة. يمكنك تغيير المنطقة الحالية باستخدام خيار ضبط المنطقة الافتراضية:
sudo firewall-cmd --set-default-zone = public
لمعرفة المناطق المستخدمة لجميع واجهات الشبكة ، قم بتشغيل:
sudo firewall-cmd --get-active-المناطق
ستعرض القائمة المناطق والواجهات التي تم تعيينها لها. باستخدام هذا الأمر ، يمكنك عرض التكوين لمنطقة معينة. على سبيل المثال ، بالنسبة للمنطقة العامة:
يمكنك عرض جميع الخدمات المحددة مسبقًا باستخدام الأمر:
sudo firewall-cmd --get-services
سيقوم الأمر بسرد جميع الخدمات المتاحة ، يمكنك إضافة أي منها إلى المنطقة لتمكينها. على سبيل المثال ، لنسمح بالاتصال بـ http:
sudo firewall-cmd --zone = public --add-service = http --permanent
ولإزالة هذه الخدمة ، قم بتشغيل:
sudo firewall-cmd --zone = عام - إزالة الخدمة = http - دائم
في كلتا الحالتين ، استخدمنا الخيار الدائم بحيث يستمر التكوين عبر إعادة التشغيل. بعد التغييرات ، تحتاج إلى تحديث القواعد:
sudo firewall-cmd - إعادة تحميل
بعد ذلك ، إذا نظرت إلى تكوين المنطقة ، فستظهر الخدمة المضافة هناك:
sudo firewall-cmd --zone = public --list-all
إذا لم تكن هناك خدمة للبرنامج الذي تحتاجه ، يمكنك فتح المنفذ يدويًا. للقيام بذلك ، ما عليك سوى إضافة المنفذ المطلوب إلى المنطقة. على سبيل المثال المنفذ 8083:
sudo firewall-cmd --zone = public --add-port = 8083 / tcp - دائم
لإزالة هذا المنفذ من المنطقة ، قم بتشغيل:
sudo firewall-cmd --zone = public - remove-port = 8083 / tcp - دائم
على غرار الخدمات ، لفتح منفذ في جدار الحماية centos 7 ، تحتاج إلى إعادة تشغيل جدار الحماية.
sudo firewall-cmd - إعادة تحميل
يعد تكوين إعادة توجيه المنفذ في جدار الحماية أسهل بكثير من تكوينه في iptables. إذا كنت بحاجة ، على سبيل المثال ، إلى إعادة توجيه حركة المرور من المنفذ 2223 إلى المنفذ 22 ، فما عليك سوى إضافة إعادة توجيه إلى المنطقة:
sudo firewall-cmd --zone = public --add-forward-port = المنفذ = 2223: proto = tcp: toport = 22
هنا ، تتم إعادة التوجيه فقط على الجهاز الحالي. إذا كنت ترغب في إعداد شبكة NAT وإعادة توجيه منفذ إلى جهاز آخر ، فأنت بحاجة إلى تمكين دعم التنكر أولاً:
sudo firewall-cmd --zone = public --add-masquerade
ثم يمكنك إضافة المنفذ:
sudo firewall-cmd --zone = publiс --add-forward-port = المنفذ = 2223: proto = tcp: toport = 22: toaddr = 192.168.56.4
إذا كانت وظائف المناطق غير كافية بالنسبة لك ، فيمكنك استخدام القواعد المتقدمة. الصيغة العامة للقواعد الموسعة هي:
عائلة القاعدة = إجراء تدقيق لقيمة المصدر لقيمة المصدر "العائلة"
فيما يلي معنى المعلمات الرئيسية:
دعنا نلقي نظرة على بعض الأمثلة. نحتاج إلى حظر الوصول إلى الخادم للمستخدم مع IP 135.152.53.5:
sudo firewall-cmd --zone = public --add-rich-rule "عائلة القاعدة = عنوان المصدر" ipv4 "= 135.152.53.5 رفض"
أو نحتاج إلى رفض الوصول إلى المنفذ 22 فقط لنفس المستخدم:
sudo firewall-cmd --zone = public --add-rich-rule "عائلة القاعدة = عنوان المصدر" ipv4 "= 135.152.53.5 منفذ المنفذ = 22 بروتوكول = رفض برنامج التعاون الفني"
يمكنك عرض جميع القواعد المتقدمة باستخدام الأمر:
sudo firewall-cmd - قائمة-غنية-القواعد
في هذه المقالة ، ناقشنا كيفية تنفيذ تكوين جدار الحماية في CentOS 7 وما هي المهام التي يمكن تنفيذها باستخدامه. البرنامج أسهل بكثير في الاستخدام من iptables ، ولكن في رأيي فإن إضافة جدار حماية Ubuntu أسهل في الاستخدام.
مثبتة في نظام التشغيليتم استخدام جدار الحماية لمنع حركة المرور غير المصرح بها من المرور بين شبكات الكمبيوتر. يتم إنشاء قواعد خاصة لجدار الحماية يدويًا أو تلقائيًا ، وهي مسؤولة عن التحكم في الوصول. نظام التشغيل الذي تم تطويره على نواة Linux ، يحتوي CentOS 7 على جدار حماية مدمج ويتم التحكم فيه بواسطة جدار حماية. يتم تمكين FirewallD افتراضيًا ، ونود التحدث عن تكوينه اليوم.
كما ذكرنا أعلاه ، فإن جدار الحماية هو جدار الحماية الافتراضي في CentOS 7. لهذا السبب ستتم مناقشة إعداد جدار حماية باستخدام هذه الأداة كمثال. يمكنك تعيين قواعد التصفية باستخدام نفس iptables ، ولكن يتم ذلك بطريقة مختلفة قليلاً. نوصي بأن تتعرف على تكوين الأداة المساعدة المذكورة بالنقر فوق الارتباط التالي ، وسنبدأ في تحليل جدار الحماية FirewallD.
هناك عدة مناطق - مجموعات من القواعد للتحكم في حركة المرور على أساس الثقة في الشبكات. تم تعيين سياساتهم الخاصة لكل منهم ، والتي تشكل مجموعة منها تكوين جدار الحماية. يتم تعيين واجهة شبكة واحدة أو أكثر لكل منطقة ، مما يسمح لك أيضًا بضبط التصفية. تعتمد القواعد المطبقة بشكل مباشر على الواجهة المستخدمة. على سبيل المثال ، عند الاتصال بشبكة Wi-Fi عامة جدار الحمايةسيزيد من مستوى التحكم ، وفي الشبكة المنزلية سيفتح وصولًا إضافيًا للمشاركين في السلسلة. يحتوي جدار الحماية المدروس على المناطق التالية:
السياسيون أنفسهم مؤقتون ودائمون. عندما تظهر المعلمات أو يتم تحريرها ، يتغير إجراء جدار الحماية على الفور دون الحاجة إلى إعادة التشغيل. إذا تم تطبيق القواعد المؤقتة ، فسيتم إعادة تعيينها بعد إعادة تشغيل جدار الحماية. هذا ما يسمى بالقاعدة الدائمة - سيتم حفظها بشكل دائم عند تطبيق الوسيطة الدائمة.
تحتاج أولاً إلى بدء FirewallD أو التأكد من أنه نشط. فقط برنامج خفي فعال (برنامج قيد التشغيل معرفتي) ستطبق قواعد جدار الحماية. يتم التنشيط حرفياً ببضع نقرات:
إذا احتجت يومًا ما إلى تعطيل جدار الحماية بشكل مؤقت أو دائم ، فننصحك باستخدام الإرشادات الواردة في مقالتنا الأخرى على الرابط التالي.
حتى جدار الحماية الذي يعمل بشكل طبيعي له قواعده الخاصة ومناطقه المتاحة. قبل البدء في تحرير السياسات ، نوصي بالتعرف على التكوين الحالي. يتم ذلك باستخدام أوامر بسيطة:
بعد تحديد المعلمات الضرورية ، يمكنك المتابعة لتغييرها وإضافتها. دعنا نلقي نظرة فاحصة على بعض التكوينات الأكثر شيوعًا.
كما تعلم من المعلومات الواردة أعلاه ، كل واجهة لها منطقتها الافتراضية. سيبقى فيه حتى يتم تغيير الإعدادات بواسطة المستخدم أو برمجيًا. يمكن النقل اليدوي للواجهة إلى المنطقة لجلسة واحدة ، ويتم تنفيذه عن طريق تنشيط الأمر sudo firewall-cmd --zone = home --change-interface = eth0. نتيجة "النجاح"يشير إلى أن النقل كان ناجحًا. تذكر أنه تتم إعادة تعيين هذه الإعدادات فور إعادة تشغيل جدار الحماية.
مع مثل هذا التغيير في المعلمات ، يجب أن يؤخذ في الاعتبار أنه يمكن إعادة ضبط عمل الخدمات. بعضها لا يدعم العمل في مناطق معينة ، على سبيل المثال ، SSH متاح في "الصفحة الرئيسية"ولكن في العادة أو الخاصة ، سترفض الخدمة العمل. يمكنك التحقق من أن الواجهة قد تم ربطها بنجاح بالفرع الجديد عن طريق إدخال firewall-cmd --get-active-zone.
إذا كنت ترغب في إعادة تعيين الإعدادات التي أجريتها مسبقًا ، فما عليك سوى إعادة تشغيل جدار الحماية: sudo systemctl أعد تشغيل جدار الحماية.
في بعض الأحيان ، ليس من الملائم دائمًا تغيير منطقة الواجهة لجلسة واحدة فقط. في هذه الحالة ، ستحتاج إلى تحرير ملف التكوين بحيث يتم إدخال جميع الإعدادات بشكل دائم. لهذا نوصي باستخدام محرر نصوص نانوالذي تم تثبيته من المستودع الرسمي sudo yum install nano. ثم يبقى القيام بالإجراءات التالية:
الآن ستكون منطقة الواجهة كما حددتها ، حتى التحرير التالي لملف التكوين. لتفعيل الإعدادات المحدثة ، قم بتشغيل sudo systemctl ، وأعد تشغيل network.service و sudo systemctl ، وأعد تشغيل جدار الحماية firewalld.service.
أعلاه ، لقد أظهرنا بالفعل أمرًا يسمح لك بمعرفة المنطقة الافتراضية. يمكن أيضًا تغييره عن طريق تعيين معلمة من اختيارك. للقيام بذلك ، في وحدة التحكم ، ما عليك سوى كتابة sudo firewall-cmd --set-default-zone = name ، حيث اسم- اسم المنطقة المطلوبة.
سيشير النقش إلى نجاح الأمر "النجاح"على سطر منفصل. بعد ذلك ، سيتم ربط جميع الواجهات الحالية بالمنطقة المحددة ، إذا لم يتم تحديد أخرى في ملفات التكوين.
في بداية المقال ، تحدثنا عن عمل كل منطقة. سيسمح لك تعريف الخدمات والمرافق والبرامج في هذه الفروع بالتقدم لكل منها بمعلمات فردية لطلبات كل مستخدم. للبدء ، نوصيك بالتعرف على القائمة الكاملة للخدمات المتاحة حاليًا: جدار الحماية- cmd --get-services.
سيتم عرض النتيجة مباشرة في وحدة التحكم. يتم فصل كل خادم بمسافة ، وفي القائمة يمكنك بسهولة العثور على الأداة التي تهتم بها. في حالة عدم توفر الخدمة المطلوبة ، يجب تثبيتها بشكل إضافي. اقرأ عن قواعد التثبيت في وثائق البرنامج الرسمية.
يعرض الأمر أعلاه أسماء الخدمات فقط. يتم الحصول على معلومات مفصلة عن كل منها من خلال ملف فردي يقع تحت المسار / usr / lib / firewalld / services. هذه المستندات بتنسيق XML ، المسار ، على سبيل المثال ، إلى SSH يبدو كالتالي: /usr/lib/firewalld/services/ssh.xml ، ويحتوي المستند على المحتوى التالي:
SSH
Secure Shell (SSH) هو بروتوكول لتسجيل الدخول وتنفيذ الأوامر على الأجهزة البعيدة. يوفر اتصالات آمنة ومشفرة. إذا كنت تخطط للوصول إلى جهازك عن بُعد عبر SSH عبر واجهة بجدار ناري ، فقم بتمكين هذا الخيار. أنت بحاجة إلى تثبيت حزمة opensh-server لكي يكون هذا الخيار مفيدًا.
يتم تنشيط دعم الخدمة يدويًا في منطقة معينة. الخامس "صالة"الأمر sudo firewall-cmd --zone = public --add-service = http ، أين - المنطقة = عام- منطقة للتفعيل ، و - خدمة إضافة = http- اسم الخدمة. يرجى ملاحظة أن مثل هذا التغيير لن يكون صالحًا إلا خلال جلسة واحدة.
تتم الإضافة الدائمة عبر sudo firewall-cmd --zone = public --permanent --add-service = http والنتيجة "النجاح"يشير إلى اكتمال العملية بنجاح.
يمكنك عرض القائمة الكاملة للقواعد الدائمة لمنطقة معينة من خلال عرض القائمة على سطر منفصل في وحدة التحكم: sudo firewall-cmd --zone = public --permanent --list-services.
بشكل افتراضي ، تشير قواعد جدار الحماية إلى الخدمات الأكثر شيوعًا وأمانًا على النحو المسموح به ، لكنها تحظر بعض التطبيقات القياسية أو تطبيقات الجهات الخارجية. في هذه الحالة ، سيحتاج المستخدم إلى تغيير الإعدادات يدويًا لحل مشكلة الوصول. يمكن القيام بذلك بطريقتين مختلفتين.
ميناء الشحن
كما تعلم ، تستخدم جميع خدمات الشبكة منفذًا محددًا. يمكن اكتشافه بسهولة بواسطة جدار الحماية ، ويمكن إجراء أقفال عليه. لتجنب مثل هذه الإجراءات من جانب جدار الحماية ، تحتاج إلى فتح المنفذ المطلوب باستخدام الأمر sudo firewall-cmd --zone = public --add-port = 0000 / tcp ، حيث - المنطقة = عام- منطقة الميناء، - منفذ إضافة = 0000 / tcp- رقم المنفذ والبروتوكول. سيعرض جدار الحماية - cmd --list-port قائمة بالمنافذ المفتوحة.
إذا كنت بحاجة إلى فتح المنافذ الموجودة في النطاق ، فاستخدم سطر sudo firewall-cmd --zone = public --add-port = 0000-9999 / udp ، حيث - منفذ إضافة = 0000-9999 / udp- مجموعة من المنافذ والبروتوكول الخاص بها.
ستسمح لك الأوامر المذكورة أعلاه فقط باختبار تطبيق هذه المعلمات. إذا كان ناجحًا ، يجب عليك إضافة نفس المنافذ إلى الإعدادات الدائمة ، ويتم ذلك عن طريق إدخال sudo firewall-cmd --zone = public --permanent --add-port = 0000 / tcp أو sudo firewall-cmd - المنطقة = عام - دائم - منفذ إضافة = 0000-9999 / udp. يتم عرض قائمة المنافذ الدائمة المفتوحة على النحو التالي: sudo firewall-cmd --zone = public --permanent --list-port.
كما ترى ، فإن إضافة المنافذ أمر بسيط ، لكن الإجراء يصبح أكثر تعقيدًا عند استخدام عدد كبير من التطبيقات. يصبح من الصعب تتبع جميع المنافذ المستخدمة ، ولهذا سيكون من الأصح تحديد خدمة:
عليك فقط اختيار الطريقة الأنسب لحل مشكلة الوصول إلى الخدمة واتباع التعليمات المقدمة. كما ترى ، جميع الإجراءات سهلة بما فيه الكفاية ، ولا ينبغي أن تنشأ أي صعوبات.
أنت تعلم بالفعل أن FirewallD في البداية أنشأ عددًا كبيرًا من المناطق المختلفة بقواعد معينة. ومع ذلك ، هناك حالات عندما مدير النظامتريد إنشاء منطقة مخصصة ، مثل "Publicweb"لخادم ويب مثبت ، أو "PrivateDNS"- لخادم DNS. باستخدام هذين المثالين ، سنقوم بتحليل إضافة الفروع:
في هذه المقالة ، تعلمت كيفية إنشاء مناطق مخصصة وإضافة خدمات إليها. لقد تحدثنا بالفعل عن تعيينها افتراضيًا وتعيين واجهات ، ما عليك سوى تحديد الأسماء الصحيحة. تذكر إعادة تشغيل جدار الحماية بعد إجراء أية تغييرات دائمة.
كما ترى ، يعد جدار الحماية FirewallD أداة ضخمة إلى حد ما تسمح لك بعمل تكوين جدار الحماية الأكثر مرونة. الشيء الوحيد المتبقي هو التأكد من تشغيل الأداة المساعدة مع النظام وأن القواعد المحددة تبدأ في العمل على الفور. افعل ذلك باستخدام الأمر sudo systemctl enable firewalld.
FirewallD هي أداة لإدارة جدار الحماية متوفرة بشكل افتراضي على خوادم CentOS 7. وهي في الأساس عبارة عن غلاف حول IPTables وتأتي مع أداة تكوين جدار حماية رسومية و سطر الأوامرجدار الحماية كمد. باستخدام خدمة IPtables ، يتطلب كل تغيير إزالة القواعد القديمة وإنشاء قواعد جديدة في ملف / etc / sysconfig / iptables"بينما جدار الحماية يطبق الاختلافات فقط.
يستخدم جدار الحماية FirewallD الخدمات والمناطق بدلاً من القواعد والسلاسل في iptables. المناطق التالية متاحة بشكل افتراضي:
للحصول على قائمة بجميع المناطق المتاحة:
# firewall-cmd --get-areas عمل إسقاط داخلي خارجي موثوق للمنزل dmz public block
لعرض قائمة المناطق الافتراضية:
# firewall-cmd --get-default-zone public
لتغيير المنطقة الافتراضية:
خدمات جدار الحماية عبارة عن ملفات تكوين XML تحتوي على معلومات سجل الخدمة لجدار الحماية. للحصول على قائمة بجميع الخدمات المتاحة:
# firewall-cmd --get-services amanda-client amanda-K5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-Registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high -ability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3poxy pop3dpc proxy العميل عاقل smtp smtps snmp snmptrap الحبار ssh التآزر syslog syslog-tls telnet tftp tftp-client tinc tor-socks Transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
إعدادات ملفات XMLمخزنة في الدلائل / usr / lib / firewalld / services /و / etc / firewalld / services /.
كمثال ، إليك كيفية تكوين جدار حماية باستخدام FirewallD إذا كنت تقوم بتشغيل خادم ويب و SSH على المنفذ 7022 وخادم بريد.
أولاً ، سنقوم بإعداد المنطقة الافتراضية للمنطقة المجردة من السلاح.
# firewall-cmd --set-default-zone = dmz # firewall-cmd --get-default-zone dmz
لإضافة قواعد خدمة ثابتة لـ HTTP و HTTPS في DMZ ، قم بتشغيل الأمر التالي:
# firewall-cmd --zone = dmz --add-service = http --permanent # firewall-cmd --zone = dmz --add-service = https --permanent
افتح المنفذ 25 (SMTP) والمنفذ 465 (SMTPS):
جدار الحماية - cmd --zone = dmz --add-service = smtp - جدار الحماية الدائم-cmd --zone = dmz --add-service = smtps - دائم
فتح منافذ IMAP و IMAPS و POP3 و POP3S:
جدار الحماية - cmd --zone = dmz --add-service = imap - جدار الحماية الدائم - cmd --zone = dmz --add-service = الصور - جدار الحماية الدائم - cmd --zone = dmz --add-service = pop3 - جدار الحماية الدائم - cmd --zone = dmz --add-service = pop3s - دائم
منذ أن تم تغيير منفذ SSH إلى 7022 ، سنزيل خدمة SSH (المنفذ 22) ونفتح المنفذ 7022
جدار الحماية - cmd - خدمة إزالة = ssh - جدار حماية دائم - cmd - منفذ إضافة = 7022 / برنامج التعاون الفني - دائم
لتنفيذ التغييرات ، نحتاج إلى إعادة تحميل جدار الحماية:
جدار الحماية- cmd - إعادة تحميل
أخيرًا ، يمكنك سرد القواعد.
يدير البرنامج الخفي لجدار الحماية مجموعات من القواعد باستخدام ما يسمى بالمناطق.
المناطق هي في الأساس مجموعات من القواعد التي تحكم حركة المرور بناءً على مستوى الثقة في شبكة معينة. يتم تعيين المناطق لواجهات الشبكة والتحكم في سلوك جدار الحماية.
يمكن لأجهزة الكمبيوتر التي تتصل غالبًا بشبكات مختلفة (على سبيل المثال ، أجهزة الكمبيوتر المحمولة) استخدام المناطق لتغيير مجموعات القواعد الخاصة بها بناءً على بيئتها. على سبيل المثال ، عند الاتصال بجمهور شبكات WiFiيمكن لجدار الحماية فرض قواعد أكثر صرامة وتخفيف القيود على الشبكة المنزلية.
توجد المناطق التالية في جدار الحماية:
قواعد جدار الحماية دائمة ومؤقتة. إذا ظهرت أي قاعدة أو تغيرت في المجموعة ، يتغير سلوك جدار الحماية الحالي على الفور. ومع ذلك ، بعد إعادة التشغيل ، ستفقد جميع التغييرات إذا لم يتم حفظها.
يمكن لمعظم أوامر جدار الحماية cmd استخدام العلامة --permentent ، والتي ستحفظ القاعدة ثم تستخدمها بشكل دائم.
تحتاج أولاً إلى تمكين البرنامج الخفي. يسمى ملف وحدة systemd firewalld.service. لبدء البرنامج الخفي ، أدخل.
يبدأ sudo systemctl firewalld.service
تأكد من تشغيل الخدمة:
جدار الحماية- cmd - الحالة
ادارة
يتم الآن تشغيل جدار الحماية وفقًا للتكوين الافتراضي.
في الوقت الحالي ، تم تمكين الخدمة ، لكنها لن تبدأ تلقائيًا مع الخادم. لتجنب حظر نفسك عن طريق الخطأ على الخادم الخاص بك ، قم أولاً بإنشاء مجموعة من القواعد ثم قم بتكوين التشغيل التلقائي.
لمعرفة المنطقة المستخدمة افتراضيًا ، أدخل:
جدار الحماية cmd --get-default-zone
عام
في الوقت الحالي ، لم يتلق جدار الحماية أي تعليمات بخصوص المناطق الأخرى ، بالإضافة إلى أنه لا توجد واجهة مرتبطة بمناطق أخرى ، لذا فإن المنطقة العامة الآن هي المنطقة الافتراضية وأيضًا المنطقة النشطة الوحيدة.
للحصول على قائمة بالنقاط الفعالة ، أدخل:
عام
الواجهات: eth0 eth1
هناك نوعان من واجهات الشبكة المرتبطة بالمنطقة العامة: eth0 و eth1. تعمل الواجهات المرتبطة بمنطقة ما وفقًا لقواعد تلك المنطقة.
لمعرفة القواعد التي تستخدمها المنطقة افتراضيًا ، أدخل:
جدار الحماية- cmd - قائمة الكل
عام (افتراضي ، نشط)
الواجهات: eth0 eth1
مصادر:
الخدمات: dhcpv6-client ssh
الموانئ:
حفلة تنكرية: لا
المنافذ الأمامية:
كتل icmp:
قواعد غنية:
والآن أنت تعرف أن:
الآن يجب أن تتعرف على المناطق الأخرى.
للحصول على قائمة بجميع المناطق المتاحة ، أدخل:
جدار الحماية - cmd - مناطق النطاقات
للحصول على الإعدادات الخاصة بمنطقة معينة ، أضف -zone = flag إلى الأمر.
firewall-cmd --zone = home - list-all. جدار الحماية - cmd --zone = home - list-all
الصفحة الرئيسية
واجهات:
مصادر:
الخدمات: dhcpv6-client ipp-client mdns samba-client ssh
الموانئ:
حفلة تنكرية: لا
المنافذ الأمامية:
كتل icmp:
قواعد غنية:
لسرد تعريفات جميع المناطق المتاحة ، أضف خيار قائمة - جميع المناطق. لعرض أكثر ملاءمة ، يمكن إرسال الإخراج إلى جهاز النداء:
جدار الحماية cmd - قائمة جميع المناطق | أقل
في البداية ، تكون جميع واجهات الشبكة مرتبطة بالمنطقة الافتراضية.
لنقل واجهة إلى منطقة مختلفة لجلسة واحدة ، استخدم -zone = و —change-interface = options.
على سبيل المثال ، لإحضار eth0 إلى منطقة المنزل ، اكتب:
sudo firewall-cmd --zone = الصفحة الرئيسية - واجهة التغيير = eth0
النجاح
ملحوظة: عند نقل الواجهة إلى منطقة أخرى ، يجب أن تأخذ في الاعتبار أن ذلك قد يؤثر على تشغيل بعض الخدمات. على سبيل المثال ، تدعم المنطقة الرئيسية SSH ، لذلك لن يتم إسقاط الاتصالات من هذه الخدمة. لكن بعض المناطق تسقط جميع الاتصالات ، بما في ذلك SSH ، وبعد ذلك يمكنك بطريق الخطأ منع نفسك من الوصول إلى الخادم الخاص بك.
للتأكد من ارتباط الواجهة بالمنطقة الجديدة ، أدخل:
جدار الحماية cmd - مناطق النشط
الصفحة الرئيسية
الواجهات: eth0
عام
الواجهات: eth1
بعد إعادة تشغيل جدار الحماية ، ستعود الواجهة الارتباط بالمنطقة الافتراضية.
sudo systemctl إعادة تشغيل جدار الحماية
جدار الحماية cmd - مناطق النشط
عام
الواجهات: eth0 eth1
إذا لم يتم تحديد منطقة أخرى في إعدادات الواجهة ، فبعد إعادة تشغيل جدار الحماية ، ستتم إعادة ربط الواجهة بالمنطقة الافتراضية. في CentOS ، يتم تخزين هذه التكوينات في الدليل / etc / sysconfig / network-scripts ، في ملفات بتنسيق ifcfg-interface.
لتحديد منطقة للواجهة ، افتح ملف التكوين لتلك الواجهة ، على سبيل المثال:
أضف المتغير ZONE = إلى نهاية الملف وحدد منطقة أخرى كقيمة ، على سبيل المثال ، home:
. . .
DNS1 = 2001: 4860: 4860 :: 8844
DNS2 = 2001: 4860: 4860 :: 8888
DNS3 = 8.8.8.8
المنطقة = المنزل
أحفظ وأغلق الملف.
لتحديث الإعدادات ، أعد تشغيل خدمة الشبكة وجدار الحماية:
sudo systemctl إعادة تشغيل network.service
sudo systemctl إعادة تشغيل جدار الحماية
بعد إعادة التشغيل ، سوف تلتزم eth0 بالمنطقة الأصلية.
جدار الحماية cmd - مناطق النشط
الصفحة الرئيسية
الواجهات: eth0
عام
الواجهات: eth1
يمكنك أيضًا اختيار منطقة افتراضية مختلفة.
لهذا ، يتم استخدام المعلمة –set-default-zone =. بعد ذلك ، سيتم ربط جميع الواجهات بمنطقة أخرى:
sudo firewall-cmd --set-default-zone = home
الصفحة الرئيسية
الواجهات: eth0 eth1
أسهل طريقة هي إضافة خدمة أو منفذ إلى المنطقة التي يستخدمها جدار الحماية. تصفح الخدمات المتاحة:
جدار الحماية - cmd --get-services
RH-Satellite-6 Amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client pmmp dns بروتوكول نقل الملفات عالي التوفر http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-nfsbt mysqt pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transfer-client vnc-server wbem-https
ملحوظة: يمكن العثور على مزيد من المعلومات حول كل خدمة محددة في ملفات .xml في دليل / usr / lib / firewalld / services. على سبيل المثال ، يتم تخزين المعلومات حول خدمة SSH في /usr/lib/firewalld/services/ssh.xml وتبدو كما يلي:
لتمكين دعم الخدمة في منطقة معينة ، استخدم الخيار –add-service =. يمكنك تحديد المنطقة المستهدفة باستخدام الخيار -zone =. بشكل افتراضي ، ستعمل هذه التغييرات لجلسة واحدة. لحفظ التغييرات واستخدامها بشكل دائم ، قم بإضافة —العلامة الدائمة.
على سبيل المثال ، لبدء خادم ويب لخدمة حركة مرور HTTP ، تحتاج أولاً إلى تمكين دعم حركة المرور هذه في المنطقة العامة لجلسة واحدة:
sudo firewall-cmd --zone = public --add-service = http
إذا كانت الخدمة بحاجة إلى إضافتها إلى المنطقة الافتراضية ، فيمكن حذف العلامة –zone =.
تأكد من نجاح العملية:
firewall-cmd --zone = public - list-services
dhcpv6-client http ssh
اختبر الخدمة وجدار الحماية. إذا كان كل شيء يعمل بشكل صحيح ، فيمكنك تغيير مجموعة القواعد الدائمة وإضافة قاعدة إليها لدعم هذه الخدمة.
sudo firewall-cmd --zone = عام - دائم - إضافة خدمة = http
لعرض قائمة القواعد الثابتة ، أدخل:
sudo firewall-cmd --zone = عام - دائم - قائمة الخدمات
dhcpv6-client http ssh
تدعم المنطقة العامة الآن HTTP والمنفذ 80 بشكل دائم. إذا كان خادم الويب يمكنه خدمة حركة مرور SSL / TLS ، فيمكنك أيضًا إضافة خدمة https (لجلسة واحدة أو في مجموعة من القواعد الثابتة):
sudo firewall-cmd --zone = public --add-service = https
sudo firewall-cmd --zone = عام - دائم - إضافة خدمة = https
يشتمل جدار حماية جدار الحماية على العديد من الخدمات الأكثر شيوعًا افتراضيًا. ومع ذلك ، تتطلب بعض التطبيقات خدمات لا يدعمها جدار الحماية. في هذه الحالة ، يمكنك فعل شيئين.
أسهل طريقة للقيام بذلك هي فتح منفذ تطبيق في المنطقة المطلوبة لجدار الحماية. تحتاج فقط إلى تحديد المنفذ أو نطاق المنفذ والبروتوكول.
على سبيل المثال ، يجب إضافة تطبيق يستخدم المنفذ 5000 و TCP إلى المنطقة العامة. لتمكين دعم التطبيق لكل جلسة ، استخدم المعلمة –add-port = المعلمة وحدد بروتوكول tcp أو بروتوكول udp.
sudo firewall-cmd --zone = عام - إضافة منفذ = 5000 / tcp
تأكد من نجاح العملية:
جدار الحماية - cmd - قائمة المنافذ
5000 / tcp
يمكنك أيضًا تحديد نطاق منفذ تسلسلي عن طريق فصل المنفذ الأول والأخير من النطاق بشرطة. على سبيل المثال ، إذا كان التطبيق الخاص بك يستخدم منافذ UDP 4990-4999 ، لإضافتها إلى المنطقة العامة ، يمكنك إدخال:
sudo firewall-cmd --zone = public - add-port = 4990-4999 / udp
بعد الاختبار ، يمكنك إضافة هذه القواعد إلى إعدادات جدار الحماية الدائم.
sudo firewall-cmd --zone = عام - دائم - منفذ إضافي = 5000 / tcp
sudo firewall-cmd --zone = عام - دائم - منفذ إضافة = 4990-4999 / udp
sudo firewall-cmd --zone = عام - دائم - قائمة المنافذ
النجاح
النجاح
4990-4999 / UDP 5000 / tcp
تعد إضافة المنافذ إلى المناطق أمرًا سهلاً ، ولكن إذا كان لديك الكثير من هذه التطبيقات ، فقد يكون من الصعب تتبع الغرض من منفذ معين. لتجنب هذا الموقف ، يمكنك تحديد الخدمات بدلاً من المنافذ.
الخدمات هي ببساطة مجموعات من الموانئ تحمل اسمًا ووصفًا محددين. تسهل الخدمات إدارة الإعدادات ، لكنها أكثر تعقيدًا من تلقاء نفسها من المنافذ.
أولاً ، تحتاج إلى نسخ البرنامج النصي الموجود من دليل / usr / lib / firewalld / services إلى دليل / etc / firewalld / services (حيث يبحث جدار الحماية عن الإعدادات غير القياسية).
على سبيل المثال ، يمكنك نسخ تعريف خدمة SSH واستخدامه لتعريف مثال الخدمة الشرطية. يجب أن يتطابق اسم البرنامج النصي مع اسم الخدمة وأن يكون بامتداد .xml.
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
قم بتصحيح الملف المنسوخ.
sudo nano /etc/firewalld/services/example.xml
يحتوي الملف على تعريف SSH:
معظم تعريف الخدمة عبارة عن بيانات وصفية. يمكنك تغيير الاسم المختصر للخدمة في العلامات
دعنا نعود إلى خدمة المثال ؛ لنفترض أنه يطلب فتح منفذ TCP 7777 ومنفذ UDP 8888. سيبدو التعريف كما يلي:
أحفظ وأغلق الملف.
أعد تشغيل جدار الحماية الخاص بك:
sudo firewall-cmd - إعادة تحميل
ستظهر الخدمة الآن في قائمة الخدمات المتاحة:
جدار الحماية - cmd --get-services
RH-Satellite-6 Amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns مثال بروتوكول نقل الملفات عالي التوفر http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt nfsql pm pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transfer-client vnc-server wbem-https
يوفر جدار الحماية العديد من المناطق المحددة مسبقًا ، والتي تعد كافية لمعظم الأعمال. ومع ذلك ، في بعض المواقف يصبح من الضروري إنشاء منطقة مخصصة.
على سبيل المثال ، يمكنك إنشاء منطقة ويب عامة لخادم ويب ومنطقة DNS خاصة لخدمة DNS.
عند إنشاء منطقة ، تحتاج إلى إضافتها إلى الإعدادات الدائمة لجدار الحماية.
حاول إنشاء مناطق الويب العامة والخاصة:
sudo firewall-cmd - دائمًا - منطقة جديدة = publicweb
sudo firewall-cmd - دائم - منطقة جديدة = privateDNS
تأكد من وجود المناطق:
sudo firewall-cmd - دائم - مناطق جت
في الجلسة الحالية ، لن تتوفر مناطق جديدة:
جدار الحماية - cmd - مناطق النطاقات
حظر dmz إسقاط المنزل الخارجي الداخلي العام الموثوق به
للوصول إلى المناطق الجديدة ، تحتاج إلى إعادة تشغيل جدار الحماية:
sudo firewall-cmd - إعادة تحميل
جدار الحماية - cmd - مناطق النطاقات
كتلة dmz إسقاط المنزل الخارجي الداخلي الخاص العمل الموثوق به publicDNS publicweb
يمكنك الآن تخصيص الخدمات والمنافذ المطلوبة للمناطق الجديدة. على سبيل المثال ، يمكن إضافة SSH و HTTP و HTTPS إلى منطقة الويب العام.
sudo firewall-cmd --zone = publicweb --add-service = ssh
sudo firewall-cmd --zone = publicweb --add-service = http
sudo firewall-cmd --zone = publicweb --add-service = https
جدار الحماية- cmd --zone = publicweb --list-all
publicweb
واجهات:
مصادر:
الخدمات: http https ssh
الموانئ:
حفلة تنكرية: لا
المنافذ الأمامية:
كتل icmp:
قواعد غنية:
يمكنك إضافة DNS إلى منطقة privateDNS:
sudo firewall-cmd --zone = privateDNS --add-service = dns
جدار الحماية- cmd --zone = privateDNS - list-all
PrivateDNS
واجهات:
مصادر:
الخدمات: نظام أسماء النطاقات
الموانئ:
حفلة تنكرية: لا
المنافذ الأمامية:
كتل icmp:
قواعد غنية:
ثم يمكنك ربط واجهات الشبكة بمناطق جديدة:
sudo firewall-cmd --zone = publicweb - تغيير الواجهة = eth0
sudo firewall-cmd --zone = privateDNS - واجهة التغيير = eth1
الآن يمكنك اختبار الإعداد. إذا كان كل شيء يعمل بشكل صحيح ، يمكنك إضافة هذه القواعد إلى الإعدادات الدائمة.
sudo firewall-cmd --zone = publicweb - دائم - add-service = ssh
sudo firewall-cmd --zone = publicweb --permanent --add-service = http
sudo firewall-cmd --zone = publicweb --permanent --add-service = https
sudo firewall-cmd --zone = privateDNS --permanent --add-service = dns
يمكنك بعد ذلك تكوين واجهات الشبكة للاتصال تلقائيًا بالمنطقة الصحيحة.
على سبيل المثال ، سوف تلتزم eth0 بـ publicweb:
sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0
. . .
IPV6_AUTOCONF = لا
DNS1 = 2001: 4860: 4860 :: 8844
DNS2 = 2001: 4860: 4860 :: 8888
DNS3 = 8.8.8.8
ZONE = publicweb
وستكون واجهة eth1 مرتبطة بـ privateDNS:
sudo nano / etc / sysconfig / network-scripts / ifcfg-eth1
. . .
NETMASK = 255.255.0.0
DEFROUTE = "لا"
NM_CONTROLLED = "نعم"
المنطقة = privateDNS
أعد تشغيل خدمات الشبكة وجدار الحماية:
إعادة تشغيل شبكة sudo systemctl
أعد تشغيل جدار الحماية sudo systemctl
تحقق من المناطق:
جدار الحماية cmd - مناطق النشط
PrivateDNS
الواجهات: eth1
publicweb
الواجهات: eth0
تأكد من تشغيل الخدمات الضرورية في المناطق:
جدار الحماية- cmd --zone = publicweb - قائمة الخدمات
http htpps ssh
جدار الحماية - cmd --zone = privateDNS - قائمة الخدمات
نظام أسماء النطاقات
المناطق المخصصة جاهزة تمامًا للذهاب. يمكنك جعل أي منها المنطقة الافتراضية. على سبيل المثال:
sudo firewall-cmd --set-default-zone = publicweb
الآن بعد أن تحققت من جميع الإعدادات وتأكدت من أن جميع القواعد تعمل كما هو متوقع ، يمكنك تكوين جدار الحماية للتشغيل التلقائي.
للقيام بذلك ، أدخل:
sudo systemctl تمكين جدار الحماية
سيبدأ جدار الحماية الآن بالخادم.
جدار حماية جدار الحماية أداة مرنة للغاية. تسمح لك المناطق بتغيير سياسة جدار الحماية بسرعة.
الآن بعد أن تعرفت على كيفية عمل جدار الحماية ، أصبحت على دراية بالمفاهيم الأساسية لجدار الحماية ، يمكنك إنشاء مناطق مخصصة وإضافة خدمات.
العلامات: ،سأقدم لكم اليوم رؤيتي للتكوين الأولي لخادم عالمي على نظام تشغيل مشهور. سأخبرك بكيفية عمل تكوين أساسي لخادم centos مباشرة بعد التثبيت لاستخدامه بأي سعة تريدها. ستعمل هذه النصائح العملية على تحسين أمان الخادم الخاص بك وقابليته للاستخدام. ستكون المقالة ذات صلة بالإصدارين الأخيرين من Centos - 7 و 8.
هذه المقالة جزء من سلسلة واحدة من المقالات حول الخادم.
بعد إصدار الإصدار الجديد من Centos 8 ، أصبح من الصعب وصف التكوين الأولي لكلا الخادمين في مقال واحد ، لكنني لم أرغب في فصل المقالة ، نظرًا لوجود العديد من الروابط الواردة من أماكن مختلفة إليها. من الأنسب الاحتفاظ بالمواد المشتركة في كلا الإصدارين ، وهذا ما سأفعله. في الوقت نفسه ، ستكون الاختلافات بين الإصدارين واضحة للعيان ، والتي ستكون ذات صلة بعد عامين من إصدار centos 8 وسيتعين عليك استخدام كلا الإصدارين ، اعتمادًا على الموقف.
يستخدم Centos 7 مدير الحزم يم، وفي Centos 8 - dnf... في نفس الوقت غادروا ارتباط رمزيمن yum إلى dnf ، لذا يمكنك كتابة الاسم الأول والاسم الثاني. من أجل الاتساق ، سأستخدم yum في كل مكان ، وأنا أحذرك ، فقط حتى تفهم لماذا أفعل ذلك بهذه الطريقة. في الواقع ، يتم استخدام dnf في CentOS 8 ، وهو مدير حزم مختلف وأكثر حداثة يتيح لك العمل مع إصدارات مختلفة من نفس البرنامج. لهذا ، يتم استخدام مستودعات منفصلة ظهرت لـ centos 8.
أنا شخصياً ، بعد التثبيت ، أبدأ بأي إعداد للنظام ، سواء أكان Centos أو غير ذلك ، عن طريق تحديث النظام بالكامل. إذا كانت صورة التثبيت حديثة ، أو تم إجراء التثبيت عبر الشبكة ، فعلى الأرجح لن تكون هناك تحديثات. غالبًا ما يتم العثور عليها لأن صور التثبيت لا يتم تحديثها دائمًا بشكل منتظم.
تحديث النظام
# تحديث يومي
لراحة الإدارة ، أقوم دائمًا بتثبيت Midnight Commander ، أو فقط MC:
# yum تثبيت mc
وعلى الفور أقوم بتشغيل تمييز بناء الجملة لجميع الملفات التي لم تتم الإشارة إليها صراحة في الملف / usr / share / mc / syntax / syntaxبناء الجملة للنصوص sh و bash. يعتبر بناء الجملة العام هذا مناسبًا لملفات التكوين الأكثر استخدامًا على الخادم. الكتابة فوق الملف غير معروف بناء الجملة... هذا هو القالب الذي سيتم تطبيقه على ملفات .conf و. cf ، نظرًا لعدم وجود بنية صريحة مرفقة بها.
# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
بعد ذلك ، ستكون أدوات الشبكة في متناول اليد. اعتمادًا على مجموعة الحزم الأولية التي تختارها عند تثبيت النظام ، سيكون لديك مجموعة أو أخرى من أدوات الشبكة المساعدة. فيما يلي قائمة بالأشياء التي اعتدت عليها شخصيًا - ifconfig و netstat و nslookup وبعض الآخرين. إذا كنت في حاجة إليها ، وأنا كذلك ، فأقترح تثبيتها بشكل منفصل ، إذا لم تكن موجودة بالفعل. إذا كنت لا تحتاجها حقًا ولا تستخدمها ، فيمكنك تخطي تثبيتها. دعنا نتحقق مما لدينا في النظام في الوقت الحالي
# ifconfig
إذا رأيت الجواب:
Bash: ifconfig: الأمر غير موجود
هذا يعني أن الأداة المساعدة غير مثبتة. بدلاً من ifconfig على CentOS ، هناك الآن أداة مساعدة IP... هذا لا ينطبق فقط على السينتوس. هذه هي الصورة في جميع توزيعات Linux الحديثة الشائعة تقريبًا. لقد اعتدت على ifconfig لوقت طويل في الآونة الأخيرةأنا عمليا لا أستخدمه. لطالما أحببت أنه في توزيعات Linux المختلفة ، كل شيء متشابه. باستخدام ifconfig ، يمكنك تكوين الشبكة ليس فقط في نظام التشغيل Linux ، ولكن أيضًا في freebsd. انها مريحة. وعندما يكون لكل توزيع أداته الخاصة ، فلن يكون ذلك مناسبًا. على الرغم من أن هذا لم يعد مهمًا الآن ، لأنني لم أعد أعمل مع Freebsd ، وأداة ip متوفرة في جميع توزيعات Linux. ومع ذلك ، إذا كنت بحاجة إلى ifconfig ، فيمكنك تثبيت الحزمة أدوات الشبكةوالتي تشمل:
# yum تثبيت net-tools
لأوامر nslookup أو ، على سبيل المثال ، host ، للعمل معنا ، تحتاج إلى تثبيت الحزمة أدوات الربط... إذا لم يتم ذلك ، فانتقل إلى الأمر:
# nslookup
سيكون الإخراج:
باش: nslookup: الأمر غير موجود
لذا قم بتثبيت أدوات الربط:
# yum install bind-utils
قم بتعطيل SELinux. استخدامه وإعداد محادثة منفصلة. الآن لن أفعل هذا. لذلك نقوم بتعطيل:
# mcedit / etc / sysconfig / selinux
تغيير القيمة
SELINUX = معطل
يمكنك إعادة التشغيل حتى تدخل التغييرات حيز التنفيذ:
# اعادة التشغيل
وإذا كنت ترغب في تطبيق تعطيل SELinux دون إعادة التشغيل ، فقم بتشغيل الأمر:
# setenforce 0أتلقى الكثير من الانتقادات طوال الوقت حول تعطيل SELinux. أعرف كيف يعمل ، يمكنني تخصيصه. إنه حقًا ليس صعبًا جدًا وليس من الصعب إتقانه. هذا هو خياري المتعمد ، على الرغم من أنني أحيانًا أقوم بضبطه. التنسيق الخاص بي للعمل مع النظام هو أنني لا أحتاج في أغلب الأحيان إلى SELinux ، لذلك لا أضيع الوقت فيه وأقوم بتعطيل centos في الإعداد الأساسي. يعد أمان النظام مهمة معقدة ، خاصة في العالم الحديث لتطوير الويب ، حيث تسود الخدمات الدقيقة والحاويات. SELinux هي أداة متخصصة ليست مطلوبة دائمًا وفي كل مكان. لذلك ، في هذه المقالة لا تنتمي. كل من يحتاج إليها سيمكن SELinux ويهيئها بشكل منفصل.
نواصل التكوين الأساسي لـ centos بعد التثبيت. الآن سنفعل ذلك ، إذا لم نفعل ذلك لسبب ما أثناء التثبيت ، أو إذا كنت بحاجة إلى تغييرها. بشكل عام ، يتم تكوين الشبكة في Centos باستخدام مدير الشبكةوفائدة وحدة التحكم الخاصة به nmtui... يأتي في الإعداد الأساسي للنظام. هناك واجهة رسومية بسيطة ومباشرة ، لذلك ليس هناك ما يمكن قوله. أنا معتاد أكثر على تكوين الشبكة من خلال ملفات تكوين البرامج النصية للشبكة. في الإصدار السابع من centos ، تم إخراجها من الصندوق ، في الإصدار الثامن تم إزالتها. لاستخدامها لتكوين الشبكة ، يجب عليك تثبيت الحزمة بشكل منفصل البرامج النصية للشبكة.
# yum تثبيت البرامج النصية للشبكة
الآن يمكنك تكوين الشبكة. للقيام بذلك ، افتح الملف / etc / sysconfig / network-scripts / ifcfg-eth0
# mcedit / etc / sysconfig / network-scripts / ifcfg-eth0
إذا حصلت على إعدادات الشبكة عبر dhcp ، فسيكون الحد الأدنى لمجموعة الإعدادات في ملف التكوين كما يلي.
TYPE = "Ethernet" BOOTPROTO = "dhcp" DEFROUTE = "نعم" IPV4_FAILURE_FATAL = "لا" NAME = "eth0" DEVICE = "eth0" ONBOOT = "نعم"
لتكوين عنوان IP ثابت ، ستكون الإعدادات على النحو التالي.
TYPE = "Ethernet" BOOTPROTO = "بلا" DEFROUTE = "نعم" IPV4_FAILURE_FATAL = "لا" NAME = "eth0" DEVICE = "eth0" ONBOOT = "نعم" IPADDR = 192.168.167.117 DNS1 = 192.168.167.113 PREFIX = 28 GATEWAY = 192.168.167.113
في حقل IPADDR ، أدخل عنوانك ، في قناع شبكة PREFIX ، في بوابة GATEWAY ، عنوان DNS لخادم نظام أسماء النطاقات. احفظ الملف وأعد تشغيل الشبكة لتطبيق الإعدادات:
# إعادة تشغيل شبكة systemctl
عند إعداد Centos ، غالبًا ما تحتاج إلى برنامج غير موجود في اللفت القياسي. لتثبيت حزم إضافية ، تحتاج. الأكثر شعبية هو EPEL. اعتاد أن يكون rpmforge ، ولكن تم إغلاقه لعدة سنوات. نسيه الجميع. نقوم بتوصيل مستودع EPEL. كل شيء بسيط معها ، يضاف من اللفت القياسي:
# yum تثبيت الإصدار epel
أيضًا ، بالنسبة إلى CentOS 7 ، يعد مستودع REMI مفيدًا للغاية ، والذي يسمح لك بتثبيت إصدارات أحدث من php ، على عكس تلك الموجودة في المستودع القياسي. دعني أذكرك أن هذا هو php 5.4 ، والذي لم يعد صالحًا لأي شيء وقد تمت إزالته من الدعم.
# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
بالنسبة إلى Centos 8 ، لم يعد remi مناسبًا بعد ، لكنني أعتقد أنه مؤقت. من حيث المبدأ ، فإن هذين المستودعات في centos عادة ما تكون كافية بالنسبة لي في الحالة العامة. البعض الآخر متصل بالفعل لاحتياجات معينة لتثبيت برامج مختلفة.
ننتقل إلى إعداد نظام centos على الخادم. سيكون من المفيد إجراء بعض التغييرات على الآلية القياسية لحفظ محفوظات الأوامر. غالبًا ما يساعد عندما تحتاج إلى تذكر أحد الأوامر التي تم إدخالها مسبقًا. الإعدادات الافتراضية لها بعض القيود غير الملائمة. وهنا لائحة من لهم:
يتم تخزين قائمة آخر الأوامر التي تم تنفيذها في الدليل الرئيسي للمستخدم في الملف .bash_history(عند نقطة البداية). يمكن فتحه من قبل أي محرر ومشاهدته. للحصول على عرض أكثر ملاءمة للقائمة ، يمكنك إدخال الأمر في وحدة التحكم:
# التاريخ
ونرى قائمة ذات تعداد رقمي. يمكنك العثور بسرعة على أمر معين عن طريق تصفية الأسطر التي تحتاجها فقط ، على سبيل المثال ، مثل هذا:
# التاريخ | grep yum
لذلك سنرى جميع الخيارات لتشغيل الأمر yum ، والتي يتم تخزينها في المحفوظات. دعنا نصلح أوجه القصور المدرجة في الإعدادات القياسية لتخزين محفوظات الأوامر في CentOS. للقيام بذلك ، تحتاج إلى تحرير الملف .bashrcوالذي يقع في نفس الدليل مثل ملف المحفوظات. أضف الأسطر التالية إليه:
تصدير HISTSIZE = 10000 تصدير HISTTIMEFORMAT = "٪ h٪ d٪ H:٪ M:٪ S" PROMPT_COMMAND = "history -a" export HISTIGNORE = "ls: ll: history: w: htop"
تعمل المعلمة الأولى على زيادة حجم الملف إلى 10000 سطر. يمكن عمل المزيد ، على الرغم من أن هذا الحجم عادة ما يكون كافياً. يحدد المعامل الثاني تخزين تاريخ ووقت تنفيذ الأمر. يفرض السطر الثالث حفظه في السجل فورًا بعد تنفيذ الأمر. في السطر الأخير ، نقوم بإنشاء قائمة استثناءات لتلك الأوامر التي لا تحتاج إلى كتابتها في التاريخ. أعطيت مثالا على أبسط قائمة. يمكنك إضافته حسب تقديرك.
لتطبيق التغييرات ، تحتاج إلى تسجيل الخروج وإعادة الاتصال أو تشغيل الأمر:
# المصدر ~ /
هذا كل شيء عن إعداد تخزين محفوظات الأوامر. هناك الكثير من الأشياء الشيقة التي يمكنك القيام بها في ملف bashrc. في وقت من الأوقات ، تم إهمالي وتجربتي ، لكن بعد ذلك تركت كل شيء ، لأنه لا معنى له. عند العمل مع خوادم العملاء ، غالبًا ما أرى bash الافتراضي ، لذلك من الأفضل التعود عليه والعمل فيه. والإعدادات الفردية والديكورات هي الكثير من أجهزة الكمبيوتر الشخصية والخوادم. ليس عمال. لذلك لا أقوم بتكوين أي شيء آخر وفقًا للمعيار الموجود في خادم Centos في هذا الصدد.
للحفاظ على أمان الخادم عند المستوى المناسب ، من الضروري على الأقل تحديثه في الوقت المناسب - كل من النواة نفسها مع أدوات النظام المساعدة والحزم الأخرى. يمكنك القيام بذلك يدويًا ، ولكن للحصول على عمل أكثر كفاءة ، من الأفضل إعداد التنفيذ التلقائي. ليس من الضروري تثبيت التحديثات تلقائيًا ، ولكن على الأقل للتحقق من مظهرها. عادة ما أتبع هذه الإستراتيجية.
للتحقق تلقائيًا من وجود تحديثات في Centos 7 ، ستساعدنا الأداة يم كرون... يتم تثبيته بشكل تقليدي عبر yum من المستودع القياسي.
# yum تثبيت yum-cron
بعد تثبيت yum-cron ، يتم إنشاء مهمة تلقائية لتنفيذ الأداة في /etc/cron.dailyو /etc/cron.hourly... بشكل افتراضي ، تقوم الأداة بتنزيل التحديثات التي تم العثور عليها ، ولكنها لا تقوم بتطبيقها. بدلاً من ذلك ، يتم إرسال إعلام بالتحديث إلى المسؤول في صندوق البريد الجذر المحلي. ثم تذهب في الوضع اليدوي وتقرر ما إذا كنت تريد تثبيت التحديثات أم لا في الوقت المناسب لك. يبدو لي أن وضع التشغيل هذا هو الأكثر ملاءمة ، لذلك لا أغير هذه الإعدادات.
يمكنك تكوين yum-cron من خلال ملفات التكوين الموجودة في /etc/yum/yum-cron.confو yum-cron-hourly.conf... لقد تم التعليق عليها جيدًا ، لذا فهي لا تحتاج إلى تفسيرات مفصلة. انتبه إلى القسم ، حيث يمكنك تحديد معلمات لإرسال الرسائل. الافتراضي هو إرسال البريد من خلال المضيف المحلي. يمكنك تغيير المعلمات هنا وإرسال الرسائل من خلال خادم بريد تابع لجهة خارجية. ولكن بدلاً من ذلك ، شخصيًا ، أفضل تهيئة إعادة توجيه البريد الجذر المحلي إلى صندوق بريد خارجي عالميًا للخادم بأكمله من خلال التفويض على خادم smtp آخر.
كما قلت سابقًا ، يستخدم Centos 8 مدير حزم مختلف - dnf. يتم تكوين تحديثات الحزمة هناك من خلال الأداة المساعدة dnf- تلقائي... دعونا نضعه ونقوم بتكوينه.
# yum تثبيت dnf- تلقائي
لم يعد cron يتعامل مع إدارة البدء المجدولة ، ولكن من خلال systemd باستخدام برنامج الجدولة المدمج. يمكنك عرض عدادات البدء التلقائية باستخدام الأمر:
# systemctl list-timers * dnf- *
إذا لم تكن هناك مهام هناك ، فيمكنك إضافة مؤقت يدويًا:
# systemctl enable - الآن dnf-automatic.timer
يتم تعيين المؤقت الافتراضي لبدء dnf-automatic بعد ساعة واحدة من بدء تشغيل الخادم وتكرار ذلك يوميًا. تكوين المؤقت يعيش هنا - /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.
يعيش التكوين الخاص بـ dnf-automatic بتنسيق /etc/dnf/automatic.conf... بشكل افتراضي ، يقوم بتنزيل التحديثات فقط ، لكنه لا يقوم بتطبيقها. تم التعليق على التكوين جيدًا ، لذا يمكنك تخصيصه كما تريد. تفسيرات منفصلة ليست مطلوبة. تخصيص تحديثات حزمة النظام كما تراه مناسبًا. كما قلت ، أقوم بتنزيلها تلقائيًا فقط. أحافظ دائمًا على التثبيت تحت التحكم اليدوي.
استمرارًا لتكوين centos ، سنقوم بإصلاح أحد الإزعاج الصغير. في التثبيت الافتراضي للإصدار السابع من النظام ، سجل نظامك بالكامل / فار / سجل / رسائلبعد فترة سيتم انسداد الخادم بالإدخالات التالية.
16 أكتوبر 14:01:01 xs-files systemd: تم إنشاء شريحة مستخدم 0.slice. 16 أكتوبر 14:01:01 xs-files systemd: بدء تشغيل user-0.slice. 16 أكتوبر 14:01:01 xs-files systemd: بدأت الجلسة 14440 لجذر المستخدم. 16 أكتوبر 14:01:01 xs-files systemd: بدء الجلسة 14440 لجذر المستخدم. 16 أكتوبر 14:01:01 xs-files systemd: تمت إزالة شريحة user-0.slice. 16 أكتوبر 14:01:01 xs-files systemd: إيقاف user-0.slice. 16 أكتوبر 15:01:01 xs-files systemd: تم إنشاء شريحة مستخدم 0.slice. 16 أكتوبر 15:01:01 xs-files systemd: بدء تشغيل user-0.slice. 16 أكتوبر 15:01:01 xs-files systemd: تم بدء الجلسة 14441 لجذر المستخدم. 16 أكتوبر 15:01:01 xs-files systemd: بدء الجلسة 14441 لجذر المستخدم. 16 أكتوبر 15:01:01 xs-files systemd: تم بدء الجلسة 14442 لجذر المستخدم. 16 أكتوبر 15:01:01 xs-files systemd: بدء الجلسة 14442 لجذر المستخدم. أكتوبر 16 15:01:01 xs-files systemd: تمت إزالة شريحة user-0.slice. 16 أكتوبر 15:01:01 xs-files systemd: إيقاف user-0.slice. أكتوبر 16:01:01 xs-files systemd: تم إنشاء شريحة مستخدم 0.slice. أكتوبر 16:01:01 xs-files systemd: بدء تشغيل user-0.slice. 16 أكتوبر 16:01:01 xs-files systemd: تم بدء الجلسة 14443 لجذر المستخدم. أكتوبر 16:01:01 xs-files systemd: بدء الجلسة 14443 لجذر المستخدم. أكتوبر 16:01:01 xs-files systemd: تمت إزالة شريحة user-0.slice.
لم ألاحظهم في Centos 8 ، لذلك لا يوجد شيء أفعله هناك. الرسائل ليست ذات فائدة عملية ، لذلك دعونا نعطلها. للقيام بذلك ، قم بإنشاء حكم منفصللـ rsyslog ، حيث نقوم بإدراج جميع قوالب الرسائل التي سنقطعها. دعونا نضع هذه القاعدة في ملف منفصل /etc/rsyslog.d/ignore-systemd-session-slice.conf.
# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf إذا كان $ programname == "systemd" و (يحتوي $ msg على "بدء الجلسة" أو يحتوي $ msg على "بدء الجلسة" أو يحتوي $ msg على "تم الإنشاء شريحة "أو $ msg تحتوي على" مستخدم مبتدئ- "أو $ msg تحتوي على" بدء شريحة مستخدم من "أو $ msg تحتوي على" جلسة تمت إزالتها "أو $ msg تحتوي على" شريحة مستخدم تمت إزالتها من "أو $ msg تحتوي على" إيقاف شريحة مستخدم من " ) ثم توقف
احفظ الملف وأعد تشغيل rsyslog لتطبيق الإعدادات.
# systemctl إعادة تشغيل سجل rsyslog
من الضروري أن نفهم أنه في هذه الحالة نقوم بتعطيل التدفق إلى ملف السجل فقط على الخادم المحلي. إذا قمت بتخزين سجلات الدخول ، ثم هذه القاعدةسوف تحتاج إلى تكوينه عليه.
وأخيرًا ، في نهاية التكوين ، سنضيف العديد من الأدوات المساعدة المفيدة التي قد تكون مفيدة أثناء تشغيل الخادم.
يعرض iftop في الوقت الفعلي تحميل واجهة الشبكة ، ويمكن تشغيله بمفاتيح مختلفة ، ولن أتطرق إلى هذا بالتفصيل ، فهناك معلومات حول هذا الموضوع على الإنترنت. نضع:
# يمكنك تثبيت iftop
واثنين من مديري المهام المثيرين للاهتمام ، أنا في الغالب أستخدم htop ، ولكن في بعض الأحيان يكون على القمة في متناول يدي. نضع كليهما ، انظر بنفسك ، اكتشف ما تفضله ، يناسبك:
# yum install htop # yum install atop
لعرض معلومات حول الملفات التي تستخدمها عمليات معينة ، أنصحك بتثبيت الأداة المساعدة lsof... من المرجح أن يكون مفيدًا عاجلاً أم آجلاً عند تشخيص تشغيل الخادم.
# يمكنك تثبيت wget bzip2 traceroute gdisk
هذا كل شيء بالنسبة لي. اكتمل الإعداد الأساسي لـ CentOS ، يمكنك البدء في تثبيت الوظائف الرئيسية وتكوينها.
لإنهاء تكوين خادم CentOS ، فلنتأكد من إرسال البريد الموجه إلى الجذر المحلي عبر خادم بريد خارجي إلى صندوق البريد المحدد. إذا لم يتم ذلك ، فسيتم إضافته محليًا إلى ملف / var / spool / mail / root... وقد يكون هناك مهم و معلومات مفيدة... لنقم بتكوينه ليتم إرساله إلى صندوق بريد مسؤول النظام.
تحدثت عن هذا بالتفصيل في مقال منفصل -. هنا ، بإيجاز الأوامر فقط والإعداد السريع. نقوم بتثبيت الحزم اللازمة:
# yum تثبيت mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-simple postfix
نرسم شيئًا مثل هذا التكوين لـ postfix.
Cat /etc/postfix/main.cf ## بداية التكوين الافتراضي ############################## queue_directory = / var / spool / postfix command_directory = / usr / sbin daemon_directory = / usr / libexec / postfix data_directory = / var / lib / postfix mail_owner = postfix inet_interfaces = localhost inet_protocols = all unknown_local_recipient_reject_code = has alias_mapsatabase = 550 alias_mapsatabase = = debiah: / etc / com = / bin: / usr / bin: / usr / local / bin: / usr / X11R6 / bin ddd $ daemon_directory / $ process_name $ process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = / usr / bin / newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = / usr / share / man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = / usr / share / doc / postfix-2.10.1 / README_FILES ## DEFAULT CONFIG END ###################### # اسم الخادم كما هو معروض اسم المضيف اسم مضيفي = centos-test. xs.local # Here n فيما يتعلق بالمنطق ، فأنت بحاجة إلى ترك المجال فقط ، ولكن في هذه الحالة من الأفضل ترك الاسم الكامل للخادم بحيث يظهر الاسم الكامل للخادم في حقل # المرسل ، لذلك يكون أكثر ملاءمة لتحليل الخدمة messages mydomain = centos-test.xs.local mydestination = $ myhostname myorigin = $ mydomain # عنوان الخادم الذي سنرسل من خلاله بريد relayhost = mailsrv.mymail.ru:25 smtp_use_tls = نعم smtp_sasl_auth_enable = نعم smtp_sasl_password: / etcfixh has / sasl_passwd smtp_sasl_security_options = بدون اسم مجهول smtp_sasl_security_options = smtp بلا اسم
قم بإنشاء ملف يحتوي على معلومات حول اسم المستخدم وكلمة المرور للترخيص.
# mcedit / etc / postfix / sasl_passwd mailsrv.mymail.ru:25 [بريد إلكتروني محمي]: كلمه السر
إنشاء ملف ديسيبل.
# postmap / etc / postfix / sasl_passwd
يمكنك الآن إعادة تشغيل postfix والتحقق من أنها تعمل.
# systemctl إعادة تشغيل postfix
إلى الاسم المستعار القياسي للجذر في / الخ / الأسماء المستعارة، أضف عنوانًا خارجيًا حيث سيتم تكرار البريد الموجه إلى الجذر. للقيام بذلك ، قم بتحرير الملف المحدد عن طريق تغيير السطر الأخير.
# الجذر: مارك
الجذر: الجذر ، [بريد إلكتروني محمي]
تحديث قاعدة الشهادة:
# newaliases
دعنا نرسل رسالة عبر وحدة التحكم إلى الجذر المحلي:
# df -h | جذر البريد الإلكتروني "استخدام القرص"
يجب أن تذهب الرسالة إلى صندوق بريد خارجي. إذا كنت تستخدم صندوق بريد من Yandex ، فمن المرجح أن تحصل على خطأ في سجل خادم البريد ولن يتم إرسال الرسالة.
Relay = smtp.yandex.ru: 25 ، تأخير = 0.25 ، تأخيرات = 0/0 / 0.24 / 0.01 ، dsn = 5.7.1 ، الحالة = مرتد (قال المضيف smtp.yandex.ru: 553 5.7.1 عنوان المرسل مرفوض: ليست مملوكة لمستخدم المصادقة. (ردًا على أمر MAIL FROM))
يعني هذا الخطأ أنه ليس لديك نفس صندوق البريد المحدد كمرسل البريد الذي تستخدمه للمصادقة. كيف أصلح هذا ، سأخبرك في مقال منفصل -. مع أنظمة البريد الأخرى ، حيث لا يوجد مثل هذا الفحص ، يجب أن يكون كل شيء على ما يرام وهكذا.
هذا يكمل تكوين البريد المحلي. الآن سيتم تكرار جميع الرسائل الموجهة إلى الجذر المحلي ، على سبيل المثال ، التقارير الواردة من cron ، إلى صندوق بريد خارجي ، وإرسالها عبر خادم بريد كامل. لذلك سيتم تسليم رسائل البريد الإلكتروني بشكل طبيعي دون الدخول في البريد العشوائي (على الرغم من أنه ليس بالضرورة ، هناك عوامل تصفية إرشادية).
لقد اتبعنا بعض الخطوات الأولية لإعداد خادم CentOS الذي أفعله عادةً عند إعداد الخادم بعد التثبيت مباشرةً. أنا لا أتظاهر بأنني حقيقة مطلقة ، ربما أفتقد شيئًا ما أو لا أفعله بشكل صحيح تمامًا. سأكون سعيدًا لو تلقيت تعليقات واقتراحات معقولة وذات مغزى.
..