نکاتی برای امن کردن سرورهای لینوکسی:
سرورهای لینوکس برای موارد متعددی از جمله فایلسرور برای مدیریت و نگهداری فایلها، وبسرور برای میزبانی سایتهای اینترنتی، میلسرور برای ساخت و مدیریت ایمیل و بسیاری از موارد دیگر مورد استفاده قرار میگیرند. هرچند استفاده و نگهداری از سرورهای خانگی و خصوصی به دلیل عدم ارتباط آنها با شبکه اینترنت بسیار راحتتر است، اما در صورتی که سرور شما به شبکه جهانی اینترنت متصل باشد برای نگهداری و محافظت از آن باید ضوابط و نکات امنیتی مربوط به آن را نیز رعایت کرد.
مهمترین کاربرد سیستم عامل لینوکس را میتوان استفاده برای سرویسدهی دانست زیرا لینوکس امکان ارائه سرویسهای مختلف شبکه را با پایداری بسیار بالا برای ما فراهم کرده است. هم اکنون برای ارائه سرویسهای میزبانی وب، نگهداری فایل، میلسرور و… از سیستم عامل لینوکس استفاده میشود. با توجه به این موضوع، امنیت در سیستم عامل لینوکس اهمیت بالایی دارد. از نظر ابعاد امنیتی برخی توزیعهای لینوکس بسیار پایدار هستند و به ندرت باگ و حفرههای امنیتی در آنها مشاهده میشود که به دلیل متنباز بودن لینوکس این باگها به سرعت شناسایی و برطرف میشوند.
1. ارتباط دادههای خود را رمزنگاری کنید:
هر دادهای که در طول شبکه منتقل میشود را میتوان بهراحتی مورد بررسی و نظارت قرار داد. برای جلوگیری از مشکلات احتمالی باید هر جایی که برایتان ممکن بود دادههای خود را به کمک پسورد یا استفاده از Key رمزگذاری کنید.
برای انتقال فایلهای خود از Scp ،SSH ،SFTP استفاده کنید. شما همچنین میتوانید server file system ریموت راهاندازی کنید. GnuPG به شما اجازه میدهد دادهها و ارتباطات خود را رمزگذاری کرده و امضا نمایید. بهخاطر داشته باشید که OpenVPn یک VPN مقرونبهصرفه و سبک است.
۲. از به کار بردن سرویسهای FTP، تلنت و Rlogin / Rsh خودداری کنید:
در بیشتر پیکربندیهای شبکه، نام کاربری، پسوردها، دستورات FTP و تلنت و فایلهای منتقل شده را میتوان به کمک packet sniffer بهدست آورد. راهحل رایجی که برای این مشکل وجود دارد استفاده از گزینههای جایگزین همچون open srs ،SFTP ،FTPS است که رمزگذاری SSL یا TLS را به FTP اضافه میکند. برای پاک کردن NIS ،RSH و سایر سرویسهای قدیمی میتوانید از دستور زیر استفاده کنید:
# yum erase xinetd ypserv tftp-server telnet-server rsh-server
اگر از سرورهای مبتنی بر دبیان یا اوبونتو استفاده میکنید برای حذف سرویسهای ناامن از دستور زیر استفاده کنید:
$ sudo apt-get –purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
3. برای کاهش آسیبپذیری بهتر است نرم افزارهای موجود را به حداقل برسانید:
به این فکر کنید که آیا واقعا به تمامی سرویسهایی که بر روی سرور خود نصب کردهاید نیاز دارید؟ از نصب نرمافزارهای غیرضروری بر روی سرور اجتناب کنید تا آسیبپذیری آن را کمتر نمایید. از مواردی همچون Yum یا apt-get استفاده کنید تا بتوانید تمامی بستههای نرمافزاری نصب شده بر روی سرور را مرور کنید. تمامی بستههای اضافی را حذف کنید:
# yum list installed # yum list packageName # yum remove packageName
4. تغییر پورت پیشفرض ssh:
این کار بسیار ساده است، فایل کانفیگ SSH را با یک ویرایشگر باز میکنیم و دنبال خط #Port 22 میگردیم، خط را از حالت کامنت خارج کرده و عدد 22 را به عدد دلخواه (در بازه 1024 تا 65535) تغییر میدهیم. فایل را ذخیره کرده و خارج میشویم. حالا باید بهسراغ فایروال رفته و پورت موردنظر را برای SSH باز کنیم. ابتدا فایل تنظیمات فایروال را با یک ویرایشگر باز میکنیم.
nano /etc/sysconfig/iptables
و خط زیر را در فایل فایروال وارد کرده و آن را ذخیره میکنیم
-A INPUT -m state --state NEW -m tcp -p tcp --dport Port_Delkhah -j ACCEPT
فایل فایروال را ذخیره کرده و در پایان سرویس فایروال را ریست میکنیم
/etc/init.d/iptables restart
5. یک سرویس شبکه به ازای هر سیستم یا Instance ماشین مجازی:
سرویسهای مختلف شبکه را بر روی سرورهای جداگانه اجرا کنید. این کار باعث میشود سوءاستفاده از سایر سرویسها به حداقل برسد. بهعنوانمثال اگر هکری بتواند از نرمافزاری سوءاستفاده کند، قادر خواهد بود به سایر قسمتهای سرور نیز دسترسی داشته باشد.
6. از اکستنشنهای لینوکس استفاده کنید :
همانطور که میدانید لینوکس بستههای امنیتی متعددی را ارائه میکند و میتوان از این بستهها برای محافظت از سیستم در برابر برنامههایی که دچار مشکل شدهاند یا بهدرستی پیکربندی نشدهاند استفاده کرد. اگر برایتان ممکن بود از SELinux و سایر اکستنشنهای امنیتی لینوکس برای اعمال محدودیت بر روی شبکه خود استفاده کنید. بهعنوانمثال SELinux طیف وسیعی از سیاستهای امنیتی را برای کرنل لینوکس فراهم میکند.
7. عمر پسورد:
دستور chage میتواند تعداد روزهایی که بین تغییر پسورد وجود دارد را تعیین کند. این اطلاعات توسط سیستم مورد استفاده قرار میگیرد و مشخص میکند کاربر چه زمانی ملزم به تغییر پسورد خود است. برای غیرفعالسازی این گزینه از دستور زیر استفاده کنید:
# chage -M 99999 userName
8. لاگین روت را غیرفعال کنید:
هرگز بهعنوان کاربر روت وارد سیستم نشوید مگر اینکه به آن نیاز داشته باشید. برای اجرای دستورات سطح روت میتوانید از sudo استفاده کنید. این دستور امنیت سیستم را بدون اشتراکگذاری پسورد روت با سایر کاربران و ادمینها، بهبود میبخشد. این گزینه قابلیتهای نظارت و پیگیری را نیز فراهم میکند.
9. سرویسهایی که نیاز ندارید را غیرفعال سازید:
تمامی سرویسهایی که در بکگراند اجرا میشوند و به آنها نیازی ندارید را غیرفعال کنید. باید تمامی سرویسهای غیرضروری را از استارتآپ سیستم پاک کنید. دستور زیر را تایپ کنید تا بتوانید تمامی سرویسهایی که با بوت سیستم اجرا میشوند را مشاهده کنید:
# chkconfig –list | grep 3:on
برای غیرفعال کردن سرویسها میتوانید از دستور زیر استفاده کنید:
# service serviceName stop
10. از سرویس تایید هویت مرکزی استفاده کنید:
بدون سیستم تایید هویت مرکزی، دادههای تایید هویت کاربر ناپایدار خواهد بود و همین امر میتواند به اکانتهای فراموش شده یا قدیمی منجر شود. سرویس تایید هویت مرکزی به شما اجازه میدهد بر روی اکانتها و دادههای مرتبط با تایید هویت، کنترل خوبی داشته باشید.