بالا بردن امنیت در ویندوز سرور 2003

 موضوع امنیت برای مدیران شبکه های کامپیوتری اهمیتی دو چندان دارد. دست یابی به امنیت بالا، یک نبرد مداوم و بی پایان برای حصول اطمینان از نصب آخرین به روز رسانی ها، همراه با به روز بودن دانش در زمینه آشنایی با تمام تهدیدات امنیتی است. اولین قدم برای تامین امنیت مناسب سرور، برنامه ریزی است. اگر شما به عنوان مدیر یا کارشناس شبکه از ویندوز سرور 2003 استفاده می کنید، می توانید از راهنمایی های این مقاله برای حصول اطمینان از دست یابی و تضمین امنیت حرفه ای خود بهره ببرید.

درباره بالا بردن امنیت ویندوز سرور 2003 کتاب هایی قطور نوشته شده. پس واقعا سخت است که بخواهیم در یک مقاله ای 2500 کلمه ای وارد جزئیاتی شویم که در مورد هر کدام می توان ده ها صفحه مطلب نوشت. در این مورد ، تصمیم گرفتیم تمرکز این مقاله را بر روی بعضی از تکنیک های کمتر شناخته شده افزایش ضریب امنیت قرار دهیم. این تکنیک ها به هیچ وجه قرار نیست جایگزین اصول شود. اما زمانی که با تکنیک های امنیتی استاندارد همراه شوند، می توانند به شما برای ساخت یک شبکه بسیار امن کمک شایانی نمایند. برای کسب اطلاعات در مورد ملزومات اساسی، توصیه می کنیم Microsoft's Windows Server 2003 Security Guide را مطالعه کنید .

محافظت از مکانیسم های تایید هویت (authentication)
یک ضرب المثل قدیمی می گوید: «قدرت یک زنجیر، تنها به اندازه استحکام ضعیف ترین حلقه اش است». درستی این جمله را به خصوص وقتی در می یابیم که صحبت از زنجیره ای از مکانیسم های امنیتی شبکه است. من افراد زیادی را می شناسم که ساعت های بی شماری صرف می کنند تا مطمئن شوند هر بسته دیتا که در سراسر شبکه تبادل می شود ، رمز نگاری شده و هویتش تایید شده باشد. یا اینکه تمام فایل های روی هارددیسک سرور، اجازه دسترسی صحیح را داشته باشند. اینگونه اقدامات البته مهم هستند ، اما واقعیت این است که اکثریت قریب به اتفاق هک ها از طریق اکانت کاربران عادی و قانونی شبکه اتفاق می افتد.

نام های کاربری و رمزهای عبور
در اکثر شبکه ها ، حساب های کاربری، تا حد زیادی ضعیف ترین بخش از زیرساخت های امنیتی شبکه به شمار می روند. هکر تنها نیاز به دانستن دو نوع اطلاعات دارد (نام کاربری و رمزعبور) آنگاه قادر به دسترسی به هر چیزی در کل شبکه شما خواهد بود! مطمئنا رمزنگاری تمامی بسته های(packets) اطلاعات هنگام تبادل در شبکه، کمک خوبی خواهد بود که جلوی هکرها را برای دسترسی و کشف رمزهای عبور بگیرد. اما راه های زیاد دیگری وجود دارد که هکرها می توانند رمزهای عبور را به دست آورند.

یکی از قدیمی ترین روش های دستیابی به رمزعبور هنوز هم این روزها جواب می دهد. این روش قدیمی، روش حملات آزمون و خطا است (brute force crack) . همانطور که گفتیم: هکرها باید حداقل یک نام کاربری و رمزعبور به منظور دسترسی کامل به منابع شبکه داشته باشند. البته ، مایکروسافت به اندازه کافی برای تقدیم نام کاربری شما به هکرها دست و دلباز بوده! یعنی همه می دانند که این نام کاربری چیزی نیست جز Administrator. این بدان معنی است که هکرها فقط نیاز به کشف کردن رمز عبور به منظور دسترسی به شبکه و سوء استفاده از آن دارند.

مایکروسافت به شدت توصیه می کند که شما نام کاربری حساب را از Administrator تغییر دهید تا هکرها آن را ندانند. مشکل این است که حتی اگر شما نام کاربری را تغییر دهید، SID (security identifier) (شناسه امنیتی) حساب دست نخورده باقی می ماند. از آنجا که مایکروسافت SID خاصی برای حساب کاربری Administrator استفاده می کند ، برای یک هکر نسبتا آسان است از طریق بررسی SID بفهمد نام کاربری به چه چیزی تغییر پیدا کرده است. در واقع، حتی برنامه هایی با رابط کاربری گرافیکی وجود دارد که به طور خودکار می تواند به شما بگوید حساب مدیر از چه نام کاربری استفاده می کند!
علی رغم امکان استفاده از چنین برنامه هایی، هنوز هم پیشنهادمان تغییر نام کاربری حساب مدیر است. زیرا انجام این کار ممکن است از حملات هکرهای غیر حرفه ای و تازه کار جلوگیری کند. علاوه بر این، فرآیندهای امنیتی دیگر، مانند فایروال و سطح رمزگذاری بسته ها، ممکن است کمک مناسبی در جلوگیری از عملکرد درست برنامه های نشان دهنده نام کاربری باشند.

بیایید برای لحظه ای فرض کنیم که یک هکر می داند امکانات امنیتی شما چگونه کار می کنند و در چه سطحی هستند و بتواند به سرعت نام کاربری Administrator شما را کشف کند. پس حالا نیاز به پیدا کردن رمزعبور دارد. این همان جایی است که حملات بی رحم که قبلا ذکر کردیم وارد میدان می شوند. ویندوز به گونه ای طراحی شده که حساب کاربری Administrator قفل یا مسدود نمی شود. این بدان معنی است که هکر قادر به انجام حملات ازمون و خطا برای شکستن رمز بدون ترس از قفل شدن حساب (در صورت وارد کردن رمزهای عبور اشتباه)می باشد.

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

تغییر نام Administrator
با این حال، چیزی که بسیاری از افراد درک نمی کنند این است که راهی دیگر هم برای دفاع از خود در برابر این نوع حمله وجود دارد. با این حال ، روشی که ما در اینجا به شما نشان دهیم می تواند بسیار خطرناک باشد و شما باید به دقت تأثیرات آن را پیش از استفاده از آن در نظر داشته باشید.
بر خلاف نسخه های دیگر ویندوز سرور، ویندوز سرور 2003 به شما اجازه می دهد تا به صورت دستی حساب کاربری Administrator را غیرفعال کنید. بنابراین شما می توانید به دیگر حساب های کاربری اختیارات مدیریتی داده و سپس حساب Administrator را غیرفعال کنید. به این ترتیب، اگر هکر موفق شود به نام کاربری حساب Administrator دست یابد، برایش بی فایده است، چون این حساب غیرفعال شده.

اما این روش قدری خطرناک است. زیرا اگر شما حساب کاربری جایگزین را به درستی و به شکل مناسب تنظیم نکنید، ممکن است خودتان بطور دائم از انجام کارهای و دسترسی های ضروری یک مدیر سیستم محروم شوید. همچنین باید در ذهن داشته باشید که حساب جایگزین شما در صورتی که کسی تلاش کند با آزمون و خطا رمزش را کشف کند، با چند بار آزمون و خطا قفل می شود. بنابراین کسی خارج از شبکه شما به عمد می تواند با وارد کردن رمزهای عبور نادرست در حساب جایگزین آن را قفل کرده و برای شما دردسر بزرگی درست کند. اگر چنین اتفاقی افتاد، تنها راهی که شما می توانید به شبکه خود برگردید، انجام بازیابی اکتیو دایرکتوری معتبر(authoritative Active Directory restore) است و حتی اگر نرم افزار پشتیبان گیر شما نیاز به شناسایی هویت شما داشته باشد، ممکن است قادر به انجام این کار نباشید.

مدیریت امنیتی حساب ها (SAM )
اگر سروری مجبور به تأیید هویت کاربر باشد، سرور باید رمزعبور کاربر را بداند (در خود ذخیره داشته باشد) تا بتواند رمزعبور ورودی را با رمزعبور ذخیره شده در خود مقایسه کند. هر کامپیوتری که ویندوز 2000 ، ایکس پی یا 2003 را اجرا می کند، در بخش مدیریت امنیتی حساب ها (Security Accounts Manager یا به اختصار SAM) رمزهای عبور کاربر را نگهداری می کند.
از نظر فنی، SAM خودش حاوی رمزعبور نیست. رمزعبور ریز ریز شده، و پس از آن هر جز رمزنگاری شده و در نهایت درون SAM ذخیره می شود. وقتی که در یک نگاه کلی در مورد روشی که ویندوز به ذخیره کلمه عبور می پردازد نگاه می کنید، آن را روشی نسبتا امن و غیر قابل نفوذ می یابید. اما در عمل یک سری مشکلات در نحوه ذخیره سازی وجود دارد. برای نمونه، کلید رمزگذاری درست همراه با جزءهایی که توسط کلید کدگذاری شده اند، بر روی سرور ذخیره می شوند. نکته بدتر این است که الگوریتم خردکردن، نسبتا به خوبی شناخته شده است. در واقع برنامه هایی در دسترس هستند که اجازه خواهد داد هر کسی که به رایانه دسترسی فیزیکی داشته باشد، به تنظیم مجدد رمزعبور بدون دانستن هر نوع اعتبار ورود به سیستم بپردازد. برنامه های کاربردی «بازیابی رمزعبور» هم وجود دارند که گفته می شود به طور مستقیم قادر به بازیابی رمزهای عبور از پایگاه داده SAM می باشند!

به طور طبیعی ، خط مقدم دفاع در برابر چنین سوء استفاده ای آن است که سرور خود را در مکانی با امنیت فیزیکی کافی و با قفل و بست محکم قرار دهید، تا از دسترسی فیزیکی هر شخص غیر مجازی به آن جلوگیری کنید. اگر جلوگیری از دسترسی فیزیکی محلی که در آن کار می کنید غیر ممکن بود، یا اگر شما تمایل دارید باز هم سطح امنیتی را بالاتر ببرید، روشی وجود دارد که می توانید با استفاده از آن کلید رمزنگاری را از سرور به هر مکان امنی که مدنظرتان است منتقل کنید.

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

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

روش رمزگذاری اطلاعات را هوشمندانه انتخاب کنید

یک کار دیگر که می توانید انجام دهید تا از روند تأیید هویت به شیوه ی امن مطمئن شوید، استفاده از روش های چندگانه تأیید هویت است. سه چیز را می توان برای تأیید هویت یک کاربر مورد استفاده قرا داد. می توانید از ویژگی که مشخصه فرد هست ، یا ویژگی که فرد آن را دارد، یا چیزی که فرد آن را می داند استفاده کنید. رایانه تحت ویندوز به طور معمول تنها از یکی از سه شیوه تأیید هویت استفاده می کند. آزمون مورد استفاده توسط ویندوز چیزی است که فرد می داند(شیوه سوم) که البته ترکیب نام کاربری / رمز عبور است.

تایید هویت دوگانه (Dual authentication )
شما می توانید با استفاده از حداقل دو روش تایید هویت کاربران شبکه، به سطح امنیت بسیار بیشتری نائل شوید. از آنجا که ویندوز پیش از این برای تایید هویت از چیزی که کاربر می دانست استفاده می کرد، شما می توانید مشخصه حیاتی کاربر (biometrics) و یا چیزی که کاربر مالک آن است (مانند کارت هوشمند) را به روش اولی احراز هویت اضافه کنید.

 فناوریهای تشخیص هویت بیومتریک چگونه کار میکنند؟

سطوح دسترسی
تا به این جا، در درجه اول در مورد روش های مختلفی که شما می توانید با استفاده ازآن، امنیت مرتبط با رمزهای عبور کاربر را ارتقاء دهید صحبت کردیم. در هنگام طراحی شبکه امن، شما باید به وضوح مشخص کنید آنچه که کاربران امکان دسترسی به آنها را در هنگام ورود دارند و آنچه اجازه ندارند چه چیزهایی است.
استاندارد فعلی برای دسترسی مجاز کاربر این است که کاربران باید مجموعه ای از کمترین اجازه های ممکن را داشته باشند، که تنها شامل اجازه انجام کارهای معمولی تعریف شده است.

موثرترین راه برای اختصاص این مجوز ها تقریبا همیشه از طریق گروه های امنیتی است. به عنوان مثال ، فرض کنید که شما چند کاربر دارید که نیاز به دسترسی به بانک اطلاعاتی حقوق و دستمزد شرکت دارند. به جای اعطای اجازه دسترسی به تمام کاربران در سطح NTFS ، شما باید گروهی را فقط و فقط برای کاربرانی که نیاز به دسترسی به بانک اطلاعاتی حقوق و دستمزد دارند ایجاد نموده و تنها مجوز را به این گروه اختصاص بدهید، نه تمام کاربران شبکه. انجام این کار مدیریت شبکه را بسیار آسانتر می کند. اگر کسی شما را بازخواست کند که کدام کاربران به بانک اطلاعاتی حقوق و دستمزد دسترسی دارند، شما به سادگی می توانید اعضای گروه ایجاد شده را برای او مشخص کنید، به جای اینکه مجبور شوید به ردیابی کلیه افرادی که مجوز داشته اند(در حالتی که همه این مجوز را داشته باشند) بپردازید.

همانطور که شما طرحی برای ساختار امنیتی شبکه خود می ریزید، توصیه میکنم ایجاد گروه ها با سطوح دسترسی متفاوت و طراحی ساختار پوشه سرور به گونه ای که هیچ همپوشانی بین گروه ها وجود نداشته باشد را از یاد نبرید. برای مثال تصور کنید که هر کدام از کارمندان بخش امور مالی نیازمند دسترسی به بانک اطلاعاتی حقوق و دستمزد باشند، اما تعداد کمی از کارمندان خارج بخش مالی نیز نیاز به دسترسی به این اطلاعات دارند. به شکل تئوری می توانید پوشه ای به نام «امور مالی» ایجاد کرده و مجوز دسترسی به اطلاعات این پوشه را به گروه اعطا کنید. بعد از آن می بایستی پوشه اطلاعات حقوق و دستمزد را درون پوشه امور مالی قرار داده و یک گروه حقوق و دستمزد ایجاد کنید. با انجام این کار ، هر عضو گروه حقوق و دستمزد و هر عضو گروه امور مالی به اطلاعات حقوق و دستمزد دسترسی خواهد داشت.
اگر چه این ترتیب از نظر فنی به درستی کار می کند، اما ایده خوبی نیست که ساختار پوشه خود را به این شکل پیکربندی کنید. زیرا به مرور با رشد شبکه، مدیریت آن دشوارتر می شود. اگر کسی از مدیران از شما بپرسد که دقیقا چه کسانی به اطلاعات حقوق و دستمزد دسترسی دارند، به جای بررسی تک گروه، مجبور خواهید بود تمامی اعضای گروه حقوق و دستمزد و گروه امور مالی را چک کنید. البته همیشه نمی توان جلوی تداخل دسترسی ها و دوباره کاری را گرفت، به ویژه هنگامی که افراد مختلف نیاز به سطوح مختلفی از دسترسی به یک پوشه داشته باشند. اما اگر از تداخل دسترسی ها جایی که ممکن است جلوگیری کنید، کار شما بسیار ساده تر خواهد شد.

اکتیو دایرکتوری(Active Directory )
یک ترفند امنیت دیگر هم است که در آخر این مقاله می خواهیم به آن بپردازیم. در طول این مقاله، در مورد راه های احراز هویت که می تواند برقرار شود و چگونه گروه ها می توانند برای امنیت مطلوب پیکربندی شوند صحبت کردیم. همه این اطلاعات در داخل اکتیو دایرکتوری نگهداری می شود. اذعان می کنیم اکتیو دایرکتوری ساده ترین چیز در جهان برای هک کردن نیست، بلکه پایگاه داده اکتیو دایرکتوری هدفی وسوسه انگیز است. زیرا از فایل های به سادگی قابل تشخیص تشکیل شده(NTDS.DIT ، EDB.LOG و TEMP.EDB) و این فایل ها در محل قابل پیش بینی قرار دارند (معمولا C:\Windows\NTDS).

آن چه بسیاری از کاربران نمی دانند این است که شما می توانید تنها با جابجایی پایگاه داده اکتیو دایرکتوری به محلی دور از انتظار کار هکرها را بسیار مشکل تر کنید. انتقال پایگاه داده ها کاری ساده است، هرچند که نیاز به راه اندازی مجدد سرور است. دستگاه سرور را در حالت بازیابی اکتیو دایرکتوری (Active Directory Restore) بوت کرده و پس از آن دستور NTDSUTIL را پس از فرمان فایلها وارد کنید. حال، تنها از دستورات MOVE DB TO یا MOVE LOGS To برای انتقال فایل های پایگاه داده و فایلهای لاگ به محل جدید استفاده نمایید.

اصول آموزش داده شده را به کار بگیرید
اگر چه تکنیک های استاندارد بسیاری برای ایجاد شبکه های امن وجود دارد، اغلب بهتر است از روش های ابتکاری و جدیدی برای مقابله با هکرها به جای استفاده از اصول اکادمیک و کتابی بهره برد. در این مقاله ، به شما تکنیک های امنیتی متعددی نشان دادیم که می توانید از آنها برای داشتن ویندوز سرور امن تری استفاده کنید.