امنیت برتر در سرورهای Apache
این مقاله به صورت قدم به قدم به شما نحوه نصب و تنظیم نمودن وب سرورهای آپاچی نسخه1.3.xجهت امنیت بالاتر را نشان می دهد كه سعی شده جزئیات كار به خوبی مورد بررسی قرار بگیرد .
قبل از اینكه ما مرحله امنیت وب سرور آپاچی را مورد بررسی قرار دهیم باید این را مشخص نماییم كه چه استفاده ای از سرور را خواهیم نمود . متنوع بودن استفاده از وب سرورهای آپاچی نوشتن یك روند جهانی جهت امنیت این سرور را بسیار مشكل می سازد . به همین دلیل است كه در این مقاله ما چنین وب سروری با چنین شرایطی را در نظر می گیریم :
این وب سرور از طریق اینترنت قابل دسترسی است
فقط صفحات اچ-تی-ام-ال ثابت در آن قرار می گیرد
این سرور مكانیزم هاستینگ مجازی را پشتیبانی خواهد نمود
صفحات مهم وب سایت فقط از طریق یك آدرسIPمخصوص و یا كاربران خاص مورد استفاده قرار می گیرد (Basic authentication)
این سرور همه درخواست های دریافتی را ضبط می كند ( شامل اطلاعاتی در مورد مرورگرهای وب نیز خواهد شد )
از این جهت قابل تاكید است كه كه مدل ذكر شده در بالا PHP, JSP, CGI و دیگر تكنولوژی هایی كه امكان تداخل با سرویس های وب سرور را دارد را پشتیبانی نمی كند . استفاده از تكنولوژی هایی كه در بالا ذكر شد با این كه در دنیای امروز مورد احتیاج هسنتد ممكن است یك ریسك امنیتی بزرگ در امنیت باشد كه قابل ذكر است یك اسكریپت كوچك می تواند امنیت سرور را به كلی كاهش دهد . ولی چرا ؟ باید بگم اسكریپت های كاربردی
ASP/CGIممكن است دارای حفره های امنیتی باشد ( مانندSQL Injection , CSS ). دوم این تكنولوژی ها ممكن است خود نیز دارای مشكل باشد ( مانند آسیب پذیری های ماژول هایPHP, Perl
و ... ) به همین دلیل است استفاده از این تكنولوژی ها را زمانی پیشنهاد می شود كه واقعا مورد احتیاج باشند .
فرض های امنیتی
یكی از مهم ترین موارد در هر پروژه كامپیوتری توجه به فرض های امنیتی است ( با توجه به توضیحاتی كه در زیر آورده می شود این موضوع به راحتی قابل تحلیل است ) و این فرض ها باید قبل از اینكه یك پروژه به انجام برسد در نظر گرفته شود . فرض های امنیتی كه ما جهت وب سرورمان در نظر گرفته ایم این ها هستند :
سیستم عامل باید تا آنجایی كه امكان دارد از نظر امنیت مورد بررسی قرار گرفته باشد و مشكلات امنیتی ان برطرف گردد ( هم در مقابل حملات داخلی و هم ریموت )
وب سرور نباید هیچ سرویس دیگری غیر از سرویس اچ-تی-تی-پی را ارائه دهد
دسترسی ریموت به سرور باید توسط یك فایروال كنترل گردد
سرویس آپاچی باید تنها سرویسی باشد كه در سیستم وجود دارد
فقط ماژول های آپاچی آن هایی كه مورد احتیاج هستند باید فعال باشند
پروسه های آپاچی باید دسترسی محدود شده به فایل های سیستمی داشته باشند
نصب سیستم عامل
قبل از نصب وب سرور آپاچی ما باید یك سیستم عامل را انتخاب نماییم . سرور آپاچی می تواند بر روی بیشتر سیستم عامل ها كامپایل و نصب شود . بیشتر مقاله بر روی امنیت وب سرور آپاچی در سیستم عامل FreeBSD ( نسخه 4.7 ) تاكید دارد ولی سعی شده تا آن جا كه امكان داشته روش های به گونه ای باشند كه در بیشتر سیستم عامل ها قابل استفاده باشد . من استفاده از سیستم عامل ویندوز را پیشنهاد نمی كنم چون جهت بالا بردن امنیت آپاچی سازگاری كمی دارد .
اولین قدم در بالا بردن امنیت وب سرور , رفع مشكلات امنیتی سیستم عامل به طور كامل است كه البته مقالات بسیاری بر روی اینترنت جهت این كار موجود است .
خوب بعد از اینكه سیستم عامل نصب شد و مشكلات امنیتی آن رفع گردید ما باید یك گروه جدید ( Apache ) را به پروسه ها اضافه كنیم ( مثال زیر این روند را در FreeBSD نشان می دهد )
pw groupadd apache
pw useradd apache -c "Apache Server" -d
/dev/null -g apache -s /sbin/nologin
به طور پیش فرض پروسه های آپاچی با سطح دسترسیnobody( به غیر از پروسه اصلی آن كه با سطح دسترسی روت اجرا می شود ) اجرا می شوند كه این نیز خود یك مشكل امنیتی است .
اما نرم افزارها ...
قدم بعدی دریافت آخرین نسخه http://httpd.apache.org وب سرور آپاچی است . كه بعضی از تنظیمات این سرور در هنگام كامپایل قابل تغییر است به همین دلیل این حائز اهمیت است كه سورس آن را در مقابل نسخه باینری دریافت نمایید .
اما بعد از دریافت ما باید تصمیم بگیریم كه چه ماژول هایی از سرور فعال شوند و توضیح كوتاهی در این مورد در http://httpd.apache.org/docs/mod قابل مشاهده است .
ماژول های آپاچی
انتخاب ماژول های این سرور از موارد مهم در امنیت سرور است. ما باید این قانون را مورد توجه قرار دهیم ( هر چه كم تر , بهتر ! ) . اما جهت روند امنیتی ماژول هایی كه مورد احتیاج هستند در اینجا ذكر شده :
httpd_core دیگر ماژول های آپاچی باید غیرفعال شوند . این ارزش را دارد كه بگویم دو ماژول آپاچی وجود دارند كه خطرناك تر از دیگر ماژول ها هستند : كامپایل نمودن نرم افزاراول از همه باید بگویم
تنظیمات ارائه شده در بالا شامل فرمان هایی می گردد كه جهت فعالیت سرور و امنیت آن مورد احتیاج است . دو هاست مجازی وجود دارند كه توسط سرور پشتیبانی شده اند : - http://www.ebank.lab (www.e-bank.lab) محتوای وب سایت های بالا به طور فیزیكی در این دایركتوری ها وجود دارد :- /chroot/httpd/www/vhosts/www.ebank.lab و هر وب سایت لاگ فایل مخصوص به خود را دارد كه در این دایركتوری هستند:- /chroot/httpd/usr/local/apache/logs/www.ebank.lab این دایركتوری ها قبل از اینكه سرور آپاچی برای اولین بار اجرا می شود باید ایجاد شوند . مالك این دایركتوری ها باید به root:sys است شود و سطح دسترسی به 0755 تغییر یابد . حال اگر فایل تنظیمات آپاچی را با نسخه ای كه در اینجا ارائه شد مقایسه كنیم چنین تغییراتی را می بینیم كه به چندی از آن ها اشاره می كنم : قدم بعدی ایجاد یك استارت آپ اسكرپت "apache.sh" است كه محتوای آن باید : |
كه این اسكرسپت باید به دایركتوری مربوطه كپی شود كه بستگی به نوع سیستم عامل دارد . مثلا در FreeBSD دایركتوری مربوطه /usr/local/etc/rc.d می باشد
حال این مقاله می تواند در بالا بردن امنیت سرورهای آپاچی بسیار مفید باشد ...