چند سال پیش ، هنوز هم در دهه 2000 ، بسیار ساده لوح بودم. به خصوص از نظر امنیت رایانه.
برای ایجاد یک داستان طولانی و دردناک که حتی خودم را خیلی خوب به یاد نمی آورم ، مهمترین مسئله این است که من یک سرور FreeBSD را در خانه با PostgreSQL تنظیم کردم. من که احمق ساده لوحی بودم که هستم ، تصوری نداشتم که حتی چنین چیزی مانند "تونل SSH" یا هر چیز دیگری وجود داشته باشد. بنابراین ، من فرض کردم که تنها راه اتصال به بانک اطلاعاتی من این است که اجازه اتصال مستقیم از راه دور به آن را بدهم.
من "NAT LAN" با آدرس های IP داخلی نداشتم. در عوض ، من چندین آدرس IP واقعی (خارجی) داشتم ، یکی برای کامپیوتر معمولی من و دیگری سرور. به همین ترتیب ، این مسئله جدی تر شد.
هنگام تنظیم پرونده به اصطلاح "pg_hba.conf" ، که کنترل می کند چگونه می توانید به بانک اطلاعاتی PostgreSQL (جدا از حساب کاربری یا "نقش") وصل شوید ، من کتابچه راهنما و نظرات موجود در پرونده را به درستی خواندم یا درک نکردم. به همین دلیل ، حالت "اعتماد" را به معنای "اعتماد" ، با فرض اینکه نام کاربری و رمزعبور مناسبی را تعبیر می کنند ، تفسیر کردم. در واقعیت ، منظور این بود که " به این نام کاربری اعتماد کنید یا به هیچ کس در همه " اعتماد نکنید. "
از آنجا که من همچنین" تمام آدرس های IP "را انتخاب کرده بودم (زیرا ، حتی اگر آنها آدرس های IP واقعی" بودند "). ، آنها ایستا نبودند ، و بعضی اوقات تغییر می کردند) ، این بدان معنی است که بیش از شش ماه ، سرور "امن" من (همانطور که من آن را در سر احمق خود تصور می کردم) سرور با داده های بسیار خصوصی و حساس روی آن بود. در آنجا نشسته ایم تا تمام دنیا به راحتی ارتباط برقرار کنند تا زمانی که آنها فقط بتوانند نام کاربری PG را به راحتی حدس بزنم … از هر آدرس IP … با هر یا هیچ رمز عبور حدس بزنم …
فقط پس از ماه ها و ماه ها دوباره ، شش ماه به نظر می رسد درست است) ، آیا این فایل را پس از پاهای سرد دوباره مرور کردم. این اساساً فقط یک "شکار" بود ، و به راحتی می توانست سالها و سالها چنین ادامه یابد. هنوز هم تا امروز مطمئن نیستم که کسی داده ها را به هم وصل کرده و به سرقت برود و اکنون برای فرصت های آینده باج خواهی روی آن نشسته است.
بله ، من یک احمق کامل برای خواندن و درک نکردن بودم . من آن را دریافت کردم حتی موافقم اما هنوز ، چرا حتی چنین امکان پیکربندی را دارد؟ چه کسی می خواهد به کسی اعتماد کند که فقط نام کاربری / نقش را تأمین کند و رمز عبور را نادیده بگیرد ، حتی اگر یک رمز عبور تعیین شده باشد؟ این برای من صفر است. در دفاع از من ، هیچوقت در مغز من اتفاق نیفتاده است كه كسی سیستمی را با این روش احمقانه طراحی كند. بله ، من طراحان نرم افزار پایگاه داده را تا حدی مقصر می دانم ، حتی اگر این پیکربندی پیش فرض نبود. من آن را به طور جدی تغییر دادم ، اما چرا حتی را ممکن ساخت ممکن است؟ در این کتابچه راهنما دقیقاً هشدار چربی زیادی وجود ندارد ، و هنگام راه اندازی مجدد بانک اطلاعاتی ، هیچ پیام واحدی برای آن درمورد این یا هر چیز دیگری به من اخطار داده نشده است.
این فقط ذهن من را تا به امروز جنجال می زند که چنین پیکربندی (و احتمالاً هنوز هم ممکن است) اصلاً ممکن است. شما یک گذرواژه تعیین نکرده اید تا بتواند از این طریق عبور کند. من هنوز هم نسبت به این موضوع بی اعتمادی هستم.
همچنین ، اگرچه من خودم هرگز از آن استفاده نکرده ام ، در سال های اخیر ، من داستان های وحشتناک درباره بانکهای اطلاعاتی MongoDB شنیده ام که به کلیه جهان می توانند آزادانه به آنها وصل شوند پیش فرض ! این حتی فراتر از PostgreSQL است ، و باعث می شود پوست من خزنده شود و فقط در مورد آن فکر کنم. من واقعاً برای آن احمقان فقیر که به آن پایگاه داده اعتماد دارند و فکر می کنم درست است ، احساس می کنم ، درست مثل من با PG ، که امن و عاقل است.
چرا آنها این کار را می کنند؟ اگر قرار باشد به DBA ها "امنیت شغلی" بدهد ، خوب ، این یک روش واقعا بی رحمانه برای تحقق آن است. با وجود این که این تقصیر عمدتا / عمدتاً من بوده است ، اما من هنوز این را در برابر توسعه دهندگان PostgreSQL نگه می دارم و احتمالاً هرگز آن را از نظر ذهنی نخواهم کشید. در مورد MongoDB ، به نظر می رسد که آنها واقعاً این کار را با هدف انجام داده اند ، زیرا به طور پیش فرض بود. من نمی فهمم که چگونه آنها می توانند کاربران خود را مانند این مورد در معرض خطر قرار دهند ، به خصوص بدون اینکه کاربر حتی پیکربندی را تغییر دهد.