حماية خادم Linux. ما يجب القيام به أولا

حماية خادم Linux. ما يجب القيام به أولا
حبيب مهني / ويكيميديا ​​كومنزو CC BY-SA

في الوقت الحاضر ، يستغرق رفع خادم على استضافة بضع دقائق وبضع نقرات بالماوس. لكن بعد الإطلاق مباشرة ، يجد نفسه في بيئة معادية ، لأنه منفتح على الإنترنت بالكامل مثل فتاة بريئة في ديسكو الروك. سوف تجد الماسحات الضوئية ذلك بسرعة وتكتشف الآلاف من الروبوتات المكتوبة تلقائيًا والتي تجوب الشبكة بحثًا عن نقاط الضعف والتكوينات الخاطئة. هناك بعض الأشياء التي يجب عليك فعلها مباشرة بعد الإطلاق لضمان الحماية الأساسية.

محتوى

مستخدم غير جذر

الخطوة الأولى هي إنشاء مستخدم غير جذر لنفسك. النقطة هي أن المستخدم root امتيازات مطلقة في النظام ، وإذا سمحت له بالإدارة عن بعد ، فستقوم بنصف العمل للمخترق ، مع ترك اسم مستخدم صالح له.

لذلك ، تحتاج إلى إنشاء مستخدم آخر ، وتعطيل الإدارة عن بعد عبر SSH للجذر.

يتم بدء مستخدم جديد بواسطة الأمر useradd:

useradd [options] <username>

ثم يتم إضافة كلمة مرور لها بالأمر passwd:

passwd <username>

أخيرًا ، يجب إضافة هذا المستخدم إلى مجموعة لها الحق في تنفيذ أوامر مرتفعة sudo. اعتمادًا على توزيع Linux ، قد تكون هذه مجموعات مختلفة. على سبيل المثال ، في CentOS و Red Hat ، تتم إضافة المستخدم إلى المجموعة wheel:

usermod -aG wheel <username>

في Ubuntu يتم إضافته إلى المجموعة sudo:

usermod -aG sudo <username>

مفاتيح بدلاً من كلمات مرور SSH

تُعد القوة الغاشمة أو تسريبات كلمة المرور من العوامل القياسية للهجوم ، لذا من الأفضل تعطيل مصادقة كلمة المرور في SSH (Secure Shell) واستخدام مصادقة المفاتيح بدلاً من ذلك.

هناك العديد من البرامج لتطبيق بروتوكول SSH ، مثل LSH и دروببير، ولكن الأكثر شيوعًا هو OpenSSH. تثبيت عميل OpenSSH على أوبونتو:

sudo apt install openssh-client

تثبيت الخادم:

sudo apt install openssh-server

بدء برنامج SSH daemon (sshd) على خادم Ubuntu:

sudo systemctl start sshd

ابدأ البرنامج الخفي تلقائيًا في كل تمهيد:

sudo systemctl enable sshd

وتجدر الإشارة إلى أن جزء الخادم من OpenSSH يتضمن جزء العميل. هذا هو ، من خلال openssh-server يمكنك الاتصال بخوادم أخرى. علاوة على ذلك ، من جهاز العميل الخاص بك ، يمكنك بدء نفق SSH من خادم بعيد إلى مضيف تابع لجهة خارجية ، ثم يعتبر مضيف الجهة الخارجية الخادم البعيد مصدر الطلبات. ميزة مفيدة للغاية لإخفاء نظامك. انظر المادة للحصول على التفاصيل "نصائح عملية وأمثلة وأنفاق SSH".

على جهاز العميل ، ليس من المنطقي عادةً تثبيت خادم كامل لمنع إمكانية الاتصال عن بُعد بجهاز كمبيوتر (لأسباب أمنية).

لذلك ، بالنسبة للمستخدم الجديد ، تحتاج أولاً إلى إنشاء مفاتيح SSH على الكمبيوتر الذي ستصل من خلاله إلى الخادم:

ssh-keygen -t rsa

يتم تخزين المفتاح العام في ملف .pub وتبدو كسلسلة من الأحرف العشوائية تبدأ بـ ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

ثم ، من ضمن الجذر ، أنشئ دليل SSH على الخادم في الدليل الرئيسي للمستخدم وأضف مفتاح SSH العمومي إلى الملف authorized_keys، باستخدام محرر نصوص مثل Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

أخيرًا ، قم بتعيين الأذونات الصحيحة للملف:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

وتغيير الملكية لهذا المستخدم:

chown -R username:username /home/username/.ssh

من جانب العميل ، تحتاج إلى تحديد موقع المفتاح السري للمصادقة:

ssh-add DIR_PATH/keylocation

يمكنك الآن تسجيل الدخول إلى الخادم باسم المستخدم باستخدام هذا المفتاح:

ssh [username]@hostname

بعد التفويض ، يمكنك استخدام الأمر scp لنسخ الملفات والأداة المساعدة سشفس لتحميل نظام الملفات أو الدلائل عن بعد.

يُنصح بعمل عدة نسخ احتياطية من المفتاح الخاص ، لأنه إذا قمت بتعطيل مصادقة كلمة المرور وفقدتها ، فلن يكون لديك أي طريقة لتسجيل الدخول إلى الخادم الخاص بك على الإطلاق.

كما ذكرنا أعلاه ، في SSH تحتاج إلى تعطيل المصادقة للجذر (هذا هو السبب في أننا بدأنا مستخدمًا جديدًا).

على CentOS / Red Hat نجد الخط PermitRootLogin yes في ملف التكوين /etc/ssh/sshd_config وقم بتغييره:

PermitRootLogin no

على أوبونتو أضف السطر PermitRootLogin no إلى ملف التكوين 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

بعد التحقق من قيام المستخدم الجديد بالمصادقة باستخدام مفتاحه ، يمكنك تعطيل مصادقة كلمة المرور للتخلص من مخاطر تسرب كلمة المرور أو القوة الغاشمة. الآن ، من أجل الوصول إلى الخادم ، سيحتاج المهاجم إلى الحصول على مفتاح خاص.

على CentOS / Red Hat نجد الخط PasswordAuthentication yes في ملف التكوين /etc/ssh/sshd_config وقم بتغييرها على هذا النحو:

PasswordAuthentication no

على أوبونتو أضف السطر PasswordAuthentication no إلى ملف 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

للحصول على إرشادات حول تمكين المصادقة الثنائية عبر SSH ، راجع هنا.

جدار الحماية

يضمن جدار الحماية أن حركة المرور فقط على المنافذ التي تسمح بها مباشرة ستنتقل إلى الخادم. هذا يحمي من استغلال المنافذ التي يتم تمكينها عن طريق الخطأ مع الخدمات الأخرى ، مما يقلل بشكل كبير من سطح الهجوم.

قبل تثبيت جدار حماية ، تحتاج إلى التأكد من أن SSH مدرج في قائمة الاستبعاد ولن يتم حظره. خلاف ذلك ، بعد بدء جدار الحماية ، لن نتمكن من الاتصال بالخادم.

يأتي توزيع Ubuntu مزودًا بجدار حماية غير معقد (ufw) ، ومع CentOS / Red Hat - firewalld.

السماح لـ SSH في جدار الحماية على Ubuntu:

sudo ufw allow ssh

في CentOS / Red Hat ، استخدم الأمر firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

بعد هذا الإجراء ، يمكنك بدء تشغيل جدار الحماية.

في CentOS / Red Hat ، ابدأ خدمة systemd لجدار الحماية:

sudo systemctl start firewalld
sudo systemctl enable firewalld

في Ubuntu نستخدم الأمر التالي:

sudo ufw enable

Fail2Ban

خدمة Fail2Ban يحلل السجلات على الخادم ويحسب عدد محاولات الوصول من كل عنوان IP. تحدد الإعدادات القواعد الخاصة بعدد محاولات الوصول المسموح بها لفترة زمنية معينة - وبعد ذلك يتم حظر عنوان IP هذا لفترة زمنية محددة. على سبيل المثال ، لنسمح بخمس محاولات فاشلة لمصادقة SSH في غضون ساعتين ، ثم نحظر عنوان IP المحدد لمدة 5 ساعة.

تثبيت Fail2Ban على CentOS و Red Hat:

sudo yum install fail2ban

التثبيت على Ubuntu و Debian:

sudo apt install fail2ban

تشغيل:

systemctl start fail2ban
systemctl enable fail2ban

البرنامج يحتوي على ملفي تكوين: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. تم تحديد قيود الحظر في الملف الثاني.

يتم تمكين Jail for SSH افتراضيًا مع الإعدادات الافتراضية (5 محاولات ، فاصل زمني 10 دقائق ، حظر لمدة 10 دقائق).

[DEFAULT] ignorecommand = bantime = 10m findtime = 10m maxretry = 5

بالإضافة إلى SSH ، يمكن لـ Fail2Ban حماية الخدمات الأخرى على خادم الويب nginx أو Apache.

تحديثات الأمان التلقائية

كما تعلم ، توجد ثغرات أمنية جديدة باستمرار في جميع البرامج. بعد نشر المعلومات ، تتم إضافة الثغرات إلى حزم الاستغلال الشائعة ، والتي يستخدمها المتسللون والمراهقون على نطاق واسع عند فحص جميع الخوادم على التوالي. لذلك ، من المهم جدًا تثبيت تحديثات الأمان بمجرد ظهورها.

على خادم Ubuntu ، يتم تمكين تحديثات الأمان التلقائية افتراضيًا ، لذلك لا يلزم اتخاذ أي إجراء آخر.

على CentOS / Red Hat تحتاج إلى تثبيت التطبيق dnf- تلقائي وقم بتشغيل المؤقت:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

فحص الموقت:

sudo systemctl status dnf-automatic.timer

تغيير المنافذ الافتراضية

تم تطوير SSH في عام 1995 ليحل محل telnet (المنفذ 23) و ftp (المنفذ 21) ، لذلك قام مؤلف البرنامج Tatu Iltonen المنفذ المحدد 22 بشكل افتراضي، وتمت الموافقة عليها من قبل IANA.

بطبيعة الحال ، يدرك جميع المهاجمين المنفذ الذي يعمل عليه SSH - ويفحصونه مع بقية المنافذ القياسية لمعرفة إصدار البرنامج ، للتحقق من كلمات مرور الجذر القياسية ، وما إلى ذلك.

يؤدي تغيير المنافذ القياسية - التشويش - عدة مرات إلى تقليل حجم حركة البيانات غير المرغوب فيها ، وحجم السجلات والحمل على الخادم ، كما يقلل أيضًا من سطح الهجوم. على الرغم من أن بعض انتقد طريقة "الحماية من خلال الغموض". (الأمن من خلال الغموض). والسبب هو أن هذه التقنية تتعارض مع الأساسي الحماية المعمارية. لذلك ، على سبيل المثال ، المعهد الوطني الأمريكي للمعايير والتكنولوجيا في "دليل أمان الخادم" يشير المستند إلى الحاجة إلى بنية خادم مفتوح: "يجب ألا يعتمد أمن النظام على سرية تنفيذ مكوناته".

نظريًا ، يعد تغيير المنافذ الافتراضية مخالفًا لممارسة العمارة المفتوحة. ولكن من الناحية العملية ، يتم تقليل حجم حركة البيانات الضارة بالفعل ، لذلك يعد هذا إجراءً بسيطًا وفعالاً.

يمكن تكوين رقم المنفذ عن طريق تغيير التوجيه Port 22 في ملف التكوين / الخ / سه / sshd_config. يشار إليه أيضًا بواسطة المعلمة -p <port> в سشد. عميل وبرامج SSH بالنشر أيضا دعم الخيار -p <port>.

المعلمة -p <port> يمكن استخدامها لتحديد رقم المنفذ عند الاتصال بالأمر ssh في لينكس. في بالنشر и scp يتم استخدام المعلمة -P <port> (العاصمة P). تتجاوز تعليمات سطر الأوامر أي قيمة في ملفات التكوين.

إذا كان هناك العديد من الخوادم ، فيمكن أتمتة جميع هذه الإجراءات تقريبًا لحماية خادم Linux في نص برمجي. ولكن إذا كان هناك خادم واحد فقط ، فمن الأفضل التحكم في العملية يدويًا.

كإعلان

اطلب وابدأ على الفور! إنشاء VDS أي تكوين ومع أي نظام تشغيل في غضون دقيقة. سيسمح لك الحد الأقصى من التكوين بالخروج على أكمل وجه - 128 نواة لوحدة المعالجة المركزية ، وذاكرة وصول عشوائي 512 جيجابايت ، و 4000 جيجابايت من NVMe. ملحمة 🙂

حماية خادم Linux. ما يجب القيام به أولا

المصدر: www.habr.com