راه‌اندازی اولیه و امن‌سازی سرور اوبونتو

سرور تازه با دسترسی root و رمز عبور تحویل داده می‌شود و در عرض چند ساعت هدف اسکن ربات‌ها قرار می‌گیرد. این چک‌لیست ده‌دقیقه‌ای پایهٔ امنیت و سلامت هر سرور جدید است.

امنیت و فایروالمقدماتی15 دقیقه

۱به‌روزرسانی سیستم

اولین کار: بسته‌ها و پچ‌های امنیتی را نصب کنید و در صورت نیاز ریبوت کنید.

bash
apt update && apt upgrade -y
apt install -y curl ufw fail2ban unattended-upgrades
[ -f /var/run/reboot-required ] && reboot

۲ساخت کاربر غیر root با دسترسی sudo

کار روزمره را با کاربر عادی انجام دهید و root را فقط در صورت نیاز با sudo استفاده کنید.

bash
adduser deploy
usermod -aG sudo deploy
id deploy

۳کلید SSH و غیرفعال کردن رمز عبور

روی کامپیوتر خودتان کلید بسازید، به سرور کپی کنید و پیش از هر تغییر دیگر مطمئن شوید ورود با کلید کار می‌کند.

bash
# روی کامپیوتر شما
ssh-keygen -t ed25519 -C "me@laptop"
ssh-copy-id deploy@SERVER_IP
ssh deploy@SERVER_IP   # باید بدون رمز وارد شوید

۴امن‌سازی SSH

بعد از اطمینان از ورود با کلید (و باز نگه داشتن یک نشست SSH دیگر)، رمز عبور و ورود مستقیم root را غیرفعال کنید.

bash
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3

sudo sshd -t && sudo systemctl reload ssh

قبل از بستن نشست فعلی، در یک ترمینال جدید ورود با کلید را تست کنید؛ اشتباه در این مرحله سرور را قفل می‌کند.

۵فایروال ufw

فقط پورت‌های لازم را باز کنید. اول SSH را مجاز کنید و بعد فایروال را فعال کنید.

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

پیش از ufw enable مطمئن شوید OpenSSH مجاز است وگرنه دسترسی شما قطع می‌شود.

۶fail2ban برای جلوگیری از حدس رمز

بعد از چند تلاش ناموفق IP مهاجم به‌طور موقت مسدود می‌شود. تنظیم را در jail.local بنویسید.

bash
sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

۷به‌روزرسانی امنیتی خودکار

پچ‌های امنیتی را خودکار نصب کنید تا آسیب‌پذیری‌های جدید مدت طولانی باز نماند.

bash
sudo dpkg-reconfigure -plow unattended-upgrades
systemctl status unattended-upgrades --no-pager

۸منطقهٔ زمانی، NTP و نام سرور

ساعت درست برای لاگ‌ها، cron و گواهی SSL ضروری است.

bash
sudo timedatectl set-timezone Asia/Tehran
sudo timedatectl set-ntp true
sudo hostnamectl set-hostname web-01
timedatectl

۹بررسی نهایی

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

bash
sudo ss -tlnp
sudo ufw status
systemctl --failed
last -n 5

پرسش‌های پرتکرار دربارهٔ راه‌اندازی اولیه و امن‌سازی سرور اوبونتو

آیا باید پورت SSH را عوض کنم؟

تغییر پورت فقط نویز لاگ ربات‌ها را کم می‌کند و امنیت واقعی نمی‌دهد. مهم‌تر از آن ورود با کلید، غیرفعال کردن رمز و fail2ban است. اگر پورت را عوض کردید ابتدا آن را در ufw باز کنید.