یکی از پارامترهای مهم برای کسب مجوزهای مختلف همچون مجوز افتا، امن سازی سازمان میباشد. امن سازی در مولفههای مختلف همچون شبکه، وب، سیستم عامل، پایگاه داده، سیستمهای اتوماسیون، PLC و... بهکار میرود. یکی از مهم ترین مولفههای یک سازمان مولفه پایگاه داده آن میباشد. در پایگاههای داده اطلاعات حساس و غیرحساس سازمان نگهداری میشود. به این ترتیب لازم است سیاستهایی برای محافظت و نگهداری از آن امن سازی پایگاه داده (Database Hardening) در سازمان تدوین شوند.
در این مقاله به ارائه یک چک لیست برای امن سازی پایگاه داده (Database Hardening) میپردازیم. این چک لیست کلیه مواردی که برای امن سازی پایگاههای داده لازم است را معرفی میکند و میتوان انتظار داشت با رعایت آنها میتوان حفاظت مناسبی را برای پایگاه داده به عمل آورد. همچنین این چک لیست برای مولفه پایگاه داده در کسب مجوزها نیز کافی میباشد.
امنیت فیزیکی سرور پایگاه داده
- ماشینی که پایگاه داده روی آن میزبانی میشود را در یک محیط امن، حفاظت شده و دارای مانیتورینگ، برای جلوگیری از ورود غیرمجاز به محیط، دسترسی یا سرقت قرار دهید. به نظر میرسد یک اطاق کوچک دارای دوربین مدار بسته و قفل مناسب کافی باشد.
- سرورهای وب و برنامههای کاربردی دیگر (و اساسا هر مولفهی دیگری که نیاز به میزبانی داشته باشد) نباید روی سرور مربوط به پایگاه داده میزبانی شوند.
دیوار آتش (فایروال - Firewall) سرور پایگاه داده
- ابتدا سرور پایگاه داده را پشت یک فایروال قرار دهید که دارای قانون پیش فرض جلوگیری از هرگونه دسترسی به آن باشد. یعنی در مرحله اول لازم است سرور پایگاه داده از لحاظ دسترسی توسط فایروال کاملا ایزوله شود و کوچکترین دسترسیای توسط هر مولفهای به آن مقدور نباشد.
- برای دسترسی وب سرورها و برنامههای کاربردی به آن، قوانینی تدوین کنید که تنها اجازه دسترسی مولفههای فوقالذکر به سرور پایگاه داده، داده شود. به هیچ وجه اجازه دسترسی مستقیم توسط کلاینت به سرور را ندهید.
- اگر برای محیطهای تحقیق و توسعه چنین عملی میسر نیست، سرور دیگری برای ذخیرهسازی دادههای حساس مستقر سازید.
- مکانیزمی ایجاد کنید که هرگونه تغییر در قوانین فایروال را برای مدیر سیستم (SA) و مدیران پایگاه داده (DBA) ارسال شود.
- قوانین فایروال در بازههای زمانی منظم (مثلا هر ده روز) باید توسط مدیر سیستم و مدیر پایگاه داده (و در صورت لزوم بخش امنیتی سازمان) بازبینی شوند.
- در بازههای منظم (مثلا هر سه ماه) از طریق اسکن شبکه (بهتر است ارزیابی امنیتی (تست نفوذ) کامل انجام شود)، میزان سختی (از لحاظ نفوذ) و قوانین فایروال را ارزیابی کنید.
نرم افزار پایگاه داده
- تکیه به پشتیبانی نرم افزارهای تجاری یا متن باز نکنید.
- کلیه خدمات غیرضروری ارائه شده توسط نرم افزار را حذف یا غیرفعال کنید.
- کلیه حسابهای کاربری پیش فرض را حذف و کلیه کلمات عبور پیش فرض را را تغییر دهید.
- از ورود بدون نیاز به کلمه عبور هر حسابی (حتی مدیر) جلوگیری و فایلهای موقت مربوط به نصب (که ممکن است حاوی کلمات عبور باشند) را حذف کنید.
- بهروزرسانیهای ارائه شده توسط شرکتها و ارائه دهندههای نرم افزار را سریعا انجام دهید. لازم است یک مدیریت وصله تدارک ببینید.
امن سازی پایگاه داده (Database Hardening)
برنامههای کاربردی / وب سرورها / کدهای برنامههای کاربردی
- کلیه سیستمهایی (برنامههای کاربردی/وب سرورها) که دادههای حساس را دریافت میکنند بایستی متناسب با سیاستهای امنیتی پایگاه داده، امن سازی شوند.
- کلیه مولفههایی که به پایگاه داده دسترسی دارند در یک سند یادداشت میشوند.
- کلیه فایلهای مربوط به پیکربندی و منبع کدها شدیدا محافظت شوند و تنها در اختیار حساب مدیریتی سیستم عامل قرار گیرند.
- کد برنامه باید در مقابل حمله SQL Injection امن سازی شود.
- Spywareها لزوما برنامههای مخربی نیستند اما لازم است هیچگونه دسترسیای به نرمافزار کاربردی، وب یا سرور پایگاه داده نداشته باشند.
ایستگاههای کاری (Workstations) کاربر
- اگر کاربران اجازه ذخیرهسازی دادههای حفاظت شده را در سیستم/ایستگاه کاری خود را دارند باید از هرگونه دسترسی غیرمجاز به حتی یک نشست آن توسط ورود مجدد با استفاده از Screen Saver (برای ورود مجدد نیاز به ارائه اسناد مربوط همچون رمز عبور باشد) جلوگیری شود. کاربران اگر ایستگاه خود را ترک میکنند باید از قفل سیستم خود مطمئن شوند.
- اگر کاربران اجازه ذخیرهسازی دادههای محافظت شده را در سیستم/ایستگاه کاری خود را دارند، سیستم/ایستگاه کاری باید از اسناد (مثلا نام کاربری و کلمه عبور) مجزا و انفرادی (نه گروهی) استفاده کند.
- اگر کاربران اجازه ذخیرهسازی دادههای محافظت شده را در سیستم/ایستگاه کاری خود را دارند، باید این اطلاعات توسط سیستم عامل به صورت رمز شده نگهداری شوند.
- دادههای حفاظت شده به هیچ وجه در دستگاههای قابل حمل (لپتاپ، حافظههای خارجی و...) ذخیره نشوند.
- دادههای حفاظت شده به هیچ وجه نباید توسط پست الکترونیکی-چه در بدنه چه در فایل ضمیمه-ارسال شوند. مهم نیست این ارسال توسط کاربر یا خودکار انجام شود، کلا باید از آن جلوگیری به عمل آید.
- دادههای محافظ شدهای که نیازی به آنها نیست باید از روی سیستم/ایستگاه کاری کاربران حذف شود.
- اگر کاربران اجازه ذخیرهسازی دادههای محافظت شده را در سیستم/ایستگاه کاری خود را دارند، استقرار هیچگونه Spyware روی سیستم/ایستگاه کاری کاربران مجاز نیست.
حسابهای مدیریتی/مجوزها/کلمات عبور
- مدیر پایگاه داده باید کلیه منابع و اسکریپتهای درخواست شده و هرگونه تغییر در پایگاه داده را به هدف اطمینان از عدم نفوذ بازبینی و بررسی کند.
- حسابها با دسترسیهای سطح بالا تنها به یک یا چند شخص خاص داده شود آن هم به هدف پشتیبانی.
- کلیه توسعهدهندهها، تامین کنندهها، مدیران، مدیران پایگاه داده و پیمانکاران لازم است توافقنامه عدم افشا امضا کنند.
- کلیه توسعهدهندهها، تامین کنندهها، مدیران، مدیران پایگاه داده و پیمانکاران لازم است از لحاظ سوءپیشینه مربوط به جرائم مربوطه بررسی شوند (این پیوند را بررسی کنید).
- حسابهای سیستمی که توسط مدیر پایگاه داده برای وظایف مدیریتی و پشتیبانی استفاده میشود باید حسابهای مجزا و انفرادی باشند (نه گروهی).
- سیستم عاملی که در پیش زمینه برای اجرای فرآیندهای سرور داده اجرا میشوند نباید مجوز ورود مستقیم به سرور را داشته باشند.
- از سیستم عاملهای انفرادی برای ورود استفاده شود سپس با استفاده از sudo یا su در UNIX یا حالت عدم اجازه ورود توسط دسکتاپ در ویندوز برای آنها استفاده شود.
- حسابهای دسترسی به پایگاه داده که توسط مدیران پایگاه داده برای وظایف مدیریتی و پشتیبانی استفاده میشود نباید حسابهای گروهی که عموما هدف آنها اعمال خودکار مثل مانیتورینگ و پشتیبانگیری استفاده میشود، باشند. حسابهای گروهی به استثنای مانیتورینگ، عیبیابی و نگهداری، مورد استفاده روزانه قرار نمیگیرند.
- کلمات عبور مورد استفاده برای کلیه حسابهای مدیریتی سیستمی و پایگاه داده باید کلمات عبور با قوت و پیچیدگی کافی باشند. اگر شخصی در این پستها ( و در هر پستی) سازمان را ترک کرد، باید این کلمات عبور (و ترجیحا الگوی آنها) کاملا تغییر کنند.
- اگر بنا شد مدیر پایگاه داده و توسعهدهنده یک نفر باشند، این موضوع باید توسط مالک داده تایید و موافقت شود.
نقشهای کاربر در پایگاه داده/مجوزها/کلمات عبور/مدیریت و گزارش
- احراز هویت امن برای پایگاه داده انجام شود.
- فقط کاربران مجاز حق دسترسی به پایگاه داده را دارند.
- روال دسترسی به پایگاه داده و بازبینی آنها باید مستند شوند. مالک داده باید این اسناد را با امضاء خود تایید کند.
- هر کاربر باید حداقل دسترسی آن هم برای انجام وظایف خود را داشته باشد. مجوزهای دسترسی باید توسط نقشها یا گروهها تعیین شوند نه با اختصاص مجوز به هر شناسه.
- رمزهای قوی و پیچیده باید در پایگاه داده اجبار شوند (اگر به لحاظ فنی مقدور باشد) و درصورت ذخیرهسازی در فایل، پایگاه داده یا هر مولفه دیگر باید بهصورت رمز شده باشند. در صورت ارسال در شبکه هم به همینصورت.
- برنامههای کاربردی در صورت امکان باید پایگاه داده مخصوص به خود برای ذخیره نامهای کاربری و کلمات عبور داشته باشند. در غیر این صورت باید از حسابهای کاربری مخصوص به هر برنامه (مثلا در جدول جدا) استفاده شوند. در این مورد لازم است موارد امن سازی شوند و نباید در سیستم/ایستگاه کاری کاربر ذخیره شوند.
- برنامههای کاربردی باید مجوزهای کاربر را مدیریت و طبق نیازهای مالک داده به آنها رسیدگی کند.
- اشیا موجود در پایگاه داده (جداول، ایندکسها، مترادفها و...) که حاوی دادههای حساس و محافظت شده هستند، نباید شرایط صدور دسترسی عمومی (یا دسترسی وکالتی) را داشته باشند. اگر این مورد امکانپذیر نبود باید کلیه موارد مستند شوند.
- هرگونه صدور وکالتی دسترسی یا نقش، در یک محیط محافظت شده جز برای مدیر پایگاه داده ممنوع است.
- پس از تلاش حداکثر شش بار برای ورود باید حساب مورد نظر قفل و موضوع مستند و گزارش شود.
- روال رسیدگی به کاربران غیرفعال بایستی مستند و توسط مالک داده تایید شود.
- گزارشی از مجوزها به صورت ماهانه، توسط مدیر پایگاه داده در اختیار مالک داده قرار داده شود.
- گزارشی از حقوق دسترسی کاربران توسط مدیر پایگاه داده در بازههای زمانی منظم (هر یک ماه مناسب است) در اختیار مالک داده قرار گیرد.
دادههای محافظت شده
- فقط دادههایی که مورد نیاز کسب و کار هستند باید در پایگاه داده نگهداری شوند. در صورت امکان بایستی دادههایی که مورد نیاز نیستند و بلااستفاده هستند از پایگاه داده حذف شوند.
- از افزونگی دادههای محافظت شده در کل سیستم چشم پوشی شود و از وجود هرگونه رد و نشانهای از این دادهها خارج از سیستم در صورت امکان جلوگیری شود.
- اگر هدف تنها مقایسه دادهها باشد کافی است برای ذخیره سازی تنها از چکیده (Hash) دادهها استفاده شود.
- دادههای محافظت شده را از دادههای شخصی جدا کرده و تا حد ممکن آنها را برون خط نگهداری کنید.
- اگر انتقال دادهها برای سایر تهداف و برنامهها نیاز باشد، لازم است حساسیت داده و امنیت مورد نیاز آنها به برنامهها اطلاع رسانی شود.
- اگر بنا شد دادههای محافظت شده در محیطی غیر از محیط محافظت شده وجود داشته باشند، لازم است محیط مورد نظر استانداردهای امنیتی برابر با استانداردهای امنیتی محیط اولیه داشته باشد. اگر این مورد قابل دستیابی نباشد لازم است دادهها با استفاده از الگوریتمهایی استاندارد صنعتی به صورت رمزنگاری شده در محیط بعدی ذخیره شوند یا در غیر اینصورت باید دادههای آزمایشی برای این محیطها تامین شوند. توجه کنید که تنها کورسازی داده کافی نیست.
- عناصر دادههای محافظت شده (فرادادهها، اطلاعات اضافی و...) همراه با پایگاه داده مستند شوند.
- دادههای محافظت شده نباید به عنوان کلید (یا بخشی از کلید) مورد استفاده قرار گیرند.
امن سازی پایگاه داده (Database Hardening)
مدیریت تغییرات
- روال مدیریت تغییرات باید مستند شده و به نیازهای مالک داده را تامین کند.
- کلیه تغییرات در پایگاه داده ثبت و ضبط میشوند.
- کلیه برنامهها و روالهایی که قرار است اطلاعات پایگاه داده را بخوانند یا تغییر دهند مستند شوند.
حسابرسی پایگاه داده
- کلیه ورودها به سیستم عامل و پایگاه داده، موفق و ناموفق، ثبت و ضبط و حداقل برای یک سال نگهداری شوند.
- اشیا پایگاه داده (جداول، ایندکسها، مترادفها و...) همراه با دادههای محافظت شده حسابرسی شوند (در صورت امکان از لحاظ فنی).
- گزارشهای حسابرسی به صورت منظم توسط افراد آگاه و مجزا که مالک داده با توجه بعه نیازهای خود تعیین میکند، بازبینی میشوند. فرآیند بازبینی و نیازها مستند سازی شوند.
- حسابهایی که به دلیل تلاش زیاد برای ورود قفل شدهاند باید به اطلاع مدیر امنیتی مرتبط برسند.
پشتیبانگیری از پایگاه داده و بازیابی
- روال پشتیبان گیری و بازیابی پایگاه داده مستند شده و باید نیازهای مالک داده را فراهم کند.
- روال پشتیبانگیری و بازیابی باید به صورت منظم ارزیابی شوند.
- بازههای نگهداری نسخههای پشتیبان باید مستند شوند و کافی است نیازهای تداوم کسب و کار و مالک داده را تامین کنند.
امن سازی پایگاه داده (Database Hardening)
رمزنگاری پایگاه داده و مدیریت کلیدهای رمزنگاری
- دادههای محافظت شده قبل از انتقال از طریق شبکه باید طوری رمزنگاری شوند که حداقل خطر فاش شدن را در صورت شنود شبکه یا مسیریابی اشتباه از سرور تا سیستم کاربر را داشته باشد.
- اگر از رمزنگاری سطح پایگاه داده (بدون توجه به وجود یا عدم وجود انتقال روی شبکه) برای دادههای محافظت شده استفاده میشود، لازم است روال مدیریت امن کلید مستند شود (میتوان از استاندارد NIST استفاده کرد). پیشنهاد میشود کلیه سطوح کاربردی (شبکه، کاربرد و کاربر) قبل از رمزنگاری پابگاه داده رمزنگاری شوند. رمزنگاری پایگاه داده نمیتواند جایگزین موارد گفته شده شود. توجه شود رمزنگاری پایگاه داده نیاز سند استاندارد امن سازی نیست.
- برای دادههای رمزنگاری شده در محیط ذخیرهسازی که مستعد فاش شدن هستند، لازم است توسط بیش از یک نفر قابل رمزگشایی باشند. این افراد به تایید مالک داده میرسند (یا خود او تعیین میکند).
- هرچیزی که نسخههای پشتیبان را در خود نگهداری میکند باید در فرمت رمزنگاری شده باشد. کلیدهای رمزگشایی در این وسائل به صورت فاش ذخیره نمیشوند.
- روال مدیریت کلید برای رمزگشایی نسخههای پشتیبان مستند شده و در اختیار بیش از یک نفر قرار میگیرند. این افراد را مالک داده تعیین یا تایید میکند.
ترجنس ارائه دهنده خدمات مشاوره و امن سازی (هاردنینگ).