۲۵ نکته برای افزایش امنیت سرور لینوکس
این مقاله در مورد “نحوهی ایمن سازی لینوکس” است و در آن به ۲۵ نکته برای افزایش ایمنیِ سیستم لینوکس میپردازیم.
۲۵ نکته برای افزایش امنیت سرور لینوکس
همه بر این باورند که لینوکس بطور پیش فرض امن است.
در اصل، لینوکس دارای طراحی میباشد که در حالت پیش فرض امن هست :
ولی بمنظور افزایش امنیت سیستم باید آنرا مطابق با نیازهای خود تنظیم کنید.
مدیریت لینوکس ممکن است سخت باشد اما انعطاف پذیری بیشتر و آپشن های تنظیمات بیشتری در اختیارتان میگذارد.
ایمن سازی یک سیستم در مقابل هکرها ، کار چالش برانگیزی است.
۱- امنیت فیزیکیِ سیستم
امکان بوت سیستم عامل از سی دی، دی وی دی، حافظه های جانبی و فلاپی را از BIOS غیر فعال کنید. سپس به منظورمحدود کردن دسترسیِ فیزیکی به سیستم، پسورد BIOS را فعال کنید و برای محافظت از GRUB برای آن پسوورد ست کنید.
۲- پارتیشنها
داشتن پارتیشنهای مختلف برای امنیت بیشتر اطلاعات در مواقعی که مشکلی پیش میآید، از اهمیت بالایی برخوردار است. با ایجاد پارتیشنهای مختلف، اطلاعات از هم جدا و دستهبندی میشوند. اگر اتفاقی ناگهانی برای یکی از پارتیشنها پیش بیاید، صرفاً اطلاعات آن پارتیشن آسیب میبینند و اطلاعات پارتیشنهای دیگر در امان هستند. بهتر است پارتیشنهای مختلفی داشته باشید و اطمینان حاصل کنید که برنامه های کاربران روی فایل سیستمهای جداگانه در زیر opt/ نصب شدهاند.
boot/ usr/ var/ home/ tmp/ opt/
۳-برای کاهش میزان آسیب پذیری، مقدار بستههای نرم افزاری نصب شده را کاهش دهید
آیا واقعاً به تمام سرویسهای نصب شده نیاز دارید؟ بهتر است برای جلوگیری از آسیب پذیری بیشتر، از نصب بستههایی که به درد شما نمیخورند، خودداری کنید. در این صورت، اگر یکی از سرویسهای شما مورد حملهای موفق واقع شد، احتمال اینکه برای دیگر سرویسها نیز خطری پیش بیاید کمتر است. سرویسهای ناخواسته و بی فایده را حذف کنید. میتوانید از فرمان ‘chkconfig‘ لیست سرویسهایی را که در runlevel 3 فعال هستند، بدست بیاورید.
'sbin/chkconfig --list |grep '3:on/
سپس برنامههای در حال اجرا را که نیازی به آنها ندارید، از طریق فرمان زیر حذف کنید:
chkconfig serviceName off
از ابزارهای مدیریت بسته ها ی RPM مانند yum و یا ابزار apt-get برای نمایش تمام بستههای نصب شده بر روی سیستم استفاده کنید و سپس موارد مورد نظر خود را از طریق فرمان زیر حذف کنید:
yum -y remove package-name sudo apt-get remove package-name
۴-پورتهای باز شبکه را چک کنید
با کمک دستور netstat، میتوانید تمامی پورتهای باز و برنامههای استفاده کننده از آن پورتها را ببینید. همانطور که قبلا گفتیم، میتوانید از طریق فرمان chkconfig تمامی سرویسهای شبکه ناخواسته را در سیستم غیر فعال کنید.
netstat -tulpn
۵- از شل امن استفاده کنید
پروتکلهای telnet و rlogin ارتباط بین سرور و کلاینت را بصورت رمز نشده برقرار میکنند.که اینکار به ایجاد حفره های امنیتی منجر میشود. SSH پروتکل امنی است که در زمان ارتباط به سرور از تکنولوژی رمزگذاری استفاده میکند.
هیچگاه، مستقیماً به عنوان کاربر روت لاگین نکنید مگر اینکه واقعا نیاز به اینکار باشد. از sudo برای اجرای فرمان استفاده کنید. به علاوه، بهتر است که شمارهی پورت پیش فرض SSH که پورت ۲۲ میباشد را به یک شماره ی پورت دیگر تغییر دهید. فایل کانفیگ اصلیِ SSH را باز کنید و برای محدود کردن دسترسی کاربران، تغییرات زیر را اعمال کنید.
vi /etc/ssh/sshd_config
لاگین روت را غیرفعال کنید.
PermitRootLogin no
فقط به کاربران خاصی اجازهی دسترسی بدهید.
AllowUsers username
از نسخهی ۲ پروتکل SSH استفاده کنید.
۶- سیستم را به روز نگه دارید
همیشه سیستم را با آخرین نسخههای منتشر شده، اصلاحات امنیتی، و آخرین کرنل آپدیت نگه دارید.
yum updates yum check-update
۷- Cronjobs را قفل کنید
cron قابلیتی دارد که میتوانید در آن مشخص کنید چه کسانی میتوانند و نمیتوانند کارها را اجرا کنند. این عملکرد با استفاده از فایلهای etc/cron.allow/ و etc/cron.deny/ کنترل میشود. برای قفل کردن کاربرانی که از cron استفاده میکند، کافیست نام آنها را در cron.deny و برای دادن دسترسی به کاربران نیز نام آنها را به Cron.allow اضافه کنید. اگر تمایل به قطع دسترسی تمام کاربران به کرون را دارید، عبارت All را به فایل cron.deny اضافه کنید.
echo ALL >>/etc/cron.deny
۸- شناسایی USB را غیرفعال کنید
بسیار اتفاق میافتد که برای حفاظت از سیستم و جلوگیری از سرقت اطلاعات، میخواهیم امکان استفاده از USB را از کاربر سلب کنیم. فایل ‘etc/modprobe.d/no-usb/’ ایجاد کنید و خط زیر را اضافه کنید تا از شناسایی فلش USB جلوگیری کنید.
install usb-storage /bin/true
۹- SELinux را فعال کنید
SELinux ( لینوکس با امنیت پیشرفته)، مکانیسم اجباریِ کنترل دسترسی است که در کرنل قرار دارد. غیرفعال کردن SELinux به معنی حذف مکانیسم امنیتی از سیستم است. بطور کل و بخصوص وقتی سیستم شما به اینترنت وصل و توسط عموم قابل دسترس است، قبل از حذف آن بهتر است خوب فکر کنید.
SELinux سه حالت امنیتی در اختیارتان میگذارد:
• Enforcing: در این حالت پیش فرض، سیاست امنیت SELinux فعال و بر روی سیستم اعمال میشود.
• Permissive: در این حالت، سیاست امنیتی بر روی سیستم به اجبار اعمال نمیشود و فقط بر روی لاگها نظارت میکند. این حالت برای پیدا کردن ایرادهای مربوط به SELinux مفید است.
• Disabled: در این حالت SELinux خاموش است.
میتوانید وضعیت فعلیِ SELinux خود را از طریف خط فرمانهای’system-config-selinux’،’system-config-selinux’و ‘sestatus’ چک کنید.
sestatus
اگر خاموش باشد، میتوانید آنرا از طریق فرمان زیر فعال کنید:
setenforce enforcing
۱۰- دسکتاپهای KDE/GNOME را کنار بگذارید
نیازی به استفاده از دسکتاپهای X Window مانند KDE یا GNOME بر روی سرور اختصاصی LAMP ندارید. میتوانید برای افزایش امنیت سرور و کارایی سیستم، آنها را غیرفعال کنید. به این منظور، فایل ‘/etc/inittab‘ را باز کنید و run level را در ۳ قرار دهید. اگر میخواهید آنرا بطور کل از سیستم حذف کنید، از فرمان زیر استفاده کنید:
"yum groupremove "X Window System
۱۱- IPv6 را غیر فعال کنید
اگر از پروتکل IPv6 استفاده نمیکنید، باید آنرا غیرفعال کنید زیرا اکثر برنامه ها و سیاستها به آن نیازی ندارند و در حال حاضر نیز در سرور به آن نیازی نیست. به فایل کانفیگ شبکه در مسیر زیربروید.
vi /etc/sysconfig/network
برای غیر فعال کردن، خط زیر را به آن اضافه کنید
NETWORKING_IPV6=no IPV6INIT=no
۱۲- استفاده از پسووردهای قدیمی را محدود کنید
اگر قصد دارید امکان استفاده از پسووردهای قدیمی را به کاربر ندهید، این کار به دردتان خواهد خورد. فایل پسووردهای قدیمی در etc/security/opasswd/ قرار دارد. میتوانید این کار را از طریق ماژول PAM انجام دهید.
فایل ‘etc/pam.d/system-auth/’ را که در زیر RHEL / CentOS / Fedora قرار گرفته باز کنید.
vi /etc/pam.d/system-auth
فایل ‘etc/pam.d/common-password/’ را که در زیر Ubuntu/Debian/Linux Mint قرار گرفته باز کنید.
vi /etc/pam.d/common-password
خط زیر را به بخش’auth’ اضافه کنید.
auth sufficient pam_unix.so likeauth nullok
خط زیر را به بخش ‘password‘ اضافه کنید تا کاربر نتواند ۵ پسوورد آخر خود را دوباره استفاده کند.
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5
فقط ۵ پسوورد آخر در حافظهی سرور باقی میمانند و اگر تلاش به استفاده از هر کدام از آنها بکنید، با پیام خطای زیر مواجه خواهید شد.
Password has been already used. Choose another
۱۳- نحوهی چک کردن تاریخ انقضای پسورد کاربران
در لینوکس، پسوورهای کاربران بطور رمزگذاری شده در فایل ‘etc/shadow/’ذخیره میشوند. برای چک کردن انقضای پسوورد کاربران، باید از فرمان ‘chage‘ استفاده کنید. با انجام این کار، به اطلاعات انقضای پسورد و همچنین آخرین تاریخ تغییر پسوورد توسط کاربر دست پیدا میکنید. با استفاده از این اطلاعات، سیستم تصمیم میگیرد که کاربر چه زمانی باید پسوورد خود را تغییر دهد.
برای چک کردن اطلاعاتی در مورد کاربر از قبیل تاریخ انقضا و زمان، از فرمان زیر استفاده کنید.
chage -l username
برای تعیین بازهی زمانیِ تغییر پسوورد برای هر کاربر، از فرمان زیر استفاده کنید.
chage -M 60 username
chage -M 60 -m 7 -W 7 userName