دليل

أول 30 دقيقة: قائمة تدقيق تحصين VPS

خادم VPS جديد يتلقى أول فحص SSH خلال دقائق من حصوله على عنوان IP. إليك التسلسل الدقيق الذي أطبقه على كل خادم جديد — جاهز للنسخ واللصق لـ Debian 13، مع جدول تدقيق في النهاية.

الافتراضات: صورة Debian 13 جديدة من نشر VPSRento الخاص بك، وأنت مسجل الدخول كـ root عبر SSH، وعنوان IP المثال هو 185.220.101.14 — استبدله بعنوانك. الوقت الإجمالي: حوالي نصف ساعة. نفذ الخطوات بالترتيب؛ الخطوة 2 قد تقفل حسابك إذا استعجلت.

1. أنشئ مستخدم sudo الخاص بك

العمل كـ root هو كيف تتحول الأخطاء المطبعية إلى حوادث. أنشئ مستخدمًا حقيقيًا، وامنحه صلاحية sudo، وقم بكل شيء من هناك:

# create the user (you'll set a password — still useful for sudo)
adduser ops

# grant sudo
usermod -aG sudo ops

كل ما يلي يعمل كـ ops ما لم يُذكر خلاف ذلك.

2. مفاتيح SSH فقط — لا كلمات مرور، لا تسجيل دخول root

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

# generate a keypair if you don't have one (ed25519, no passphrase tradeoff is yours)
ssh-keygen -t ed25519 -C "ops@atlas"

# push the public key to the server
ssh-copy-id [email protected]

تحقق من قدرتك على تسجيل الدخول بالمفتاح في نافذة الطرفية — ssh [email protected] — قبل لمس الإعدادات. أبقِ جلسة root الحالية مفتوحة كمخرج طوارئ. ثم عدّل /etc/ssh/sshd_config:

# /etc/ssh/sshd_config — the three lines that matter
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# validate the config, then reload (Debian 13 uses ssh.service)
sshd -t && systemctl reload ssh

prohibit-password بدلاً من ملف no مسطح لـ root عن قصد: لا يزال بإمكان root المصادقة بمفتاح من محطة عملك، وهو مفيد أحيانًا للاسترداد عبر وحدة تحكم المزود — لكن لا كلمة مرور ستعمل أبدًا، لأي شخص، من أي مكان. أكد بـ sshd -T | grep -E 'passwordauthentication|permitrootlogin'.

3. جدار الحماية: رفض افتراضي، اسمح فقط بما تشغّله

ufw في Debian هو طبقة رقيقة وعاقلة فوق nftables. السياسة هي الأمان؛ القواعد مجرد استثناءات لها:

apt update && apt install -y ufw

ufw default deny incoming
ufw default allow outgoing

# SSH stays open — add this BEFORE enabling
ufw allow 22/tcp comment 'SSH'

# whatever your box actually serves, e.g.:
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'

ufw enable
ufw status verbose

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

4. fail2ban: أبطئ الروبوتات إلى حد الزحف

مع تعطيل مصادقة كلمة المرور، القوة الغاشمة ميتة بالفعل — لكن fail2ban يحافظ على قابلية قراءة سجلاتك ويحظر الماسحات التي تلمس كل شيء آخر:

apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled  = true
port     = ssh
maxretry = 5
findtime = 10m
bantime  = 1h
systemctl enable --now fail2ban

# watch it work
fail2ban-client status sshd

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

ثغرة CVE غير المصححة خطر أكبر من إعادة التشغيل. unattended-upgrades في Debian يثبت التحديثات الأمنية من تلقاء نفسه:

apt install -y unattended-upgrades

# answer Yes to auto-install updates
dpkg-reconfigure -plow unattended-upgrades

الإعداد الافتراضي في /etc/apt/apt.conf.d/50unattended-upgrades يسحب من حزمة الأمان فقط — وهو ما تريده على الخادم: إصلاحات أمنية تلقائيًا، وكل شيء آخر عندما تختار.

6. أوقف ما لا تشغّله

كل خدمة قيد التشغيل هي سطح هجوم يجب عليك تصحيحه. شاهد ما يستمع فعليًا:

# who is listening, on what, as which process
ss -tulpn

# everything enabled at boot
systemctl list-unit-files --state=enabled

# example: you don't run a print server — nobody does
systemctl disable --now cups

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

7. اختياري لكن موصى به: مستوى إدارة WireGuard

أقوى نسخة من أمان SSH هي SSH التي لا تواجه الإنترنت إطلاقًا. شغّل WireGuard على الخادم، واسمح بـ SSH فقط داخل النفق، وسيختفي المنفذ 22 من كل ماسح ضوئي على وجه الأرض:

apt install -y wireguard

# /etc/wireguard/wg0.conf — minimal management tunnel
# [Interface] Address = 10.8.0.1/24, ListenPort = 51820

# open the tunnel, not the shell
ufw allow 51820/udp comment 'WireGuard'
ufw allow in on wg0 to any port 22 proto tcp comment 'SSH via WG'
ufw delete allow 22/tcp

systemctl enable --now wg-quick@wg0

بعد ذلك يمكنك ssh [email protected] عبر النفق، وسيجيب عنوان IP العام على منفذ UDP واحد فقط. الدليل الكامل لـ WireGuard — المفاتيح، الأقران، إعدادات العميل، رموز QR للهاتف — موجود في الدليل المصاحب.

قائمة التحقق من 10 نقاط

نفّذ هذا الجدول بعد كل نشر جديد، ومرة أخرى بعد كل خدمة تضيفها:

#البندمكانهتحقق باستخدام
1مستخدم sudo غير جذري/etc/passwdid ops
2مصادقة SSH بالمفاتيح فقطsshd_configsshd -T | grep passwordauth
3تعطيل تسجيل الدخول بكلمة مرور الجذرsshd_configsshd -T | grep permitrootlogin
4جدار الحماية يرفض الوارد افتراضيًاufwufw status verbose
5فتح المنافذ المسماة فقطufwufw status numbered
6سجن fail2ban sshd نشطjail.localfail2ban-client status sshd
7تحديثات الأمان تلقائيةaptsystemctl status unattended-upgrades
8لا مستمعين غير مفسرينss -tulpn
9الإدارة عبر WireGuard (اختياري)wg0.confwg show
10لقطة بعد التصلبإضافة في منطقة العميل، $1.99/شهرالخدمات ← VPS الخاص بك ← اللقطات

البند 10 يستحق جملة واحدة: صلّب أولاً، ثم التقط اللقطة، بهذا الترتيب — لقطة لخادم نظيف ومصلّب هي نقطة التراجع عن كل خطأ مستقبلي. اللقطات اليومية خارج الموقع هي إضافة $1.99/شهر في منطقة العميل. ثلاثون دقيقة من الوقاية، نقرة واحدة من التأمين.

انشر خادمًا نظيفًا وصلّبه بنفسك.

صورة Debian 13، وصول جذري كامل خلال 55 ثانية، عنوان IP نظيف مُفحص ضد أكثر من 40 قائمة سوداء. من $5.99/شهر.

العربية