ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / گیت و DevOps

چک‌لیست امن‌سازی سرور لینوکس: قفل کردن SSH، فایروال UFW و Fail2ban

ورود با کلید Ed25519 و بستن ورود با رمز عبور، تغییر پورت، راه‌اندازی فایروال UFW، نصب Fail2ban برای مسدودسازی اسکنرها و آپدیت خودکار بسته‌های امنیتی.

۱۱ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

در کمتر از ۵ دقیقه پس از روشن شدن یک سرور لینوکس با IP عمومی، اسکنرهای خودکار سراغ پورت ۲۲ می‌آیند و شروع به امتحان کردن نام‌های کاربری و رمزهای رایج می‌کنند. یک سرور پیکربندی‌نشده، ریسک بزرگی برای کل کسب‌وکار است. با این چک‌لیست قدم‌به‌قدم، راه نفوذ مهاجمان را ببندید.

قدم اول: ساخت کلید SSH و ورود بدون رمز

کلیدهای مدرن Ed25519 سریع‌تر، سبک‌تر و امن‌تر از کلیدهای قدیمی RSA هستند. روی سیستم خودتان (لپ‌تاپ) کلید را بسازید:

bash
# روی سیستم خودتان اجرا کنید
ssh-keygen -t ed25519 -C "admin@jolfacloud"

# کپی کردن کلید عمومی روی سرور
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@203.0.113.10

حالا یک بار بدون رمز با کلید وصل شوید تا مطمئن شوید کار می‌کند:

bash
ssh -i ~/.ssh/id_ed25519 user@203.0.113.10

قدم دوم: غیرفعال‌سازی رمز عبور و بستن دسترسی مستقیم root

فایل تنظیمات SSH را با یک ادیتور باز کنید (/etc/ssh/sshd_config یا یک فایل تمیز در /etc/ssh/sshd_config.d/01-hardening.conf):

ini
# تغییر پورت پیش‌فرض (اختیاری؛ حجم اسکن‌های رباتی و لاگ را خیلی کم می‌کند، ولی جای امنیت واقعی را نمی‌گیرد)
Port 2222

# root فقط با کلید وارد شود (اگر کاربر sudo جدا دارید، no بگذارید)
PermitRootLogin prohibit-password

# ورود با رمز عبور کاملاً خاموش شود (فقط کلید مجاز است)
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes

# سقف دفعات تلاش مجدد
MaxAuthTries 3

# قطع اتصالات معلق و بیکار
ClientAliveInterval 300
ClientAliveCountMax 2
bash
sudo sshd -t                 # اگر خروجی نداشت یعنی فایل سالم است
sudo systemctl restart ssh   # یا sshd

# اوبونتو ۲۴.۰۴ به بعد: SSH با ssh.socket روشن می‌شود و پورت را از همین کانفیگ می‌خواند
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket

قدم سوم: فایروال با UFW

پیش‌فرضِ امن، بستن همه چیز و فقط باز کردن پورت‌های ضروری است:

bash
# تنظیم سیاست پیش‌فرض: رد ورود، قبول خروج
sudo ufw default deny incoming
sudo ufw default allow outgoing

# باز کردن پورت جدید SSH (اگر ۲۲۲۲ گذاشتید)
sudo ufw allow 2222/tcp comment "SSH custom port"

# باز کردن پورت‌های وب
sudo ufw allow 80/tcp comment "HTTP"
sudo ufw allow 443/tcp comment "HTTPS"

# فعال‌سازی فایروال
sudo ufw enable
sudo ufw status verbose

قدم چهارم: نصب و راه‌اندازی Fail2ban

ابزار Fail2ban لاگ‌های سرور را مانیتور می‌کند و اگر یک IP چند بار تلاش ناموفق برای ورود به SSH یا سرویس‌های دیگر داشت، آن را در فایروال بلاک می‌کند:

bash
sudo apt update && sudo apt install -y fail2ban

فایل jail.conf را دست نزنید (با آپدیت بازنویسی می‌شود). یک فایل تازهٔ /etc/fail2ban/jail.local بسازید که فقط همین تنظیمات خودتان را داشته باشد:

ini
[DEFAULT]
# مدت زمان مسدودسازی (۱ روز)
bantime = 1d
# پنجره بررسی تلاش‌ها (۱۰ دقیقه)
findtime = 10m
# حداکثر تلاش مجاز
maxretry = 3
# نادیده گرفتن IP دفتر یا سیستم خودتان
ignoreip = 127.0.0.1/8 ::1 198.51.100.25

[sshd]
enabled = true
port = 2222
backend = systemd
bash
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd      # مشاهده وضعیت و تعداد IPهای بلاک‌شده

قدم پنجم: دریافت خودکار وصله‌های امنیتی

بسته‌های لینوکس هر روز آپدیت امنیتی دریافت می‌کنند. با unattended-upgrades بگذارید سرور وصله‌های بحرانی را خودش بدون معطلی نصب کند:

bash
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

قدم ششم: بررسی پورت‌های باز سرور

هر از گاهی بررسی کنید کدام سرویس‌ها روی شبکه باز هستند تا اگر دیتابیسی (مثل Redis یا MySQL) اشتباهاً روی پورت عمومی گوش می‌دهد، فوراً متوجه شوید:

bash
sudo ss -tulpn

پورت دیتابیس‌ها (3306 برای MariaDB و 6379 برای Redis) هرگز نباید روی 0.0.0.0 باز باشند و باید به 127.0.0.1 یا شبکه داخلی محدود شوند.

سرور مجازی لینوکس با دسترسی root برای پیاده کردن همین چک‌لیستدیدن پلن‌های سرور مجازی

منابع

  1. مستندات رسمی OpenSSH Security Best Practices www.openssh.com/manual.html
  2. راهنمای CIS Benchmarks برای امن‌سازی توزیع‌های اوبونتو و دبیان www.cisecurity.org/benchmark/ubuntu_linux
  3. مخزن رسمی Fail2ban github.com/fail2ban/fail2ban