امنسازی پیکربندی سختافزار و نرمافزار؛ Baseline قابل دفاع برای شبکه

امن کردن پیکربندی سختافزار و نرمافزار از آن کنترلهایی است که اگر درست اجرا شود، خیلی از حادثهها اصلا فرصت شروع پیدا نمیکنند. بیشتر تجهیزات و سیستمها با تنظیمات پیشفرض برای راحتی نصب میآیند، نه برای امنیت محیط واقعی. سرویسهای اضافه، اکانتهای پیشفرض، پروتکلهای قدیمی، دسترسی مدیریتی باز و لاگگیری ناقص معمولا همان چیزهایی هستند که بعدا در زمان حادثه دردسر درست میکنند.
هدف این کنترل ساده است: هر تجهیز، سرور، کلاینت، سیستمعامل و نرمافزار با یک baseline امن، قابل تکرار و قابل بررسی وارد شبکه شود. هاردنینگ نباید وابسته به حافظه یک نفر باشد. باید مشخص باشد برای روتر، فایروال، سوییچ، لینوکس، ویندوز، دیتابیس، وبسرور و حتی نرمافزارهای داخلی چه تنظیماتی استاندارد است و چطور بعدا کنترل میشود.
پیکربندی پیشفرض را قابل اعتماد فرض نکنید
اولین اشتباه این است که سیستم را با همان تنظیمات نصب اولیه وارد سرویس کنیم. خیلی از سرویسها برای راهاندازی سریع فعال هستند، اما در محیط عملیاتی لازم نیستند. مثلا روی یک سرور ممکن است سرویسهای نمونه، پنلهای مدیریت، پروتکلهای قدیمی یا دسترسیهای تستی فعال مانده باشند. روی تجهیزات شبکه هم گاهی SNMP community پیشفرض، Telnet، HTTP management یا userهای قدیمی هنوز وجود دارد.
قبل از اینکه یک سیستم production شود، باید لیست موارد پیشفرض بررسی شود: اکانتهای default حذف یا غیرفعال شوند، رمزها عوض شوند، سرویسهای غیرضروری بسته شوند، مدیریت فقط از مسیر مشخص انجام شود، لاگها به مقصد مرکزی ارسال شوند و نسخه نرمافزار یا firmware قابل پشتیبانی باشد.
Baseline امن داشته باشید
Baseline یعنی یک الگوی مشخص که میگوید وضعیت قابل قبول برای هر نوع سیستم چیست. برای مثال baseline سوییچ با baseline سرور لینوکسی یکی نیست. برای هر دسته باید تنظیمات پایه جداگانه تعریف شود. این baseline بهتر است کوتاه، اجرایی و قابل بررسی باشد؛ نه یک سند طولانی که هیچکس در زمان تغییر به آن نگاه نمیکند.
- برای تجهیزات شبکه: SSH به جای Telnet، مدیریت فقط از VLAN یا IP مشخص، SNMPv3، NTP، Syslog، AAA و محدود کردن دسترسی مدیریتی.
- برای سرورهای ویندوز: policy رمز عبور، غیرفعال کردن سرویسهای اضافه، firewall، audit policy، محدود کردن local admin و فعال بودن update.
- برای لینوکس: SSH امن، غیرفعال کردن login مستقیم root، محدود کردن sudo، firewall، update منظم، permission درست فایلها و ارسال log.
- برای وبسرور و اپلیکیشن: TLS درست، حذف صفحههای نمونه، محدود کردن upload، headerهای امنیتی، log مناسب و دسترسی حداقلی.
هاردنینگ باید قبل از اتصال به شبکه انجام شود
بهتر است سیستم قبل از اتصال به شبکه اصلی امن شود. وقتی یک سرور یا تجهیز تازه نصبشده با تنظیمات باز وارد شبکه میشود، ممکن است قبل از اینکه تیم فرصت تکمیل تنظیمات را پیدا کند دیده شود. در محیطهایی که VLAN نصب یا staging وجود دارد، بهتر است سیستم اول آنجا آماده شود، بعد از پاس کردن چکلیست وارد production شود.
برای تجهیزات شبکه هم همین نگاه مهم است. روتر یا فایروالی که تازه از جعبه بیرون آمده نباید با دسترسی مدیریتی باز و رمز ساده به شبکه اصلی وصل شود. حتی اگر فقط چند ساعت در این وضعیت باشد، همان چند ساعت میتواند کافی باشد.
تغییرات دستی را کم کنید
هرچه تنظیمات بیشتر دستی انجام شود، اختلاف بین سیستمها بیشتر میشود. یک سرور درست harden میشود، سرور بعدی چند مورد را جا میاندازد، تجهیز سوم با نسخه قدیمی template میآید بالا. بعد از چند ماه، شبکه پر از استثناهای ناخواسته میشود و کسی دقیق نمیداند کدام سیستم با کدام استاندارد ساخته شده است.
برای کم کردن این مشکل، بهتر است template، اسکریپت، golden image یا ابزار configuration management داشته باشید. برای شبکه میتوان از templateهای استاندارد، backup config، Ansible یا ابزارهای مدیریت تجهیزات استفاده کرد. برای سرورها هم ابزارهایی مثل Group Policy، Intune، Ansible، Puppet، Chef یا اسکریپتهای داخلی کمک میکنند تنظیمات قابل تکرار شود.
سرویسهای غیرضروری را حذف کنید
یکی از سادهترین و موثرترین کارها، کم کردن سطح حمله است. هر سرویس باز یعنی یک مسیر احتمالی برای خطا، سوءاستفاده یا brute force. اگر سرور قرار است فقط وبسرور باشد، لازم نیست سرویسهای اضافی روی آن فعال بماند. اگر تجهیز شبکه فقط از یک شبکه مدیریتی مدیریت میشود، نباید پنل مدیریت از همه VLANها قابل دسترسی باشد.
این کار باید با دقت انجام شود. بستن سرویسها بدون شناخت ممکن است عملیات را مختل کند. اما راه درست این نیست که همه چیز باز بماند؛ باید مالک سرویس، دلیل وجود آن، پورت، مسیر دسترسی و نیاز عملیاتی مشخص باشد.
مدیریت دسترسی بخشی از پیکربندی امن است
پیکربندی امن فقط تنظیمات فنی سیستم نیست. دسترسی افراد و سرویسها هم بخشی از آن است. اگر روی یک سرور همه اعضای تیم local admin باشند، یا روی تجهیزات شبکه یک user مشترک استفاده شود، حتی بهترین تنظیمات فنی هم ناقص است. هر سیستم باید دسترسی حداقلی، ورود قابل ردیابی و مسیر مشخص برای افزایش دسترسی داشته باشد.
- اکانتهای مشترک را تا حد ممکن حذف کنید.
- ورود مدیریتی را با MFA یا مسیر امن مثل VPN و Jump Server محدود کنید.
- دسترسی vendor یا پیمانکار زماندار باشد.
- تغییرات مهم با لاگ و در صورت نیاز با تایید انجام شود.
کنترل انحراف از استاندارد
مشکل فقط روز نصب نیست. بعد از مدتی تنظیمات تغییر میکنند. برای رفع یک مشکل فوری، پورت باز میشود. برای تست، یک user ساخته میشود. برای عیبیابی، logging تغییر میکند. اگر این تغییرات بعدا بررسی نشوند، baseline کمکم از بین میرود.
باید مکانیزمی برای بررسی دورهای وجود داشته باشد. ابزارهای vulnerability scanner، compliance scanner، مقایسه configuration backupها، Group Policy report، audit script و حتی چکلیست دستی میتوانند کمک کنند. مهم این است که اختلافها دیده شوند و owner مشخص داشته باشند.
Firmware و نسخه نرمافزار را جدی بگیرید
بخشی از پیکربندی امن، استفاده از نسخه قابل پشتیبانی است. تجهیز یا نرمافزاری که مدتهاست update نشده، حتی اگر تنظیمات خوبی داشته باشد، ممکن است آسیبپذیری شناختهشده داشته باشد. در شبکههای واقعی نمیشود همیشه سریع upgrade کرد، اما باید وضعیت نسخهها، پایان پشتیبانی، bugهای امنیتی و مسیر ارتقا مشخص باشد.
برای فایروال، VPN، روتر اینترنت، کنترلر وایرلس، سیستم مجازیسازی، ایمیل و سرویسهای بیرونی این موضوع حساستر است. اینها معمولا مستقیمتر در معرض حمله هستند و عقب ماندن نسخهها میتواند ریسک جدی بسازد.
لاگ و زمان درست
سیستمی که harden شده ولی لاگ درست ندارد، در زمان حادثه کمک زیادی نمیکند. ورود موفق و ناموفق، تغییرات تنظیمات، اجرای دستورهای مدیریتی، خطاهای سرویس، تغییر policy و restartهای مهم باید ثبت شوند. بهتر است لاگها فقط روی همان سیستم نمانند و به یک مقصد مرکزی مثل SIEM یا Syslog Server ارسال شوند.
NTP هم جزئیات کوچک اما مهمی است. اگر ساعت سیستمها هماهنگ نباشد، کنار هم گذاشتن لاگها در زمان رخداد سخت میشود. این موضوع در بررسی حادثه، forensic و حتی عیبیابی عادی اهمیت زیادی دارد.
چکلیست سریع پیکربندی امن
- آیا برای هر نوع سیستم baseline مشخص دارید؟
- آیا اکانتها و رمزهای پیشفرض حذف یا تغییر کردهاند؟
- آیا سرویسها و پورتهای غیرضروری بسته شدهاند؟
- آیا دسترسی مدیریتی فقط از مسیرهای مشخص انجام میشود؟
- آیا لاگها به مقصد مرکزی ارسال میشوند؟
- آیا نسخه سیستمعامل، firmware و نرمافزار قابل پشتیبانی است؟
- آیا تغییرات نسبت به baseline به صورت دورهای بررسی میشود؟
جمعبندی
امنسازی پیکربندی یعنی سیستم را از حالت نصب راحت و پیشفرض به حالت قابل دفاع و قابل مدیریت ببریم. این کار با چند تنظیم پراکنده کامل نمیشود. باید baseline، چکلیست، اجرای قابل تکرار، کنترل تغییرات و بررسی دورهای داشته باشد. وقتی این چرخه درست باشد، سطح حمله کمتر میشود و تیم امنیت به جای خاموش کردن آتش، وضعیت شبکه را قابل پیشبینیتر مدیریت میکند.

SegmentSmack؛ آسیبپذیری TCP در کرنل لینوکس و ریسک DoS
هاردنینگ چیست و چرا باید امنسازی سیستمها را جدی بگیریم؟
کنترل امنیت شماره ۱۵: کنترل دسترسی بیسیم؛ وایفای را جدی بگیریم
کنترل و محدود کردن پورتهای شبکه؛ کاهش سطح حمله با سرویسهای ضروری
کنترلهای حساس امنیت شبکه؛ نقشه راه عملی برای کاهش ریسک
کنترل امنیت شماره ۱۸: امنیت نرمافزارهای کاربردی