راهنما

۳۰ دقیقه اول: چک‌لیست سخت‌سازی VPS

یک VPS تازه، اولین تلاش SSH را در عرض چند دقیقه پس از دریافت IP تجربه می‌کند. این دنباله دقیقی است که من روی هر سرور جدید اجرا می‌کنم — آماده کپی‌پیست برای دبیان ۱۳، با جدول چک‌لیست در انتها.

پیشفرضها: یک تصویر تازه Debian 13 از استقرار VPSRento، شما به عنوان root از طریق SSH وارد شدهاید، و IP نمونه 185.220.101.14 است — مال خودتان را جایگزین کنید. کل زمان: حدود نیم ساعت. مراحل را به ترتیب انجام دهید؛ مرحله ۲ اگر عجله کنید میتواند شما را قفل کند.

۱. کاربر sudo خود را بسازید

کار کردن به عنوان root راهی است که تایپ اشتباه به حادثه تبدیل شود. یک کاربر واقعی بسازید، به آن sudo بدهید، و همه کارها را از آنجا انجام دهید:

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

# grant sudo
usermod -aG sudo ops

همه موارد زیر این نقطه به عنوان ops اجرا میشود، مگر اینکه خلاف آن ذکر شود.

۲. فقط کلیدهای SSH — بدون رمز عبور، بدون ورود root

احراز هویت با رمز عبور بزرگترین سوراخ در یک سرور متصل به اینترنت است. باتها تمام روز با لیستهای اعتبارنامه به پورت ۲۲ حمله میکنند. کلیدها کل این کلاس حمله را بیاثر میکنند. روی دستگاه محلی شما:

# 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 برای روت به عمد: روت همچنان میتواند با کلید از ایستگاه کاری شما احراز هویت کند، که گاهی برای بازیابی از کنسول ارائهدهنده مفید است — اما هیچ رمز عبوری هرگز کار نخواهد کرد، برای هیچکس، از هیچجا. با sshd -T | grep -E 'passwordauthentication|permitrootlogin'.

تأیید کنید. ۳. فایروال: رد پیشفرض، فقط چیزی که اجرا میکنید را باز کنید

ufw دبیان یک لایه نازک و منطقی روی 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

هر پورتی که باز میکنید باید نام و دلیلی داشته باشد. اگر نمیتوانید بگویید یک پورت برای چیست، قانونی نمیگیرد.

۴. fail2ban: رباتها را به حرکت آهسته بیندازید

با غیرفعال کردن احراز هویت رمز عبور، حمله brute force قبلاً مرده است — اما 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

۵. بهروزرسانیهای امنیتی خودکار

CVE وصلهنشده ریسک بزرگتری از راهاندازی مجدد است. unattended-upgrades دبیان بهروزرسانیهای امنیتی را بهتنهایی نصب میکند:

apt install -y unattended-upgrades

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

پیکربندی پیشفرض در /etc/apt/apt.conf.d/50unattended-upgrades فقط از مخزن امنیتی میگیرد — که همان چیزی است که در سرور میخواهید: رفع امنیتی بهصورت خودکار، بقیه چیزها وقتی خودتان انتخاب کنید.

۶. چیزی را که اجرا نمیکنید خاموش کنید

هر سرویس در حال اجرا سطح حملهای است که باید وصله کنید. ببینید واقعاً چه چیزی در حال گوش دادن است:

# 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 کد گوشی — در راهنمای همراه.

چک‌لیست ۱۰ بندی

بعد از هر استقرار جدید و دوباره بعد از هر سرویسی که اضافه می‌کنید، این جدول را مرور کنید:

#موردمحل قرارگیریبررسی با
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
6jail فعال fail2ban برای sshdjail.localfail2ban-client status sshd
7به‌روزرسانی امنیتی خودکارaptsystemctl status unattended-upgrades
8بدون listener غیرقابل توضیحss -tulpn
9مدیریت از طریق WireGuard (اختیاری)wg0.confwg show
10اسنپ‌شات بعد از سخت‌سازیافزونه ناحیه کلاینت، $1.99/ماهسرویس‌ها → VPS شما → اسنپ‌شات‌ها

مورد ۱۰ یک جمله می‌خواهد: اول سخت‌سازی، دوم اسنپ‌شات، به همین ترتیب — اسنپ‌شات یک سرور تمیز و سخت‌شده، برگشت شما برای هر اشتباه آینده است. اسنپ‌شات روزانه خارج از سایت یک افزونه $1.99/ماه در ناحیه کلاینت است. سی دقیقه پیشگیری، یک کلیک بیمه.

یک سرور تمیز مستقر کنید و خودتان آن را سخت‌سازی کنید.

ایمیج Debian 13، دسترسی کامل ریشه در ۵۵ ثانیه، IP تمیز بررسی‌شده در برابر بیش از ۴۰ لیست سیاه. از $5.99/ماه.

فارسی