خدمة SSH هي الأكثر تعرّضًا للهجوم على أي خادم علنيّ، وهي أيضًا الأسهل إغلاقًا كما ينبغي. وأغلب الخطر يأتي من شيء واحد: كلمات المرور. أزلها فتستمرّ المحاولات وتكفّ عن أن تعني شيئًا.
الإعدادات
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers sara deploy
sudo sshd -t && sudo systemctl reload ssh
قبل إعادة التحميل: تأكّد أن لديك مفتاحًا يعمل، وطرفيّةً ثانية مسجَّلة الدخول أصلًا. فضبطُ PasswordAuthentication no بلا مفتاح مثبَّت يعني أنك أقفلت على نفسك باب خادمك — ولا يبقى إلّا وحدة تحكّم المزوّد طريقًا للعودة.
سطرًا سطرًا
- PermitRootLogin no — اعمل مستخدمًا له اسم، بـsudo. انظر المستخدمون وsudo وألّا تعمل جذرًا أبدًا.
- PasswordAuthentication no — أثمن سطر في هذه القائمة على الإطلاق.
- KbdInteractiveAuthentication no — يُغلق مسار كلمة المرور الثاني الذي ينساه الناس، وهو الذي يُبقي كلمات المرور تعمل بصمت.
- AllowUsers — قائمة صريحة. فحسابُ نظامٍ جديد أنشأته حزمةٌ لا يستطيع الدخول.
وقيّد من أين يستجيب
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
sudo ufw deny 22/tcp
وإن تعذّر عنوان مكتب ثابت، فـFail2ban هو البديل — انظر ماذا يوقف Fail2ban. أمّا نقل المنفذ فتجميلٌ لا غير؛ انظر تغيير منفذ SSH.
وافحص ما انتهيت إليه
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|allowusers'
الأمر sshd -T يطبع الإعدادات النافذة فعلًا، بما فيها ما ضُبط في ملفّ Include أبعد في الأسفل. وهي القراءة الوحيدة التي تحسب حساب توزيعةٍ تُلقي ملفًّا في sshd_config.d فتتجاوزك.