آموزش افزایش امنیت سرور لینوکسی (چکلیست کامل و گامبهگام)

هر سروری که به اینترنت متصله، هدف دائمی رباتها و اسکنرهای خودکاره که دنبال پورتهای باز و رمزهای ضعیف میگردن. خبر خوب اینه که با چند تنظیم اصولی میتونید بخش بزرگی از این ریسک رو از بین ببرید. در این مقاله یک چکلیست عملی و گامبهگام برای افزایش امنیت سرور لینوکسی (Ubuntu/CentOS/Debian) رو با هم مرور میکنیم.
۱. غیرفعال کردن ورود مستقیم root
اجازه ندید کسی مستقیم با کاربر root وارد سرور بشه. یک کاربر عادی با دسترسی sudo بسازید:
adduser myuser
usermod -aG sudo myuser
سپس فایل تنظیمات SSH رو باز کنید و ورود root رو غیرفعال کنید:
sudo nano /etc/ssh/sshd_config
# این خط رو پیدا و ویرایش کنید:
PermitRootLogin no
۲. استفاده از کلید SSH بهجای رمز عبور
ورود با کلید (Key-based Authentication) بهمراتب امنتر از رمز عبوره چون در برابر حملات Brute-force عملاً غیرقابل نفوذه.
# روی کامپیوتر خودتون (نه سرور):
ssh-keygen -t ed25519
# انتقال کلید عمومی به سرور:
ssh-copy-id myuser@server-ip
بعد از تست موفق ورود با کلید، ورود با رمز عبور رو کاملاً غیرفعال کنید:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no

۳. تغییر پورت پیشفرض SSH
بیشتر رباتهای اسکنر فقط پورت ۲۲ رو چک میکنن. تغییر پورت به یک عدد دلخواه (مثلاً ۲۲۲۲) باعث کاهش چشمگیر تلاشهای خودکار میشه (این کار جایگزین امنیت واقعی نیست، ولی نویز حملات رو کم میکنه):
sudo nano /etc/ssh/sshd_config
Port 2222
sudo systemctl restart sshd
⚠️ قبل از قطع اتصال فعلی، حتماً با یک ترمینال جدید و پورت جدید تست کنید که وصل میشید، وگرنه ممکنه از سرور قفل بشید.
۴. فعالسازی فایروال
فقط پورتهایی که واقعاً لازمشون دارید (SSH, HTTP, HTTPS) رو باز بذارید. برای Ubuntu/Debian از UFW استفاده کنید:
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
برای CentOS/RHEL از firewalld:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
۵. نصب Fail2Ban برای مسدودسازی خودکار IPهای مشکوک
Fail2Ban بهصورت خودکار IPهایی که چندبار تلاش ناموفق برای ورود داشتن رو برای مدتی مسدود میکنه:
sudo apt install fail2ban -y # یا: sudo yum install fail2ban -y
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

۶. بهروزرسانی منظم سیستم
بسیاری از حملات موفق از آسیبپذیریهای شناختهشدهای استفاده میکنن که وصله امنیتیشون از قبل منتشر شده. بهروزرسانی خودکار رو فعال کنید:
# Ubuntu/Debian
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades
# CentOS/RHEL/Rocky/Alma
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer
۷. محدود کردن دسترسی دیتابیس
اگه سرویس دیتابیسی مثل MySQL/MariaDB دارید، مطمئن بشید فقط از localhost یا IPهای مشخص قابل دسترسیه، نه از کل اینترنت:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 127.0.0.1
۸. مانیتورینگ و بکاپ منظم
- از ابزارهایی مثل Netdata یا Grafana برای مانیتور کردن مصرف منابع و فعالیتهای غیرعادی استفاده کنید.
- بکاپ خودکار و منظم (روزانه/هفتگی) از دیتابیس و فایلهای مهم بگیرید و در محلی جدا از سرور اصلی نگه دارید.
- لاگهای سرور (
/var/log/auth.logیا/var/log/secure) رو هر از گاهی بررسی کنید.

جمعبندی
امنیت سرور یک اقدام یکباره نیست، بلکه یک فرآیند مداومه. با پیادهسازی این ۸ مورد — از غیرفعال کردن ورود root و استفاده از کلید SSH گرفته تا فایروال، Fail2Ban، بهروزرسانی خودکار و بکاپ منظم — سطح امنیت سرور شما بهطور چشمگیری بالا میره و ریسک نفوذ و از دست رفتن اطلاعات به حداقل میرسه.