تنظیمات اولیه سرور اوبونتو
از اولین SSH تا فایروال امن
یک Ubuntu تازهنصبشده برای شروع آماده است، اما پیش از انتشار وبسایت یا برنامه باید چند کار پایه را با ترتیب درست انجام دهید. این راهنما برای Ubuntu Server 24.04 نوشته شده و هدفش کاهش احتمال قفلشدن دسترسی، بهروزرسانی سیستم و ایجاد یک مسیر مدیریتی امنتر است.
پیش از تغییر تنظیمات، راه برگشت را حفظ کنید
اطلاعات اتصال شامل IP، نام کاربری و رمز اولیه را از پنل سرویس بردارید و نخستین اتصال SSH را برقرار کنید. در طول تغییر SSH و فایروال، نشست فعلی را نبندید و یک پنجرهی ترمینال دوم برای آزمایش باز نگه دارید. اگر پنل سرویس راه دسترسی کنسولی دارد، محل آن را نیز از قبل پیدا کنید. این احتیاط ساده کمک میکند اگر یک rule یا تنظیم اشتباه بود، هنوز راهی برای اصلاح آن داشته باشید.
فرمانهای این راهنما باید روی یک نصب تازه اجرا شوند. اگر سرور از قبل برنامه، کنترلپنل یا firewall سفارشی دارد، ابتدا تنظیمات فعلی را بررسی کنید؛ اجرای نسخهی عمومی راهنما روی سرور production ممکن است با پورتها یا سیاستهای موجود تداخل ایجاد کند.
ssh root@SERVER_IP
cat /etc/os-release
ip address show
سیستم را بهروزرسانی و وضعیت ریبوت را بررسی کنید
فهرست بستهها و اصلاحات امنیتی مرتب تغییر میکند. ابتدا metadata مخازن را تازه و بستههای نصبشده را ارتقا دهید. خروجی را بخوانید؛ اگر kernel یا کتابخانهی مهمی تغییر کرده باشد، ممکن است سیستم درخواست ریبوت کند. ریبوت را زمانی انجام دهید که نشستها و برنامههای لازم را در نظر گرفتهاید.
apt update
apt upgrade -y
if [ -f /var/run/reboot-required ]; then cat /var/run/reboot-required; fi
بعد از ریبوت دوباره متصل شوید و با uname -r و systemctl --failed وضعیت کلی را ببینید. خطاهای موجود را پیش از نصب stack اصلی حل کنید تا بعداً علت مشکل میان چند سرویس گم نشود.
یک کاربر مدیریتی جدا بسازید
استفادهی روزانه از root احتمال خطای پرهزینه را بالا میبرد. یک کاربر عادی بسازید و فقط برای فرمانهای مدیریتی از sudo استفاده کنید. در مثال زیر نام کاربر deploy است؛ آن را با نام دلخواه خود جایگزین کنید و برایش رمز قوی تعیین کنید.
adduser deploy
usermod -aG sudo deploy
id deploy
عضویت در گروه sudo را با خروجی id بررسی کنید. هنوز ورود root را نبندید؛ ابتدا باید ورود کاربر جدید و کلید SSH در یک نشست مستقل با موفقیت آزمایش شود.
ورود با کلید SSH را فعال و واقعاً آزمایش کنید
کلید روی رایانهی شخصی ساخته میشود، نه روی سرور. الگوریتم Ed25519 انتخاب پیشفرض مناسبی است. برای کلید یک passphrase قرار دهید و private key را به شخص دیگری ندهید. سپس public key را به حساب کاربر جدید منتقل کنید.
# روی رایانه شخصی
ssh-keygen -t ed25519
ssh-copy-id deploy@SERVER_IP
ssh deploy@SERVER_IP
در Windows جدید نیز فرمان ssh در دسترس است. اگر ssh-copy-id ندارید، محتوای فایل با پسوند .pub را با دقت در ~/.ssh/authorized_keys کاربر مقصد قرار دهید و مجوزهای پوشه و فایل را محدود نگه دارید. قبل از هر محدودسازی، در پنجرهی دوم وارد شوید و sudo -v را اجرا کنید.
تنظیم SSH را با فایل جدا و آزمون syntax تغییر دهید
Ubuntu فایلهای داخل /etc/ssh/sshd_config.d/ را میخواند. استفاده از snippet باعث میشود تغییر شما از فایل اصلی جدا بماند. چون OpenSSH برای بسیاری از directiveها نخستین مقدار خواندهشده را نگه میدارد، پیشوند 00 کمک میکند این فایل پیش از snippetهای بعدی خوانده شود. فقط پس از موفقیت ورود کلیدی، میتوانید ورود مستقیم root و ورود با رمز را غیرفعال کنید.
cat > /etc/ssh/sshd_config.d/00-parsinx-hardening.conf <<'EOF'
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
EOF
sshd -t
systemctl reload ssh
اگر sshd -t خطا داد، سرویس را reload نکنید. پس از reload نیز نشست فعلی را باز نگه دارید و یک اتصال تازه با کاربر جدید برقرار کنید. تغییر پورت SSH جایگزین کلید، فایروال و بهروزرسانی نیست و برای این راهنمای پایه ضروری محسوب نمیشود.
UFW را بدون بستن SSH فعال کنید
UFW ابزار استاندارد و سادهی Ubuntu برای مدیریت firewall است. نخست اجازهی SSH را اضافه کنید، سپس firewall را فعال کنید. هر پورت دیگر را فقط وقتی باز کنید که سرویس مربوطه نصب شده و واقعاً باید از شبکه قابل دسترس باشد.
ufw allow OpenSSH
ufw enable
ufw status verbose
برای یک وبسرور ممکن است بعداً پورتهای 80 و 443 لازم شوند، اما دیتابیس معمولاً نباید بدون ضرورت به تمام اینترنت باز شود. اگر SSH را روی پورت سفارشی تنظیم کردهاید، rule همان پورت را پیش از ufw enable اضافه کنید. بعد از هر تغییر، اتصال جدید را آزمایش کنید.
بهروزرسانی خودکار و کنترل پایانی
Ubuntu میتواند اصلاحات امنیتی را بهصورت خودکار دریافت کند. بستهی مربوط را نصب و تنظیم آن را بازبینی کنید. برای سرویس حساس، زمان ریبوت و سازگاری برنامه را نیز در برنامهی نگهداری قرار دهید؛ بهروزرسانی خودکار جای مانیتورینگ و آزمون برنامه را نمیگیرد.
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades
systemctl --failed
ss -tulpn
journalctl -p warning -b --no-pager
فهرست پورتهای listening را با انتظار خود مقایسه کنید، سرویسهای failed را بررسی کنید و زمان سیستم را با timedatectl ببینید. در پایان، روش تهیه و بازیابی دادههای برنامه را مستند کنید، کلیدها را در محل امن نگه دارید و تغییرات بعدی را مرحلهای انجام دهید. اگر هنوز سرور ندارید، صفحهی سرور مجازی Ubuntu را ببینید؛ برای مرحله بعد نیز نصب Docker آماده است.
پرسشهای پرتکرار
چه زمانی ورود root را غیرفعال کنم؟
فقط پس از آنکه ورود کاربر sudo با کلید SSH را در یک نشست دوم آزمایش کردهاید و مطمئن هستید sudo کار میکند.
آیا باید پورت SSH را تغییر دهم؟
الزامی نیست. کلید SSH، حذف ورود با رمز، محدودسازی firewall و بهروزرسانی منظم کنترلهای مهمتری هستند.
اگر بعد از فعالکردن UFW اتصال قطع شد چه کنم؟
از نشست باز فعلی یا راه دسترسی کنسولی پنل برای اصلاح rule استفاده کنید. به همین دلیل باید پیش از enable، OpenSSH را allow و نشست فعلی را باز نگه دارید.
آیا میتوانم PasswordAuthentication را روشن نگه دارم؟
از نظر فنی بله، اما پس از راهاندازی و آزمون کلید، ورود کلیدی سطح حملهی حدس رمز را کاهش میدهد.
این راهنما برای سرور دارای کنترلپنل هم مناسب است؟
ابتدا مستندات همان کنترلپنل را بررسی کنید؛ کنترلپنل ممکن است firewall، SSH یا بستههای سیستم را خودش مدیریت کند.
منابع رسمی و مطالعه بیشتر
برای یک Ubuntu تمیز آمادهای؟
منابع موردنیاز را انتخاب کنید و تنظیمات پایه را با همین چکلیست انجام دهید.