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

بحث پیچیدگی کلاً جالبه علی‌الخصوص در شبکه؛ تاجایی که خوندم و شنیدم اولین بار بحث Complexity رو آقای David Mayer مطرح کرد و حتی برای این موضوع در IRTF هم یک Working-group بنام Network Complexity Research Group درنظر گرفته شد. امیدوارم به مرور بتونم بیشتر راجبش بخونم، بهفمم و بیشتر بنویسم.
اولین مطلب در این بحث رو با امنیت شبکه و کارهایی که میکنیم تا جلوی مخاطرات امنیتی رو بگیریم شروع میکنم.

روز به روز ابزارهای جدید امنیتی تولید می‌شن و با کلی تبلیغات و به‌به و چه‌چه روونه‌ی بازار. و از دست بد روزگار گاهی بدون برنامه و با توهم اشتباه اینکه این ابزار مشکلات امنیتی‌مون رو حل می‌کنه، سریع میایم قوی‌ترین فایروال‌ها و آنتی،ویروس‌ها و … خرید میکنیم و یکجوری می‌گنجونیم توی شبکه. حالا هزینه‌های فجیعی که در خرید و نصب و راه‌اندازی میشه که هیچ… از برگزاری منافصه گرفته تا هزینه‌ی مشاور و ناظر و خرید و اجرا و نگهداری و … نمیدونم، گاهی فکر میکنم شاید این بحث‌های صرفه‌جوئی در هزینه و کاهش هزینه‌ها و … فقط حرف هست علی‌الخصوص در سازمان‌ها و شرکت‌های بزرگ، بالاخره بودجه‌اش یجوری میرسه یا یکی میرسونه یا یکی میخواد و میرسونَدِش 🙂

اما ای دریغ که بزرگترین مشکلات امنیتی انقدر بزرگ هستند که دیده نمیشن! و حتی گاهی همون پیچیدگی‌ها به ندیدنشون دامن می‌زنه.

یکی از اولین قدم‌های امنیت اطلاعات، فرهنگ‌سازی در سازمانه؛ در معماری کلان فناوری اطلاعات یک سازمان حتماً باید آموزش‌هایی ساده جهت آشنایی و روش‌های جلوگیری از درز اطلاعات برای کاربران خیلی معمول درنظر گرفته بشه.  مثل اینکه اطلاعات سازمانی رو روی نرم‌افزارهای چت نباید رد و بدل کرد، نباید روی سرویس‌های ثالث مثل Google Drive و Dropbox و … گذاشت و ازین قبیل موارد.

قطعاً در کنار این موارد هم باید یکسری سیاست‌های امنیتی و بقولی Enforcement وجود داشته باشه؛ مثلاْ محدود کردن پورت‌های USB، اجبار استفاده از رمز مناسب، محدود کردن دسترسی به اینترنت برای کاربران و سرورها، گذردادن ترافیک اینترنت از یک پروکسی و …

راهکارهای سخت‌افزاری و نرم‌افزاری امنیتی جزو ملزومات هستن اما باید مراقب بود که طراحی پیچیده نشه؛ جوری نباشه که اگه ساعت ۲ شب با مهندس شیفت تماس گرفته شد سرش رو بکوبونه به میز و نتونه بفهمه مشکل کجاس.
مثلا یک اتفاقی که خیلی جدیداً شنیده میشه اینه که کلاً بیایم و ترافیک مدیریتی شبکه، ترافیک دیتای داخلی، ترافیک اینترنت و .. رو بطور فیزیکی از هم جدا کنیم. متاسفانه خودم هم دوبار همچین طرحی رو مجبور شدم که بنویسم… خب این کار در کنار هزینه‌های سرسام‌آوری که داره، پیچیدگی‌های خاص خودش رو هم خواهد داشت؛ قبلاً شما داشتین فقط یک شبکه رو نگهداری می‌کردین اما حالا چند شبکه! قبول دارم که بعضی سناریوهای خاص لازمه اما نه اینکه همه‌گیر بشه این کار.
در عمده‌ی شبکه‌های بسیار گسترده، تمام این ترافیک‌ها روی یک بستر فیزیکی هستن اما خب طبعاً با استفاده از راه‌کاری‌های مختلف امنیتی که گاهش شامل مجازی‌سازی هم میشه مثل درنظرگرفتن VLAN مجزا (بله VLAN هم نوعی راه‌کار مجازی‌سازی محسوب میشه) یا VRF مجزا (بحث مجازی‌سازی شبکه هم بسیار شیرین هست و سر فرصت خودش انشاالله راجبش می‌نویسم)

احتمالاً همچین اتفاقی رو خیلیا شاهدش بودن:

هیچوقت یادم نمیره زمانی که وارد بازار کار شدم و در اولین کارم بعنوان یک ادمین مشغول شده بودم، تصمیم گرفتیم که سیاست‌های رمزگذاری در شبکه تعیین کنیم (Password Policy). بعد از کلی مشقات تاییدیه گرفتیم و اجرا شد.
یک روز رفته بودم واحد حسابداری برای فیش حقوقی ام که دیدم یکی از کارمندای حسابداری نام کاربری و رمز ورودش به سیستم حسابداری رو روی برگه نوشته و به خیال خودش کلی امنیت به خرج داده بود و چسبونده بود زیر کیبورد!

می‌بینین؟ فرهنگ‌سازی!

چندسال قبل یک شرکت امنیتی بنام AlgoSec از متخصصان امنیت شبکه نظرخواهی کرده بود و یکی از نتایج جالب اون این بود که بیش از نصف این متخصصین اظهار داشتن پیچیدگی‌های امنیتی و تعدد Security Policy ها بالاخره یک موقعی منجر به درز اطلاعات یا قطعی سرویس شده بوده! حالا بیایم و چندتا فایروال بگذاریم پشت سرِ هم 🙂
نمیخوام وارد بحث معماری و طراحی شبکه و امنیت شبکه بشم اما صرفا در رابطه با همین مورد چند فایروال از شرکت های مختلف: برای یه شبکه معمول، خیلی ساده میشه پیشنهاد کرد که در لایه‌ی ارتباط با اینترنت از یک Firewall (چشم، دیواره‌ی آتش) و یک IPS (سیستم پیشگیری از نفوذ) استفاده کرد که خیلی rule های کلی داشته باشند و از وندور A باشن؛ و حالا در لایه‌های درونی‌تر (برای شبکه‌های بزرگ تر با block های مختلف) از فایروال‌های وندور B با رول‌های خاص و بقولی specific استفاده بشه.

فراموش نکنیم که یک شبکه باید مستندسازی بشه، و پر واضحه که مستندسازی یک شبکه با سیاست‌های امنیتی پیچیده چقدر سخت خواهد بود. اگر میخواین Complexity رو از امنیت شبکه اتون دور کنین، بعد از اینکه این مطلب رو خوندین (و اگر دوس داشتین نظرتون رو گفتین و عضو خبرنامه شدین 🙂 ) برین سراغ مستندسازی شبکه. انشاالله که وجود داره اما اگر نیست، بوجود بیارین.

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

بنظرم پیچیدگی بدترین دشمن امنیت اطلاعات هست! من معتقدم هر چیزی در زندگی باید به اندازه باشه؛ شبکه و امنیت شبکه هم اگر زندگیِ ما نباشه، فارغ از اون نیست.
من بشدت علاقمند به RFC1925 هستم؛ این RFC به زبون ساده 12 حقیقت/قانونِ دنیایِ شبکه رو مطرح می‌کنه و آخرین قانونِ اون خیلی نزدیک به این بحث هست:

وقتی دیگه ویژگی‌ای برای “اضافه کردن” باقی نمونده، به این معنی نیست که طراحی [پروتکل] به کمال رسیده؛ بلکه زمانی که دیگه چیزی برای کم‌کردن نیست به نقطه‌ی کامل‌بودن نزدیک شده.

حرف زیاد است و مجال کم. لطفاً نظرتون رو بگین و تجربیاتتون درباره‌ی پیچیدگی‌های امنیتی بنویسین.

ضمناً به نصیحت برخی دوستان پیرو همه‌گیر شدن تلگرام در ایران، کانالی برای وبلاگ ایجاد کردم که با عضو شدن میتونین براحتی از مطالب جدید مطلع بشین. ID کانال networkz هست؛ میتونین براحتی با کلیک کردن در اینجا کانال رو ببنین.