امن‌سازی Oracle Linux 9 (بخش هشتم): پیکربندی بنرهای هشدار (Command Line Warning Banners)

در بخش قبلی،

پیکربندی خط‌مشی رمزنگاری سراسری سیستم

تکمیل شد.

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

این بخش بر پیاده‌سازی و پیکربندی صحیح بنرهای هشدار قانونی برای اتصال به سیستم تمرکز دارد و کنترل‌های CIS زیر را شامل می‌شود:

  • 1.7.1 اطمینان از پیکربندی صحیح پیام روز (Message of the Day) ــ خودکار
  • 1.7.2 اطمینان از پیکربندی صحیح بنر هشدار ورود محلی ــ خودکار
  • 1.7.3 اطمینان از پیکربندی صحیح بنر هشدار ورود از راه دور ــ خودکار
  • 1.7.4 اطمینان از پیکربندی دسترسی به فایل /etc/motd ــ خودکار
  • 1.7.5 اطمینان از پیکربندی دسترسی به فایل /etc/issue ــ خودکار
  • 1.7.6 اطمینان از پیکربندی دسترسی به فایل /etc/issue.net ــ خودکار

 

۲. مفهوم و دلیل اهمیت

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

  • فایل /etc/issue: محتوای این فایل پیش از نمایش اعلان ورود (Login Prompt) در ترمینال‌های محلی مانند Console و TTY نمایش داده می‌شود.
  • فایل /etc/issue.net: محتوای این فایل پیش از ورود در اتصال‌های راه دور مانند SSH نمایش داده می‌شود.
  • فایل /etc/motd یا Message of the Day: محتوای این فایل پس از احراز هویت موفق نمایش داده می‌شود.
  • جلوگیری از افشای اطلاعات: بسیار مهم است که در این فایل‌ها از کاراکترهای کنترلی مانند \m، \r، \s و \v استفاده نشود؛ زیرا ممکن است نام دقیق سیستم‌عامل و نسخهٔ کرنل را افشا کنند.
  • مجوزها: برای جلوگیری از تغییر این پیام‌ها توسط کاربران عادی یا بدافزارها، مالک این فایل‌ها باید root:root (با UID برابر 0 و GID برابر 0) باشد و مجوزهای آن‌ها دقیقاً روی 0644 تنظیم شوند.

 

۳. بررسی سازگاری با Oracle Database (RAC، ASM و Grid)

پیکربندی بنرهای هشدار، یک اقدام امنیتی در لایهٔ دسترسی تعاملی سیستم‌عامل محسوب می‌شود.

  • بدون تداخل: تغییر محتوای فایل‌های /etc/issue یا /etc/motd با عملکرد Oracle Database، سرویس‌های Grid Infrastructure، ارتباط بین نودها، یا فرایندهای نصب و Patch مانند OUI و OPatch تداخلی ایجاد نمی‌کند.
  • اسکریپت‌های خودکار: ابزارهای Oracle که در پس‌زمینه و با استفاده از Shellهای غیرتعاملی اجرا می‌شوند، تحت تأثیر این پیام‌ها قرار نمی‌گیرند. این تغییرات هم برای محیط‌های Oracle RAC و هم برای محیط‌های Standalone کاملاً ایمن هستند.

 

۴. بررسی وضعیت فعلی (اسکریپت ممیزی)

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

لینک GitHub:

modules/audit_08_Warning_Banners.sh

اگر با اسکریپت‌های Bash آشنایی ندارید، می‌توانید به محتوای آموزشی منتشرشده در سایت، مخصوص مدیران پایگاه‌داده، مراجعه کنید.

Bash برای Oracle DBAها

 
#!/bin/bash
# Script: audit_cis_1_7.sh
# Purpose: Audit Warning Banners Content and Permissions

echo -e "\n[+] Auditing CIS 1.7: Command Line Warning Banners..."
FILES=("/etc/motd" "/etc/issue" "/etc/issue.net")

for FILE in "${FILES[@]}"; do
    echo "[*] Checking $FILE..."
    if [ -e "$FILE" ]; then
        # Check permissions and ownership (CIS 1.7.4 - 1.7.6)
        STAT=$(stat -c "%a %U %G" "$FILE")
        if [ "$STAT" == "644 root root" ]; then
            echo "    [OK] Permissions and ownership are correct ($STAT)."
        else
            echo "    [!] WARNING: Incorrect permissions/ownership. Current: $STAT. Expected: 644 root root."
        fi
    fi
done
 
#!/bin/bash
# Script: audit8.sh
# Purpose: Audit Command Line Warning Banners (CIS 1.7)

echo "=========================================================================="
echo " CIS Requirement: 1.7 Command Line Warning Banners"
echo " - Ensure /etc/motd, /etc/issue, and /etc/issue.net are configured."
echo " - Ensure permissions are 644 and ownership is root:root."
echo " - Ensure no OS or kernel information is leaked."
echo " Oracle Context:"
echo " - Modifying warning banners has NO impact on Oracle Database/RAC."
echo " - Standard banners do not interfere with Oracle automated tasks."
echo "=========================================================================="

FAIL_COUNT=0
FILES=("/etc/motd" "/etc/issue" "/etc/issue.net")
OS_NAME=$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g')

echo -e "\n[*] Auditing Warning Banners and Permissions..."

for FILE in "${FILES[@]}"; do
    echo "[*] Checking $FILE..."
    if [ -e "$FILE" ]; then
        # Check permissions and ownership
        STAT=$(stat -c "%a %U %G" "$FILE")
        if [ "$STAT" == "644 root root" ]; then
            echo -e "  \e[32m[PASS]\e[0m Permissions and ownership are correct ($STAT)."
        else
            echo -e "  \e[31m[FAIL]\e[0m Incorrect permissions/ownership. Current: $STAT (Expected: 644 root root)."
            FAIL_COUNT=$((FAIL_COUNT + 1))
        fi

        # Check for OS information leaks
        if grep -E -i "(\\\v|\\\r|\\\m|\\\s|$OS_NAME)" "$FILE" > /dev/null 2>&1; then
            echo -e "  \e[31m[FAIL]\e[0m OS or Kernel information leakage detected."
            FAIL_COUNT=$((FAIL_COUNT + 1))
        else
            echo -e "  \e[32m[PASS]\e[0m No OS information leaks detected."
        fi
    else
        echo -e "  \e[31m[FAIL]\e[0m File $FILE does not exist."
        FAIL_COUNT=$((FAIL_COUNT + 1))
    fi
done

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

۵. اعمال پیکربندی (اسکریپت Bash اصلاحی)

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

لینک GitHub:

modules/remediate_08_Warning_Banners.sh

 

#!/bin/bash
# Script: remediation8.sh
# Purpose: Configure Warning Banners and Permissions (CIS 1.7)

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

echo "=========================================================================="
echo " Applying Remediation for CIS 1.7 (Command Line Warning Banners)"
echo " Oracle Context: Safe to apply. No impact on DB/RAC operations."
echo "=========================================================================="

BANNER_TEXT="Authorized uses only. All activity may be monitored and reported.
Individuals using this computer system without authority, or in excess of their authority, are subject to having all of their activities on this system monitored and recorded by system personnel.
Anyone using this system expressly consents to such monitoring and is advised that if such monitoring reveals possible evidence of criminal activity, system personnel may provide the evidence of such monitoring to law enforcement officials."

FILES=("/etc/motd" "/etc/issue" "/etc/issue.net")

for FILE in "${FILES[@]}"; do
    # 1. Update content
    echo "$BANNER_TEXT" > "$FILE"

    # 2. Set ownership and permissions
    chown root:root "$FILE"
    chmod 0644 "$FILE"

    echo -e "  \e[32m[OK]\e[0m Configured content and permissions for $FILE."
done

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

در بخش بعدی، با موضوع زیر ادامه خواهیم داد:

پیکربندی و مدیریت GNOME Display Manager (GDM)