(۲۰ شهریور ۱۳۹۶ ۰۷:۱۸ ب.ظ)pioneer01 نوشته شده توسط: امنیت جوملا و وردپرس و کلا این سیستم های مدیریت محتوا که همه جا استفاده میشه کمتر از اونایی هستند که یک شرکتی میاد جدا برای بعضی سازمان ها درست میکنه ؟!
این بحث امنیت یه مقدار نیازمند توضیح بیشتر هست؛
بحث امنیت تو سیستمهای تحت وب متن باز مثل یه شمشیر دو لبهست! به صورت پیشفرض طبیعتا به همون دلیلی که کاربر Black گفت، با توجه Open Source بودنشون، به جای یک چشم چندین چشم داریم، ولی لزوما همه این چشمها چشمهای پاکی نیستند!
هرچند این جنبه ماجرا بیشتر مزیت هست تا عیب اما باید اون سمت ماجرا رو هم در نظر گرفت که این کد در دسترس و قابل بررسی توسط همه هست و یکی از دلایل انتشار کوتاهمدت آپدیتهای سیستمهایی نظیر وردپرس هم رفع همین باگهای متعدد گزارش شده از سوی کاربران هست.
اما فراتر از بحث بالا و حتی با در نظر گرفتن ضریب امنیتی صد در صد کدهای خام ارائه شده توسط توسعهدهنگان سیستمهایی نظیر وردپرس، جوملا، دروپال و... بحث اصلی و محوری در برقراری امنیت پایدار، نحوه کاربری از این کدها و چگونگی کانفیگ امنیتیشون در ترکیب با بانکهای اطلاعاتی هست، یعنی اینطور نیست که حتی اگه بدونیم این سیستمها به صورت پیشفرض از امنیت بالایی برخوردارند، بسته دریافتی و پیادهسازی شده توسط ما هم لزوما از بالاترین امنیت برخورداره! برقراری خیلی از پارامترهای امنیتی بسته به مجری یا مجریان اون پروژه و توانایی اونها در ست کردن پارامترهای امنیتی داره، در واقع اینطور بگم که یه فرد میتونه همین الان بدون هیچ دانشی و صرفا توسط یک جستجوی کوچیک سیستمی نظیر وردپرس رو تو ۱۰ دقیقه پیادهسازی کنه، یکی ۵ ساله این کار رو میکنه و یکی هم ۱۰ سال، اما آیا همه این سیستمها که دقیقا توسط یک بسته کد مشخص اجرا شدند، از ضریب امنیتی یکسانی برخوردارند؟ به هیچ وجه اینطور نیست.
برای مثال میخوام به بدیهیترین موارد ممکن اشاره کنم که از مهمترین موارد هم هستند. شما زمانیکه سیستمی مثل وردپرس رو نصب میکنید، چند پارامتر به صورت پیشفرض یا پیشنهادی برای شما وجود داره:
Default Username: Admin
Default Password Strength: Low
Default ID Number: 1
Default Login Page:
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
در اختیار داشتن هر کدوم از مقادیر بالا که متاسفانه غالبا هم (خصوصا توسط تازهکارها) به همین شکل رها میشن، یعنی یک قدم خیلی بزرگ به سمت نفوذ، یعنی مثلا شما وقتی Username رو داشته باشی، دیگه بحث شمارش حالات ممکن (ریاضیات گسسته) رو روی Password متمرکز میکنی، حالا اگه همین Password هم به جای چهار مولفهای بودن (مولفه ۱: حروف کوچک، مولفه ۲: حروف بزرگ، مولفه ۳: اعداد و مولفه ۴: نمادها) مثل MiliLa$90am#9026*a90%TLX ، تک مولفهای و صرفا عددی باشه، دیگه پیدا کردنش توسط یک ربات کار سختی نیست. از طرف دیگه ست کردن سطوح دسترسی به فایلها (File Permission)، چگونگی برخورد با حملاتی مثل DDOS ، تعریف مکانیسمی برای بلاک کردن IP های متخاصم، استفاده از پروتکل SSL و خیلی از موارد دیگه وابسته به مجری هست و این نوع سیستمها هیچ اقدامی برای شما انجام نمیدن، هرچند که با استفاده از افزونهها یا پلاگینهایی که براشون نوشته شده میشه تا حدی این مسیر رو هموار کرد اما در موارد پیشرفته، نیاز به نیروی انسانی متخصص برای اعمال این تنظیمات و خصوصا رهگیری حملات و صدمات، یک امر اجتنابناپذیر هست.
نکته دیگه اینکه، تا الان تمام صحبتهای ما روی سیستم مدیریت محتوا یا همون هسته قابل دانلود متمرکز بود اما همونطور که در جریان هستید، لازمه برپاسازی یک وبسایت کامل در چنین سیستمهایی، در کنار هم قرار گرفتن هسته به عنوان بخش عملکردی و پوسته به عنوان بخش بصری و برقرار کننده ارتباط با کاربر هست، در واقع برنامهنویسی امن پوسته هم یک بخش غیرقابل اجتناب هست که خب این هم هیچ ارتباطی به سیستمی متنباز نظیر وردپرس یا پرستاشاپ نداره، یعنی طراح پوسته باید این رو در نظر داشته باشه، پس میبینیم که حتی ایمنی صد در صدی هسته خام یک CMS و کانفیک کامل اون هم دلیلی بر امنیت تضمینشده یک وبسایت نیست.
(۲۰ شهریور ۱۳۹۶ ۰۸:۰۲ ب.ظ)pioneer01 نوشته شده توسط: پس چرا بعضی سازمان ها که خیلی مهمه که سایتشون بالا باشه از این سیستم ها استفاده می کنن و هزینه هم پرداخت می کنن ؟
من ازشون پرسیدم گفتن امنیتش بالاتره
من میخام بدونم واقعا امنیت اینا بالاتر از اوناس ؟
همونطور که میدونید و درس مهندسی نرمافزار رو خوندید، نگهداری یا پشتیبانی آخرین مرحله فرآیند تولید نرمافزار هست و بسته به متدولوژی مورد استفاده در توسعه اون نرمافزار، یکی از تنهاترین مراحل مانا و فعال تا آخر عمر اون نرمافزار به حساب میاد. فارغ از اینکه سیستم پیاده شده به صورت Open Source باشه یا نباشه و اینکه خودمون نوشته باشیم یا پکیجهای پیشساخته استفاده کرده باشیم، نرمافزار ما خصوصا اگه از نوع مبتنی بر وب باشه و در معرض دسترسی و نفوذ، نیازمند انواع مدلهای نگهداری (اصلاحی، تطبیقی، پیشگیرانه و مهندسی مجدد) تا زمان بقای خودش هست، اصلاحی از این دید که بتونیم مشکلات و باگهاش رو ترمیم و اصلاح کنیم، تطبیق از این نظر که در طی زمان (مثلا وقتی نسخه جدیدی از یک زبان مثل PHP یا تکنولوژی عرضه شد) نیاز به تطبیق نرمافزار خودمون با شرایط جدید رو داشته باشیم، پیشگیرانه از این نظر که با توجه به پیشبینیها، تجریبات باقی وبسایتها و به صورت کلی برآیندی که از فضای وب داریم بتونیم اقدامات لازم و واکنشی رو تعبیه کنیم و مهندسی مجدد از این نظر که اگه لازم شد و مثلا هزینههای توسعه نرمافزار در بستر قبلی بالا رفت یا دیگه توان وصله و پینه رو نداشت، نرمافزار رو در یک چارچوب بهتر به نوعی بازطراحی کنیم.
طبیعتا نظارت و کنترل روی این روند که قطعا بخش زیادی از اون توسط نیروی انسانی انجام میشه، نیازمند هزینه هست، البته میزان اهمیت دادن به مبحث امنیت و ضربه نخوردن به اعتبار برند و از دست رفته دادهها، محرمانگی و... ناشی از مشکلات امنیتی وابسته به تصمیم صاحبان اون سیستم هست.
برای مثال پورتال تحت وب یکی از بانکهای کشور که دارای سیستم اختصاصی هست رو در نظر بگیرید، شاید بگیم خب، کی جرات داره تو ایران با وجود پلیس فتا و... به سایت یک بانک حمله کنه یا اصلا چه انگیزهای برای حمله از کشورهای خارجی بهش هست، پس بر اساس همین امر بیایم و روی امنیت سرمایهگذاری زیادی نکنیم، اما مهمترین موضوعی که باعث میشه سرمایههای زیادی روی این قضیه انجام بگیره اینه که اگه فقط ده ثانیه وبسایت یک بانک هک بشه و به تبع اون تو تراکنشها اختلالی به وجود بیاد، علاوه بر ضرر مالی، هزینههای تخریب وجهه و برندش به مراتب و فوقالعاده بیشتر از هزینههایی هست که باید صرف امنیت خودش میکرد. از طرف دیگه وبسایتهایی که توسط سیستمهایی مثل وردپرس پیاده شدند (امثال CNN و...) هم مشمول همین قواعد هستند و به صورت کلی نمیتونیم صرفا با در نظر گرفتن سیستمهای تمام اختصاصی و غیراختصاصی در مورد امنیت اونها به صورت دقیق اظهار نظر کنیم، بلکه باید به مکانسیمهای امنیتی اونها توجه کرد، از همین نظر شما ممکنه بتونید یک سیستم پیچیده و اختصاصی و دارای دادههای مهم رو هک کنید اما توان هک کردن یک وبلاگ ساخته شده با وردپرس رو هم نداشته باشید.