در قسمت قبل
پیکربندی سیاست رمزنگاری سراسری
انجام شد.
۱. الزامات CIS Benchmark (بخش ۱.۷)
این بخش به پیادهسازی و تنظیم دقیق بنرهای هشدار قانونی برای اتصالات سیستم میپردازد و شامل بندهای زیر از استاندارد CIS است:
- 1.7.1 Ensure message of the day is configured properly (Automated)
- 1.7.2 Ensure local login warning banner is configured properly (Automated)
- 1.7.3 Ensure remote login warning banner is configured properly (Automated)
- 1.7.4 Ensure access to /etc/motd is configured (Automated)
- 1.7.5 Ensure access to /etc/issue is configured (Automated)
- 1.7.6 Ensure access to /etc/issue.net is configured (Automated)
۲. مفهوم و دلیل (Concept & Rationale)
نمایش پیامهای هشدار به کاربرانی که به سیستم متصل میشوند (چه محلی و چه از راه دور)، یک الزام حقوقی و امنیتی حیاتی است. این بنرها به کاربران اعلام میکنند که سیستم تحت نظارت است و دسترسی غیرمجاز پیگرد قانونی دارد.
- فایل /etc/issue: محتوای این فایل قبل از نمایش اعلان لاگین در ترمینالهای محلی (Console/TTY) نمایش داده میشود.
- فایل /etc/issue.net: محتوای این فایل قبل از لاگین برای اتصالات راه دور (مانند SSH) نشان داده میشود.
- فایل /etc/motd (Message of the Day): محتوای این فایل پس از احراز هویت موفق نمایش داده میشود.
- جلوگیری از افشای اطلاعات (Information Leakage): بسیار مهم است که در این فایلها از کاراکترهای کنترلی مانند \m, \r, \s, \v که باعث نمایش نسخه دقیق سیستمعامل و کرنل میشوند، استفاده نشود.
- سطح دسترسی (Permissions): برای جلوگیری از تغییر این پیامها توسط کاربران عادی یا بدافزارها، مالکیت این فایلها باید متعلق به کاربر و گروه روت (UID 00 و GID 00) بوده و سطح دسترسی آنها دقیقاً روی 06440644 تنظیم گردد.
۳. بررسی سازگاری با پایگاه داده Oracle (RAC, ASM, Grid)
پیکربندی بنرهای هشدار یک اقدام امنیتی در لایه دسترسی تعاملی سیستمعامل است.
- عدم تداخل: تغییر محتوای /etc/issue یا /etc/motd هیچگونه تداخلی با عملکرد دیتابیس اوراکل، سرویسهای Grid Infrastructure، ارتباطات بین نودها (Inter-Node) و یا فرآیندهای نصب و پچکردن (مانند OUI و OPatch) ایجاد نمیکند.
- اسکریپتهای اتوماتیک: ابزارهای اوراکل در پسزمینه (Non-interactive Shells) تحت تأثیر این پیامها قرار نمیگیرند. این تغییرات برای محیطهای Oracle RAC و Standalone کاملاً ایمن (Safe) هستند.
۴. نحوه بررسی وضعیت فعلی (Audit Script)
این اسکریپت علاوه بر بررسی وجود فایلها و سطح دسترسی، اطمینان حاصل میکند که اطلاعات حساس سیستمعامل در بنرها افشا نشده باشد.
لینک این اسکریپت در github:
modules/audit_08_Warning_Banners.sh
در صورتی که با bash script آشنا نیستید، می توانید به آموزشی که برای دیتابیس ادمین ها در سایت گذاشته ام مراجعه کنید.
Bash for Oracle DBAs
#!/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
# Check for OS information leaks (CIS 1.7.1 - 1.7.3
#!/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
۵. نحوه اعمال تنظیمات (Remediation Bash Script)
اسکریپت زیر محتوای استاندارد را به صورت یکپارچه تنظیم کرده و سطح دسترسیها را محدود میکند.
لینک این اسکریپت در 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)
می رویم.