امن‌سازی Oracle Linux 9 (بخش نهم): پیکربندی و مدیریت GNOME Display Manager (GDM)

در قسمت قبل 

پیکربندی بنرهای هشدار (Command Line Warning Banners)

انجام شد.

۱. الزامات CIS Benchmark (بخش 1.8)

این بخش از استاندارد CIS به بررسی وضعیت محیط گرافیکی (GUI) و سرویس مدیریت ورود GNOME یعنی GDM می‌پردازد:

  • 1.8.1 Ensure GNOME Display Manager is removed (Automated)
  • 1.8.2 Ensure GDM login banner is configured (Automated)
  • 1.8.3 Ensure GDM disable-user-list option is enabled (Automated)
  • 1.8.4 Ensure GDM screen locks when the user is idle (Automated)
  • 1.8.5 Ensure GDM screen locks cannot be overridden (Automated)
  • 1.8.6 Ensure GDM automatic mounting of removable media is disabled (Automated)
  • 1.8.7 Ensure GDM disabling automatic mounting of removable media is not overridden (Automated)
  • 1.8.8 Ensure GDM autorun-never is enabled (Automated)
  • 1.8.9 Ensure GDM autorun-never is not overridden (Automated)
  • 1.8.10 Ensure XDMCP is not enabled (Automated)

 


۲. مفهوم و دلیل (Concept & Rationale)

  • مفهوم: محیط‌های گرافیکی کاربری (GUI) مانند GNOME و سرویس مدیریت ورود آن (GDM)، ابزارهایی برای تسهیل کار کاربران دسکتاپ هستند.
  • دلیل امنیتی: نصب بودن محیط گرافیکی روی سرورها، سطح حمله (Attack Surface) را به شدت افزایش می‌دهد، منابع باارزش سیستم (RAM و CPU) را مصرف می‌کند و نیازمند نصب و بروزرسانی صدها پکیج اضافی (Dependency) است.
  • رویکرد استاندارد: استاندارد CIS در بند 1.8.1 صراحتاً توصیه می‌کند که GDM از روی سرور حذف شود. در صورت حذف GDM، نیازمندی‌های 1.8.2 تا 1.8.10 به طور خودکار برآورده می‌شوند (زیرا صورت مسئله به طور کامل پاک شده است).

۳. بررسی سازگاری با پایگاه داده Oracle (RAC, ASM, Grid)

حذف محیط گرافیکی و GDM یک اقدام بسیار توصیه‌شده در محیط‌های اوراکلی است.

  • عدم نیاز به GUI: سرورهای میزبان پایگاه داده Oracle (شامل Database، Grid Infrastructure و ASM) هیچ‌گونه نیازی به محیط گرافیکی ندارند. تمامی فرآیندهای نصب دیتابیس، گرید و اعمال پچ‌ها (توسط OUI و OPatch) می‌توانند و باید به صورت Silent Mode و با استفاده از فایل‌های پاسخ (Response File) انجام شوند.
  • بهبود کارایی و امنیت: حذف GUI نه تنها امنیت سرور را به حداکثر می‌رساند و خطرات ناشی از پکیج‌های اضافی را خنثی می‌کند، بلکه تمامی منابع پردازشی سرور را منحصراً در اختیار فرآیندهای حیاتی اوراکل قرار می‌دهد و هیچ تداخلی با کلاستر یا عملکرد دیتابیس نخواهد داشت.

4. نحوه بررسی وضعیت فعلی (Audit Script)

برای بررسی نصب بودن پکیج GDM و وضعیت پیش‌فرض بوت سیستم عامل، از دستورات زیر استفاده می‌شود:

لینک این اسکریپت در github:

modules/audit_09_Configure_GDM.sh

در صورتی که با bash script  آشنا نیستید، می توانید به آموزشی که برای دیتابیس ادمین ها در سایت گذاشته ام مراجعه کنید.

Bash for Oracle DBAs

#!/bin/bash
# Script: audit9.sh
# Purpose: Audit GNOME Display Manager (GDM) and Boot Target (CIS 1.8)

echo "=========================================================================="
echo " CIS Requirement: 1.8 GNOME Display Manager"
echo " - Ensure GDM is removed or disabled."
echo " - Ensure default boot target is multi-user.target."
echo " Oracle Context:"
echo " - Highly Recommended. GUI is not needed for Oracle DB/RAC."
echo " - Removing GDM saves resources and reduces attack surface."
echo "=========================================================================="

FAIL_COUNT=0

echo -e "\n[*] Auditing GDM Package and Boot Target..."

# 1. Check if GDM is installed
if rpm -q gdm > /dev/null 2>&1; then
    echo -e "  \e[31m[FAIL]\e[0m GDM package is installed."
    FAIL_COUNT=$((FAIL_COUNT + 1))
else
    echo -e "  \e[32m[PASS]\e[0m GDM package is not installed."
fi

# 2. Check default boot target
CURRENT_TARGET=$(systemctl get-default)
if [ "$CURRENT_TARGET" == "multi-user.target" ]; then
    echo -e "  \e[32m[PASS]\e[0m System default target is $CURRENT_TARGET."
else
    echo -e "  \e[31m[FAIL]\e[0m Default target is $CURRENT_TARGET (Expected: multi-user.target)."
    FAIL_COUNT=$((FAIL_COUNT + 1))
fi

if [ "$FAIL_COUNT" -eq 0 ]; then
    echo -e "\n\e[32m[+] AUDIT RESULT: PASS\e[0m"
else
    echo -e "\n\e[31m[-] AUDIT RESULT: FAIL ($FAIL_COUNT issues found)\e[0m"
fi

5. نحوه اعمال تنظیمات (Remediation Bash Script)

اسکریپت زیر در صورت وجود، محیط GDM را حذف کرده و اطمینان حاصل می‌کند که سیستم عامل همواره در حالت متنی (Multi-user target) بوت می‌شود:

لینک این اسکریپت در github:

modules/remediate_09_Configure_GDM.sh

 

#!/bin/bash
# Script: remediation9.sh
# Purpose: Remove GDM and Enforce CLI Boot Mode (CIS 1.8)

if [ "$EUID" -ne 0 ]; then 
    echo "Please run as root"
    exit 1
fi

echo "=========================================================================="
echo " Applying Remediation for CIS 1.8 (GNOME Display Manager)"
echo " Oracle Context: Safe and Recommended for Database Servers."
echo "=========================================================================="

# 1. Remove GDM if installed
if rpm -q gdm > /dev/null 2>&1; then
    echo "[*] Removing GDM package and dependencies..."
    dnf remove -y gdm
    echo -e "  \e[32m[OK]\e[0m GDM removed successfully."
else
    echo -e "  \e[32m[OK]\e[0m GDM is already absent."
fi

# 2. Enforce CLI Boot Mode
CURRENT_TARGET=$(systemctl get-default)
if [ "$CURRENT_TARGET" != "multi-user.target" ]; then
    echo "[*] Setting default target to multi-user.target..."
    systemctl set-default multi-user.target
    echo -e "  \e[32m[OK]\e[0m Default target updated to multi-user.target."
else
    echo -e "  \e[32m[OK]\e[0m Default target is already multi-user.target."
fi

echo -e "\n\e[32m[+] REMEDIATION APPLIED SUCCESSFULLY\e[0m"

در قسمت بعد به سراغ

غیرفعال‌سازی و حذف سرویس‌های غیرضروری

می رویم.