امنیت

چک‌لیست اولیه برای ارتقای امنیت سرور لینوکس تازه

راهنمای عملی برای سخت‌سازی سرور لینوکس تازه: ساخت کاربر غیر روت، پیکربندی SSH با کلید، فایروال، به‌روزرسانی خودکار و fail2ban — با مثال‌های دقیق.

امنیت

چرا امنیت سرور لینوکس از روز اول مهم است؟

وقتی یک سرور لینوکس تازه را بالا می‌آورید، معمولاً فقط چند دقیقه فرصت دارید تا آن را در برابر حملات خودکار ایمن کنید. اسکنرهای اینترنتی به محض باز شدن پورت ۲۲، شروع به تلاش برای ورود با نام‌های کاربری رایج مثل root و admin می‌کنند. اگر این مراحل را به تعویق بیندازید، احتمالاً در همان ساعات اولیه، صدها تلاش ناموفق در لاگ‌های auth.log خواهید دید.

در این مقاله، یک چک‌لیست عملی و مرحله‌به‌مرحله برای امنیت سرور لینوکس تازه ارائه می‌دهیم. فرض می‌کنیم با یک سرور اوبونتو ۲۲.۰۴ یا ۲۴.۰۴ کار می‌کنید، اما تقریباً همه دستورات روی دبیان و دیگر توزیع‌های مبتنی بر آن نیز کار می‌کنند. هدف این است که در کمتر از ۳۰ دقیقه، سطح حمله سرور را به حداقل برسانید.

۱. ساخت کاربر غیر روت و ورود امن با SSH

اولین و مهم‌ترین قدم، قطع کردن ورود مستقیم با کاربر root است. روت در لینوکس اختیار کامل دارد و اگر رمز عبور آن لو برود، مهاجم کل سیستم را در اختیار خواهد گرفت. به جای آن، یک کاربر معمولی با دسترسی sudo بسازید و از آن برای مدیریت روزانه استفاده کنید.

ایجاد کاربر جدید

با کاربر روت وارد سرور شوید و دستورات زیر را اجرا کنید:

adduser myuser
usermod -aG sudo myuser

دستور اول کاربر myuser را با یک دایرکتوری خانگی می‌سازد و از شما رمز عبور می‌خواهد. دستور دوم او را به گروه sudo اضافه می‌کند تا بتواند دستورات مدیریتی اجرا کند. حالا از سیستم خارج شوید و با کاربر جدید وارد شوید تا مطمئن شوید همه‌چیز درست کار می‌کند.

پیکربندی کلید SSH به جای رمز عبور

رمز عبور را می‌توان با حملات brute-force حدس زد، اما کلید عمومی SSH از نظر ریاضی شکستن آن تقریباً غیرممکن است. روی سیستم محلی خود (نه سرور) یک جفت کلید بسازید:

ssh-keygen -t ed25519 -a 100

الگوریتم ed25519 سریع‌تر و امن‌تر از RSA است و کلید کوتاه‌تری تولید می‌کند. اگر سرور شما نسخه قدیمی OpenSSH دارد، می‌توانید از ssh-keygen -t rsa -b 4096 استفاده کنید. سپس کلید عمومی را به سرور منتقل کنید:

ssh-copy-id myuser@your-server-ip

این دستور کلید عمومی شما را به فایل ~/.ssh/authorized_keys کاربر myuser اضافه می‌کند. حالا با ssh myuser@your-server-ip وارد شوید و مطمئن شوید که بدون رمز عبور وارد می‌شوید.

بستن ورود با رمز عبور و روت

فایل پیکربندی SSH را ویرایش کنید:

sudo nano /etc/ssh/sshd_config

این خطوط را تغییر دهید یا اضافه کنید:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers myuser

خط AllowUsers فقط به کاربر مشخص‌شده اجازه ورود می‌دهد و یک لایه امنیتی اضافی است. بعد از اعمال تغییرات، سرویس SSH را ری‌استارت کنید:

sudo systemctl restart sshd
اشتباه رایج: قبل از بستن ورود با رمز عبور، حتماً در یک ترمینال جداگانه با کلید SSH وارد شوید. اگر کلید شما درست کپی نشده باشد، بعد از ری‌استارت سرویس، دیگر راهی برای ورود به سرور نخواهید داشت. همیشه یک اتصال دوم را باز نگه دارید تا از صحت تنظیمات مطمئن شوید.

۲. پیکربندی فایروال با UFW

فایروال اولین خط دفاعی در برابر دسترسی‌های غیرمجاز به پورت‌های باز است. در اوبونتو، ابزار پیش‌فرض UFW (Uncomplicated Firewall) است که مدیریت iptables را ساده می‌کند.

فعال‌سازی و تنظیم قوانین پایه

قبل از فعال کردن فایروال، حتماً پورت SSH را باز کنید تا اتصال شما قطع نشود:

sudo ufw allow OpenSSH
sudo ufw enable

دستور اول به‌صورت خودکار پورت ۲۲ را باز می‌کند. اگر SSH شما روی پورت دیگری است، از sudo ufw allow 2222/tcp استفاده کنید. حالا اگر وب‌سرور یا سرویس دیگری دارید، پورت‌های مربوطه را باز کنید:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

وضعیت فایروال را با sudo ufw status verbose بررسی کنید. خروجی باید چیزی شبیه این باشد:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

اگر سرویس خاصی مثل MySQL دارید که فقط باید از داخل شبکه به آن دسترسی داشت، به جای باز کردن پورت برای همه، از sudo ufw allow from 192.168.1.0/24 to any port 3306 استفاده کنید.

محدود کردن دسترسی به پورت SSH

برای افزایش امنیت سرور لینوکس، می‌توانید دسترسی به پورت ۲۲ را فقط به IP خودتان محدود کنید:

sudo ufw allow from YOUR_IP to any port 22 proto tcp

اگر IP شما ثابت نیست، این کار را نکنید؛ در عوض به سراغ fail2ban بروید که در بخش بعدی توضیح می‌دهیم.

۳. فعال‌سازی به‌روزرسانی خودکار امنیتی

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

نصب و پیکربندی unattended-upgrades

در اوبونتو، این ابزار معمولاً از قبل نصب است. اگر نه، آن را نصب کنید:

sudo apt update
sudo apt install unattended-upgrades

سپس فایل پیکربندی را ویرایش کنید:

sudo dpkg-reconfigure --priority=low unattended-upgrades

در پنجره بازشده گزینه Yes را انتخاب کنید. برای تنظیمات دقیق‌تر، فایل /etc/apt/apt.conf.d/50unattended-upgrades را باز کنید و مطمئن شوید که خط زیر فعال است:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};

این تنظیم فقط به‌روزرسانی‌های امنیتی را نصب می‌کند و از نصب خودکار بسته‌های جدید که ممکن است سیستم را خراب کنند، جلوگیری می‌کند. برای بررسی اینکه سرویس درست کار می‌کند، لاگ آن را ببینید:

sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log

۴. نصب و پیکربندی fail2ban برای محافظت در برابر حملات brute-force

حتی با غیرفعال کردن ورود با رمز عبور، سرویس‌هایی مثل SSH و وب‌سرور ممکن است همچنان در معرض حملات باشند. fail2ban یک ابزار متن‌باز است که لاگ‌ها را مانیتور می‌کند و IPهایی که رفتار مشکوک دارند را به‌طور موقت مسدود می‌کند.

نصب و راه‌اندازی پایه

sudo apt install fail2ban

به‌جای ویرایش فایل اصلی پیکربندی، یک فایل محلی بسازید که اولویت بالاتری دارد:

sudo nano /etc/fail2ban/jail.local

محتوای زیر را در آن قرار دهید:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

این تنظیمات یعنی اگر در مدت ۱۰ دقیقه (findtime) سه بار (maxretry) ورود ناموفق داشته باشید، IP شما به مدت یک ساعت (bantime) مسدود می‌شود. بعد از ذخیره فایل، سرویس را ری‌استارت کنید:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

بررسی وضعیت و تنظیمات پیشرفته

برای دیدن لیست IPهای مسدودشده:

sudo fail2ban-client status sshd

خروجی شامل تعداد IPهای مسدودشده و لیست آنهاست. اگر وب‌سرور nginx دارید، می‌توانید یک jail مشابه برای آن بسازید:

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 1800

فیلترهای آماده در پوشه /etc/fail2ban/filter.d/ قرار دارند و می‌توانید برای سرویس‌های مختلف مثل Postfix یا ProFTPD هم jail بسازید.

نکته مهم: اگر از Docker استفاده می‌کنید، fail2ban به‌صورت پیش‌فرض IP کانتینرها را می‌بیند نه IP واقعی مهاجم. برای حل این مشکل باید شبکه Docker را به‌صورت host تنظیم کنید یا از فیلترهای مخصوص Docker استفاده کنید.

۵. بررسی نهایی و نکات تکمیلی

بعد از انجام این مراحل، چند بررسی نهایی انجام دهید تا مطمئن شوید همه‌چیز درست کار می‌کند.

تست امنیت سرور لینوکس از بیرون

از یک ابزار اسکن پورت مثل nmap روی سیستم محلی خود استفاده کنید:

nmap -sS -p- your-server-ip

این دستور تمام پورت‌های باز را نشان می‌دهد. اگر پورتی باز است که نباید باشد، فایروال را بررسی کنید. همچنین می‌توانید از سرویس‌های آنلاین مثل ssh-audit.com برای بررسی امنیت پیکربندی SSH استفاده کنید.

فعال‌سازی خودکار به‌روزرسانی‌ها و مانیتورینگ

برای اینکه از وضعیت سرور خود باخبر باشید، یک اسکریپت ساده برای ارسال ایمیل در صورت ورود موفق تنظیم کنید. فایل /etc/ssh/sshrc را بسازید:

#!/bin/sh
echo "SSH login on $(hostname) at $(date)" | mail -s "SSH Login Alert" your@email.com

و آن را اجرایی کنید:

sudo chmod +x /etc/ssh/sshrc

این روش ساده به شما کمک می‌کند تا از هر ورود غیرمنتظره باخبر شوید.

جمع‌بندی

این چک‌لیست پایه‌ای برای امنیت سرور لینوکس تازه است، اما امنیت یک فرآیند مداوم است. هر ماه لاگ‌ها را بررسی کنید، به‌روزرسانی‌ها را نصب کنید و از ابزارهایی مثل lynis برای ممیزی امنیتی استفاده کنید. اگر به دنبال یک بستر مطمئن برای اجرای این تنظیمات هستید، سرورهای ابری ServerNet با دسترسی کامل SSH و هسته لینوکس، امکان پیاده‌سازی همین مراحل را به‌صورت دقیق فراهم می‌کنند. اما مهم‌ترین نکته این است که این تنظیمات را هرگز به تعویق نیندازید — اولین ساعات بعد از نصب، بحرانی‌ترین زمان برای امنیت سرور شماست.

پشتیبانی سرورنت

تیم فنی و تحریریه‌ی سرورنت — تخصص در زیرساخت، شبکه و میزبانی وب.

خدمات امنیت
اشتراک‌گذاری:

دیدگاه‌ها ۰

هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!

دیدگاه خود را بنویسید

سرویس مرتبط

خدمات امنیت

تست نفوذ توسط متخصصان دارای مدرک OSCP، امن‌سازی زیرساخت و مانیتورینگ امنیتی ۲۴ ساعته — گزارش‌هایی که مدیر می‌فهمد و مهندس اجرا می‌کند.