لینوکس

امن‌سازی CentOS 7 با CIS؛ نکات مهم بعد از پایان عمر

CentOS 7 سال‌ها یکی از انتخاب‌های رایج برای سرورهای لینوکسی بود؛ مخصوصاً در محیط‌هایی که پایداری، سازگاری و مستندات زیاد اهمیت داشت. اما نکته مهم این است که CentOS 7 به پایان عمر رسیده و دیگر گزینه مناسبی برای نصب جدید نیست. بنابراین اگر هنوز سروری با CentOS 7 دارید، امن‌سازی آن باید در کنار برنامه مهاجرت به Rocky Linux، AlmaLinux یا توزیع پشتیبانی‌شده دیگر دیده شود.

این مطلب را باید به‌عنوان یک چک‌لیست عملی برای کاهش ریسک CentOS 7 در محیط‌های موجود ببینید، نه توصیه برای راه‌اندازی سرور جدید با این نسخه.

قبل از شروع: هدف Hardening چیست؟

Hardening یعنی کم کردن سطح حمله. قرار نیست با چند دستور، سرور «کاملاً امن» شود. هدف این است که سرویس‌های اضافه حذف شوند، دسترسی‌ها محدود شود، لاگ‌ها قابل بررسی باشند، تنظیمات خطرناک اصلاح شوند و اگر مشکلی رخ داد، سریع‌تر قابل تشخیص باشد.

برای CentOS 7، استفاده از راهنماهای CIS می‌تواند نقطه شروع خوبی باشد؛ اما نباید کورکورانه اجرا شود. بعضی کنترل‌ها ممکن است با سرویس‌های شما تداخل داشته باشند. همیشه اول روی محیط تست اجرا کنید و بعد به Production ببرید.

۱. وضعیت پشتیبانی و به‌روزرسانی را مشخص کنید

مهم‌ترین مشکل CentOS 7 پایان پشتیبانی رسمی است. اگر این سرور هنوز در شبکه فعال است، باید دقیقاً بدانید چه بسته‌هایی روی آن نصب است، از کجا Update می‌گیرد و چه برنامه‌ای برای جایگزینی آن دارید.

cat /etc/centos-release
uname -r
rpm -qa --last | head

اگر امکان مهاجرت فوری ندارید، حداقل این سرورها را از اینترنت مستقیم دور کنید، دسترسی مدیریتی را محدود کنید و مانیتورینگ و لاگ‌گیری را جدی‌تر بگیرید.

۲. سرویس‌های غیرضروری را حذف یا غیرفعال کنید

هر سرویس باز، یک سطح حمله اضافه است. روی سرورهای لینوکسی زیاد دیده می‌شود که سرویس‌هایی از نصب اولیه باقی مانده‌اند اما واقعاً استفاده نمی‌شوند.

systemctl list-unit-files --type=service
ss -tulpn

بعد از بررسی، سرویس‌های غیرضروری را غیرفعال کنید:

systemctl disable service-name
systemctl stop service-name

در Production قبل از Stop کردن هر سرویس، وابستگی‌ها را بررسی کنید. خاموش کردن اشتباه یک سرویس ممکن است سرویس اصلی کسب‌وکار را مختل کند.

۳. SSH را جدی بگیرید

SSH معمولاً اولین مسیر مدیریت سرور است و اگر بد تنظیم شود، یکی از اولین نقاط حمله هم خواهد بود. حداقل تنظیمات پیشنهادی:

  • غیرفعال کردن ورود مستقیم Root
  • استفاده از Key به‌جای Password تا جای ممکن
  • محدود کردن کاربران مجاز برای SSH
  • محدود کردن دسترسی SSH در Firewall یا ACL شبکه
  • فعال‌سازی لاگ و بررسی تلاش‌های ناموفق
vi /etc/ssh/sshd_config

PermitRootLogin no
PasswordAuthentication no
AllowUsers adminuser

systemctl restart sshd

قبل از بستن PasswordAuthentication، حتماً در یک Session دیگر تست کنید که ورود با Key درست کار می‌کند؛ وگرنه ممکن است دسترسی خودتان را قطع کنید.

۴. Firewall و دسترسی شبکه

روی CentOS 7 معمولاً firewalld استفاده می‌شود. فقط پورت‌هایی را باز بگذارید که واقعاً نیاز دارید. اگر سرور پشت فایروال شبکه قرار دارد، باز هم Firewall لوکال را بی‌اهمیت ندانید؛ دفاع لایه‌ای همین‌جا معنی پیدا می‌کند.

firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --permanent --remove-service=dhcpv6-client
firewall-cmd --reload

برای سرویس‌های مدیریتی مثل SSH بهتر است محدودیت IP هم در سطح فایروال شبکه و هم در سطح سرور اعمال شود.

۵. کاربران، sudo و دسترسی‌ها

کاربرهای قدیمی، دسترسی‌های sudo بی‌دلیل و رمزهای ضعیف از مشکلات رایج سرورها هستند. هر چند وقت یک بار این موارد را بررسی کنید:

cat /etc/passwd
getent group wheel
lastlog
  • کاربرهای بلااستفاده را غیرفعال کنید.
  • دسترسی sudo را فقط به افراد و سرویس‌های لازم بدهید.
  • برای اکانت‌های سیستمی Shell ورود تعریف نکنید مگر واقعاً لازم باشد.
  • از رمزهای مشترک بین چند نفر استفاده نکنید.

۶. لاگ، زمان و مانیتورینگ

بدون لاگ خوب، بعد از رخداد امنیتی تقریباً کور هستیم. زمان سیستم هم باید درست باشد تا لاگ‌ها قابل تحلیل باشند.

timedatectl
systemctl status chronyd
journalctl -p warning

اگر در سازمان Syslog یا SIEM دارید، لاگ‌های مهم مثل auth، secure، messages و لاگ سرویس‌های اصلی را به آن ارسال کنید. نگه داشتن لاگ فقط روی همان سرور، در بعضی حملات کافی نیست.

۷. SELinux را بدون دلیل خاموش نکنید

در بسیاری از محیط‌ها اولین واکنش به خطاهای دسترسی، خاموش کردن SELinux است. این کار شاید مشکل را سریع پنهان کند، اما یک لایه امنیتی مهم را حذف می‌کند. بهتر است علت خطا بررسی و Policy درست اصلاح شود.

getenforce
sestatus
ausearch -m avc -ts recent

اگر مجبور شدید موقتاً حالت Permissive بگذارید، آن را به‌عنوان وضعیت دائمی رها نکنید.

۸. اسکن و ارزیابی با ابزارهای کمکی

ابزارهایی مثل Lynis می‌توانند برای ارزیابی اولیه مفید باشند. خروجی این ابزارها را باید تحلیل کرد؛ هر هشدار الزاماً به معنی خطر فوری نیست، اما می‌تواند نقطه شروع خوبی برای اصلاح باشد.

lynis audit system

اگر از Benchmarkهای CIS استفاده می‌کنید، تغییرات را مرحله‌ای اعمال کنید و بعد از هر مرحله سرویس‌های اصلی را تست کنید.

چک‌لیست کوتاه برای CentOS 7 موجود

  • برنامه مهاجرت از CentOS 7 مشخص شده باشد.
  • سرور از اینترنت مستقیم دور باشد مگر واقعاً لازم باشد.
  • SSH فقط از IPهای مشخص قابل دسترس باشد.
  • ورود مستقیم Root غیرفعال باشد.
  • سرویس‌های غیرضروری خاموش باشند.
  • Firewall لوکال فعال و محدود باشد.
  • لاگ‌ها به مقصد امن ارسال شوند.
  • Backup و روش Restore تست شده باشد.
  • دسترسی sudo و کاربران قدیمی بازبینی شده باشند.

جمع‌بندی

امن‌سازی CentOS 7 در سال‌های قبل یک کار عادی برای سرورهای لینوکسی بود، اما امروز باید با احتیاط بیشتری به آن نگاه کرد. چون خود سیستم‌عامل دیگر انتخاب مناسبی برای نصب جدید نیست. اگر هنوز CentOS 7 در شبکه دارید، Hardening لازم است، اما جایگزین Migration Plan نمی‌شود.

بهترین کار این است که ریسک سرورهای موجود را با تنظیمات امنیتی، محدودسازی دسترسی و مانیتورینگ کم کنید و هم‌زمان مسیر مهاجرت به نسخه پشتیبانی‌شده را جلو ببرید.

مطالب مرتبط: هاردنینگ چیست؟، معرفی ابزار Lynis، امنیت شبکه و امنیت سایبری.

علیرضا عربیان

متخصص شبکه و امنیت شبکه، مدرس امنیت شبکه و نویسنده وبلاگ arabiyan.ir

View Comments

  • واقعا خوشحالم که استاد عزیزم همچی سایت فوق العاده ای با مطالب عالی و آموزنده راه اندازی کردن
    سپاس

Share
Published by
علیرضا عربیان

Recent Posts

طراحی درست Health Monitor و Persistence در F5 BIG-IP

وقتی F5 BIG-IP را فقط به چشم یک لودبالانسر ساده ببینیم، معمولاً طراحی در همان…

18 ساعت ago

وقتی روتر و فایروال تبدیل به نقطه نفوذ می‌شوند

در امنیت شبکه معمولاً همه حواس‌ها می‌رود سمت سرورها، آنتی‌ویروس، کاربران، ایمیل و حملات فیشینگ.…

7 روز ago

تبدیل کانفیگ FortiGate به Juniper با Python؛ تجربه یک مهاجرت واقعی فایروال

معرفی ابزار پایتونی FortigateToJuniper برای تبدیل اولیه policyها، objectها و address groupهای FortiGate به دستورهای…

1 هفته ago

چرا مهندس شبکه و امنیت باید پایتون یاد بگیرد؟

اگر کار ما فقط وصل کردن چند کابل و نوشتن چند دستور روی روتر بود،…

3 سال ago

راهنمای خواندن دیتاشیت فایروال؛ چرا اعداد کارایی همیشه واقعی نیستند؟

وقتی میخواهیم فایروال، IPS یا یک تجهیز امنیتی لبه شبکه بخریم، معمولاً اولین چیزی که…

4 سال ago

هاردنینگ چیست و چرا باید امن‌سازی سیستم‌ها را جدی بگیریم؟

هاردنینگ یعنی کم کردن سطح حمله. نه با یک دستور جادویی، نه با نصب یک…

7 سال ago