نصب لینوکس روی یک سرور، از نظر مراحل شبیه نصب روی لپ تاپ است، ولی تصمیم هایی که در همان نیم ساعت اول می گیرید تا سال ها با شما می مانند: توزیع و نسخه، حالت بوت، ساختار RAID و پارتیشن بندی. تغییر دادن این ها بعد از اینکه سرویس ها روی سرور نشستند، یعنی توقف کار. در این راهنما مسیر نصب لینوکس روی سرور را از تنظیمات سخت افزار تا اولین کارهای امنیتی مرور می کنیم.
نصب روی سرور چه فرقی با نصب دسکتاپ دارد؟
- بدون محیط گرافیکی: سرور با کمترین بسته ممکن نصب می شود. هر سرویسی که نصب نشود، یک سطح حمله کمتر و یک به روزرسانی کمتر است.
- دسترسی از راه دور از روز اول: شما معمولا فیزیکی کنار سرور نیستید. نصب از طریق کنسول مدیریتی (iLO در سرورهای HPE، iDRAC در Dell یا IPMI در برندهای دیگر) انجام می شود.
- دیسک ها روی کنترلر RAID هستند: پیکربندی RAID پیش از نصب و در فرم ور کنترلر انجام می شود، نه در نصاب لینوکس.
- آدرس ثابت: سرور با IP ثابت و رکورد DNS مشخص کار می کند، نه با DHCP.
- سیاست به روزرسانی: روی سرور، به روزرسانی برنامه ریزی می شود؛ ریستارت خودکار وسط روز کاری قابل قبول نیست.
- قابل تکرار بودن: نصب سرور بهتر است با فایل خودکارسازی (kickstart در خانواده Red Hat یا autoinstall در اوبونتو) انجام شود تا سرور بعدی دقیقا مثل همین یکی بالا بیاید.
انتخاب توزیع: AlmaLinux یا Ubuntu LTS؟
برای سرور، توزیع پایدار با چرخه پشتیبانی بلند انتخاب می شود. دو گزینه رایج در ایران AlmaLinux (جانشین رایگان و سازگار با RHEL) و Ubuntu Server LTS هستند.
| موضوع | AlmaLinux | Ubuntu Server LTS |
|---|---|---|
| چرخه پشتیبانی | چند ساله و طولانی؛ نسخه 10 تا سال 2035 به روزرسانی امنیتی دارد | پنج سال پشتیبانی استاندارد؛ نسخه 24.04 تا 2029 و نسخه 26.04 تا 2031 |
| مدیریت بسته | dnf و بسته های rpm | apt و بسته های deb |
| سیاست نسخه بسته ها | محافظه کارانه و پایدار، مناسب سرویس های بلندمدت | بسته های تازه تر، مناسب محیط های توسعه و کانتینر |
| امنیت پیش فرض | SELinux در حالت enforcing و فایروال firewalld | AppArmor و فایروال ufw |
| نکته سخت افزاری | نسخه 10 به صورت پیش فرض برای معماری x86-64-v3 ساخته می شود و برای سرورهای قدیمی تر نسخه جداگانه x86-64-v2 منتشر شده است | روی سخت افزار قدیمی تر هم محدودیت مشابهی ندارد |
دو معیار عملی در انتخاب کمک می کند. اول، اگر قرار است کنترل پنل هاست (cPanel یا DirectAdmin) نصب شود، اول فهرست سیستم عامل های پشتیبانی شده همان کنترل پنل را ببینید؛ این فهرست تصمیم را جای شما می گیرد. دوم، تیم شما با کدام خانواده راحت تر است. توزیعی که تیمتان بلد نیست، در شب حادثه به ضرر شما کار می کند.
پیش از نصب: کارهایی که در سخت افزار انجام می شود
- فرم ور سرور، کنترلر RAID و کارت شبکه را به روز کنید. انجام این کار بعد از راه افتادن سرویس ها سخت تر است.
- در کنترلر RAID، آرایه را بسازید. برای سرور سرویس معمولا RAID 1 یا RAID 10 انتخاب می شود؛ RAID 5 روی دیسک های بزرگ زمان بازسازی طولانی دارد.
- حالت بوت را روی UEFI بگذارید و همان را در همه سرورهایتان یکسان نگه دارید. جابه جایی بین UEFI و Legacy بعد از نصب یعنی نصب دوباره.
- پورت مدیریتی (iLO یا iDRAC) را با IP ثابت روی یک VLAN جدا تنظیم کنید و رمز پیش فرض آن را عوض کنید. این پورت هیچ وقت نباید مستقیم روی اینترنت باشد.
- در BIOS، پروفایل توان را روی حالت کارایی بگذارید و اگر قرار است مجازی سازی نصب شود، قابلیت های VT-x یا AMD-V و IOMMU را فعال کنید.
آماده کردن رسانه نصب و بوت
فایل ISO را از سایت رسمی بگیرید و چک سام آن را بررسی کنید. یک ISO ناقص، خطاهایی وسط نصب می دهد که وقت زیادی تلف می کند.
sha256sum AlmaLinux-9-latest-x86_64-minimal.iso
# خروجی را با مقدار فایل CHECKSUM سایت رسمی مقایسه کنید
ساده ترین راه در سرورهای دارای کنسول مدیریتی، استفاده از Virtual Media است: ISO را در iLO یا iDRAC به عنوان درایو مجازی متصل می کنید و سرور را از روی همان بوت می کنید. اگر رسانه USB لازم دارید، روی لینوکس با dd می سازید (نام دستگاه را با دقت بررسی کنید، این دستور بازگشت ندارد):
lsblk
sudo dd if=/path/to/server.iso of=/dev/sdX bs=4M status=progress oflag=sync
برای نصب چند سرور پشت سر هم، PXE به همراه فایل kickstart یا autoinstall صرفه بیشتری دارد.
پارتیشن بندی سرور
پارتیشن بندی پیش فرض همه چیز را در یک فضای بزرگ می ریزد. روی سرور، جدا کردن چند مسیر ارزش دارد؛ مهم ترین دلیلش این است که لاگ یا فایل موقت یک سرویس نتواند کل ریشه سیستم را پر کند و سرور را از کار بیندازد.
| مسیر | اندازه پیشنهادی | توضیح |
|---|---|---|
| /boot/efi | حدود 1 گیگابایت | فقط در حالت بوت UEFI، با فایل سیستم FAT32 |
| /boot | 1 تا 2 گیگابایت | خارج از LVM؛ فضای کم باعث می شود به روزرسانی کرنل شکست بخورد |
| / | 40 تا 60 گیگابایت | سیستم عامل و بسته ها |
| /var | بسته به سرویس | محل داده دیتابیس، ایمیل، کانتینرها و کش ها |
| /var/log | 10 تا 20 گیگابایت | جدا کردنش جلوی پر شدن ریشه توسط لاگ را می گیرد |
| فضای آزاد در گروه LVM | باقی دیسک | همه فضا را از ابتدا مصرف نکنید تا بعدا با lvextend هر پارتیشن را بزرگ کنید |
همه این ها را داخل LVM بسازید. بدون LVM، بزرگ کردن یک پارتیشن بعدا کار سختی است. فایل سیستم پیش فرض AlmaLinux یعنی XFS فقط قابل بزرگ شدن است و کوچک نمی شود؛ ext4 در اوبونتو قابل کوچک کردن است ولی برای این کار باید سرویس ها متوقف شوند. میزان swap را متناسب با حافظه و توصیه نرم افزاری که قرار است اجرا شود تعیین کنید.
نصب Ubuntu Server
نصاب اوبونتو سرور، Subiquity، متنی است و در کنسول iLO هم بدون مشکل کار می کند. در مسیر نصب به این چند نکته دقت کنید:
- در مرحله شبکه، همان جا IP ثابت را وارد کنید تا سرور بعد از اولین بوت با آدرس مشخص بالا بیاید.
- گزینه نصب کمینه (minimized) را انتخاب کنید مگر اینکه به ابزارهای اضافه نیاز داشته باشید.
- در بخش ذخیره سازی، حالت سفارشی را انتخاب کنید و ساختار LVM بالا را بسازید.
- گزینه نصب OpenSSH server را تیک بزنید و اگر کلید عمومی شما روی GitHub یا Launchpad هست، همان جا وارد کنید.
- بسته های snap پیشنهادی را نصب نکنید؛ روی سرور سرویس، هر بسته اضافه یعنی نگهداری اضافه.
وارد کردن کلید در نصاب، ورود با رمز را غیرفعال نمی کند. این کار را بعد از نصب خودتان انجام می دهید.
نصب AlmaLinux
نصاب Anaconda گرافیکی است و از طریق کنسول مدیریتی قابل استفاده است. در صفحه Software Selection گزینه Minimal Install را انتخاب کنید. در بخش شبکه، نام میزبان کامل (مثل db01.example.local) و IP ثابت را وارد کنید و کارت شبکه را روی اتصال خودکار بگذارید؛ فراموش کردن همین تیک، یعنی سروری که بعد از ریبوت شبکه ندارد.
برای root یک رمز قوی بگذارید، اجازه ورود root با SSH را در همان صفحه ندهید و یک کاربر معمولی با دسترسی مدیر بسازید. بعد از نصب، فایل /root/anaconda-ks.cfg همان پیکربندی را به شکل kickstart نگه داشته است؛ آن را بردارید تا نصب سرور بعدی یکسان و سریع باشد.
تنظیم شبکه بعد از نصب
در اوبونتو، پیکربندی شبکه با netplan انجام می شود و فایل ساخته شده توسط نصاب معمولا در /etc/netplan/00-installer-config.yaml است:
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses:
- 192.168.10.20/24
routes:
- to: default
via: 192.168.10.1
nameservers:
addresses: [192.168.10.10, 1.1.1.1]
فایل باید فقط برای root قابل خواندن باشد، وگرنه netplan هشدار می دهد. برای اعمال، به جای apply از try استفاده کنید؛ اگر تنظیمات غلط باشد و ارتباط قطع شود، خودش بعد از چند ثانیه برمی گردد:
sudo chmod 600 /etc/netplan/00-installer-config.yaml
sudo netplan try
در AlmaLinux 9 و 10 کار شبکه با NetworkManager انجام می شود و فایل های قدیمی ifcfg دیگر وجود ندارند؛ پیکربندی ها در /etc/NetworkManager/system-connections/ ذخیره می شوند. برای IP ثابت:
nmcli connection modify eno1 ipv4.method manual \
ipv4.addresses 192.168.10.20/24 ipv4.gateway 192.168.10.1 \
ipv4.dns "192.168.10.10 1.1.1.1"
nmcli connection up eno1
اولین کارهای امنیتی بعد از نصب
سروری که تازه بالا آمده و روی شبکه است، از همان دقیقه اول اسکن می شود. این کارها را پیش از انتقال هر سرویسی انجام دهید.
- همه بسته ها را به روز کنید:
sudo apt update && sudo apt upgradeیاsudo dnf upgrade. - یک کاربر معمولی با دسترسی sudo بسازید و کلید عمومی خود را در
~/.ssh/authorized_keysاو بگذارید. - پیش از بستن ورود با رمز، با یک نشست جدا ورود با کلید را تست کنید. بستن در، وقتی کلید دستتان نیست، یعنی مراجعه به دیتاسنتر.
- تنظیمات SSH را در یک فایل جداگانه بنویسید تا با به روزرسانی بسته بازنویسی نشود.
- فایروال را فعال کنید و فقط پورت های لازم را باز بگذارید.
- به روزرسانی های امنیتی خودکار را فعال کنید.
- منطقه زمانی و همگام سازی ساعت را تنظیم کنید؛ لاگ با ساعت غلط در بررسی حادثه بی ارزش است.
- SELinux را در AlmaLinux روی enforcing نگه دارید. غیرفعال کردن آن یک راه حل نیست.
- agent مانیتورینگ و بکاپ را همین ابتدا نصب کنید، نه بعد از اولین مشکل.
نمونه فایل تنظیم SSH:
# /etc/ssh/sshd_config.d/10-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
بعد از ویرایش، اول درستی فایل را بررسی و سپس سرویس را ریستارت کنید. در اوبونتو 24.04 به بعد سرویس ssh با socket فعال می شود، بنابراین اگر پورت را تغییر داده اید، ریستارت ssh.service به تنهایی کافی نیست:
sudo sshd -t
# AlmaLinux
sudo systemctl restart sshd
# Ubuntu
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket ssh
فایروال و به روزرسانی خودکار:
# Ubuntu
sudo ufw default deny incoming
sudo ufw allow from 192.168.10.0/24 to any port 22 proto tcp
sudo ufw enable
sudo apt install -y unattended-upgrades
# AlmaLinux
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo dnf install -y dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
چک لیست تحویل سرور
- نام میزبان، IP، VLAN و رکورد DNS ثبت شده باشد.
- ورود با کلید کار کند و ورود root با رمز بسته باشد.
- وضعیت آرایه RAID و سلامت دیسک ها بررسی و ابزار پایش آن نصب شده باشد.
- فضای آزاد در گروه LVM برای رشد بعدی باقی مانده باشد.
- بکاپ تعریف شده و یک بار بازیابی آزمایشی انجام شده باشد.
- سرور در سیستم مانیتورینگ اضافه شده و هشدارهای پایه فعال باشد.
- مستند تنظیمات و رمزهای مدیریتی در محل امن و قابل تحویل نگهداری شود.
بعد از نصب چه می ماند؟
نصب، نقطه شروع است. چیزی که سرور را سالم نگه می دارد، به روزرسانی منظم، بررسی لاگ ها، پایش فضای دیسک و بازبینی دسترسی هاست. در سرویس مدیریت سرور لینوکس ما نصب، کانفیگ اولیه و نگهداری دوره ای سرورها را انجام می دهیم و تنظیمات را مستند تحویل می دهیم.
اگر سرور قرار است سرویسی را روی اینترنت ارائه کند، قدم بعدی هاردنینگ سرور است: بستن سرویس های اضافه، سیاست دسترسی و بررسی تنظیمات بر اساس چک لیست های استاندارد. برای نصب یک سرور جدید یا بازبینی سروری که سال ها دست نخورده مانده، از صفحه مدیریت سرور لینوکس با ما در تماس باشید.



