پیکوسیستم خدمات فنی IT

نصب لینوکس روی سرور: از انتخاب توزیع تا اولین کارهای امنیتی

نصب لینوکس روی سرور با نصب روی لپ تاپ فرق دارد: RAID، بوت از کنسول مدیریتی، پارتیشن بندی با LVM و امن سازی اولیه. این راهنما همان مسیر را با دستورهای واقعی نشان می دهد.

نصب لینوکس روی سرور: از انتخاب توزیع تا اولین کارهای امنیتی

نصب لینوکس روی یک سرور، از نظر مراحل شبیه نصب روی لپ تاپ است، ولی تصمیم هایی که در همان نیم ساعت اول می گیرید تا سال ها با شما می مانند: توزیع و نسخه، حالت بوت، ساختار 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 هم بدون مشکل کار می کند. در مسیر نصب به این چند نکته دقت کنید:

  1. در مرحله شبکه، همان جا IP ثابت را وارد کنید تا سرور بعد از اولین بوت با آدرس مشخص بالا بیاید.
  2. گزینه نصب کمینه (minimized) را انتخاب کنید مگر اینکه به ابزارهای اضافه نیاز داشته باشید.
  3. در بخش ذخیره سازی، حالت سفارشی را انتخاب کنید و ساختار LVM بالا را بسازید.
  4. گزینه نصب OpenSSH server را تیک بزنید و اگر کلید عمومی شما روی GitHub یا Launchpad هست، همان جا وارد کنید.
  5. بسته های 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

اولین کارهای امنیتی بعد از نصب

سروری که تازه بالا آمده و روی شبکه است، از همان دقیقه اول اسکن می شود. این کارها را پیش از انتقال هر سرویسی انجام دهید.

  1. همه بسته ها را به روز کنید: sudo apt update && sudo apt upgrade یا sudo dnf upgrade.
  2. یک کاربر معمولی با دسترسی sudo بسازید و کلید عمومی خود را در ~/.ssh/authorized_keys او بگذارید.
  3. پیش از بستن ورود با رمز، با یک نشست جدا ورود با کلید را تست کنید. بستن در، وقتی کلید دستتان نیست، یعنی مراجعه به دیتاسنتر.
  4. تنظیمات SSH را در یک فایل جداگانه بنویسید تا با به روزرسانی بسته بازنویسی نشود.
  5. فایروال را فعال کنید و فقط پورت های لازم را باز بگذارید.
  6. به روزرسانی های امنیتی خودکار را فعال کنید.
  7. منطقه زمانی و همگام سازی ساعت را تنظیم کنید؛ لاگ با ساعت غلط در بررسی حادثه بی ارزش است.
  8. SELinux را در AlmaLinux روی enforcing نگه دارید. غیرفعال کردن آن یک راه حل نیست.
  9. 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 برای رشد بعدی باقی مانده باشد.
  • بکاپ تعریف شده و یک بار بازیابی آزمایشی انجام شده باشد.
  • سرور در سیستم مانیتورینگ اضافه شده و هشدارهای پایه فعال باشد.
  • مستند تنظیمات و رمزهای مدیریتی در محل امن و قابل تحویل نگهداری شود.

بعد از نصب چه می ماند؟

نصب، نقطه شروع است. چیزی که سرور را سالم نگه می دارد، به روزرسانی منظم، بررسی لاگ ها، پایش فضای دیسک و بازبینی دسترسی هاست. در سرویس مدیریت سرور لینوکس ما نصب، کانفیگ اولیه و نگهداری دوره ای سرورها را انجام می دهیم و تنظیمات را مستند تحویل می دهیم.

اگر سرور قرار است سرویسی را روی اینترنت ارائه کند، قدم بعدی هاردنینگ سرور است: بستن سرویس های اضافه، سیاست دسترسی و بررسی تنظیمات بر اساس چک لیست های استاندارد. برای نصب یک سرور جدید یا بازبینی سروری که سال ها دست نخورده مانده، از صفحه مدیریت سرور لینوکس با ما در تماس باشید.

استعلام

کارتان را بگویید، مسیر و هزینه را می گوییم

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

  1. 01درخواست را می خوانیم و اگر ابهامی بود تماس می گیریم.
  2. 02در صورت نیاز، بررسی اولیه ریموت یا بازدید انجام می شود.
  3. 03پیشنهاد مکتوب با دامنه کار، زمان بندی و هزینه می فرستیم.

اطلاعات شما فقط برای پاسخ به همین درخواست استفاده می شود.