20 ترفند برای امنیت سرورهای CentOS

این مقاله تنها ترفندهای کلی امنیتی را برای لینوکس CentOS 7/8 پوشش میدهد که برای امن کردن سیستم مورد استفاده قرار میگیرد. این ترفندها اکثرا روی انواع سرورهای فیزیکی یا ویرچوال که سرویس های شبکه ای ارائه میدهند مورد استفاده قرار میگیرند. به هر حال بعضی از این ترفندها همچنین میتوانند با موفقیت روی سایر ماشین ها اعمال شوند. مانند دسکتاپ ها، لپ تاپ ها و Raspberry PI (کامپیوترهای تک برد کوچک)تجهیزات مورد نیاز :نصب CentOS 8 Minimalنصب CentOS 7 Minimal1 - محافظت فیزیکی برای اینکه دسترسی به اتاق سرور را محدود کنید از قفل رک و دوربین مدار بسته استفاده کنید. توجه داشته باشید که هر گونه دسترسی فیزیکی به اتاق سرور مسائل جدی امنیتی را برای ماشین شما به همراه میآورد. پسورد Bios میتواند با ریست کردن جامپرها روی مادربرد یا به واسطه جدا کردن باطری مادربرد تغییر کند. همچنین یک متجاوز میتواند هارد دیسک و یا هاردهای جدیدی که مستقیما به اینترفیس های مادربرد (SATA, SCSI و غیره) متصل هستند را بدزدد و آن را با یک توزیع لینوکسی Live بوت کند و بدون جاگذاشتن هیچگونه ردی از نرم افزار، از اطلاعات تان کپی یا کلون بگیرد. 2 - کاهش تاثیرات جاسوسی در مواقعی که دیتای بشدت حساسی دارید، شما احتمالا باید از محافظت های فیزیکی پیشرفته همانند قرار دادن و قفل کردن سرورها درون یک قفس Faraday (قفسی که توسط الکتریسته محافظت میشود) و یا استفاده از یک راهکار Tempest نظامی به منظور کاهش تاثیرات جاسوسی سیستم از طریق نشت رادیویی یا الکترونیکی استفاده کنید. 3 - امنیت BIOS/UEFI کار امن کردن سرور خود را با تنظیمات امنیتی BIOS/UEFI شروع کنید. برای BIOS/UEFI یک پسورد تعریف کنید و به منظور جلوگیری از تغییر تنظیمات بایوس سیستم و یا تغییر اولویت بوت و همچنین بوت کردن ماشین از طریق یک مدیای دیگر توسط هر کاربر غیرمجازی، دیوایس های بوت مدیا مانند CD/DVD و USB را غیرفعال کنید. به منظور اعمال این نوع تغییرات روی ماشین خود نیاز دارید که دفترچه مادربرد خود را برای دستور العمل های مورد نظر بررسی و مطالعه کنید. 4 - امن کردن Boot Loader به منظور جلوگیری از دستکاری ترتیب اولویت بوت Kernel یا Run Level ها و همچنین ویرایش پارامترهای کرنل یا بردن سیستم به مد Single User به منظور صدمه زدن به سرور و همچنین ریست کردن پسورد root برای دستیابی به سطح دسترسی به منظور کنترل سیستم توسط کاربران مخرب، باید یک پسورد برای گراب تعریف کنیم. 5 - استفاده از پارتیشن های مجزا هنگامیکه CentOS را روی سیستم عملیاتی نصب میکنید از پارتیشن های مجزا و یا حتی هارد دیسک های مجزا برای بخش های زیر از سیستم استفاده کنید.کد :/(root) /boot /home /tmp /var6 - به منظور Redundancy و رشد فایل سیستم از LVM و RAID استفاده کنید پارتیشن /var مکانیست که log ها روی دیسک نوشته میشود. این بخش از سیستم میتواند در حد غیرمنتظره ای در سرورهایی با ترافیک بالا که سرویس های شبکه ای ارائه میدهند مانند وب سرور و یا فایل سرورها فضای زیادی را اشغال کنند. بنابراین از یک پارتیشن بزرگ برای /var استفاده کنید و یا حتی این پارتیشن را با استفاده از LVM یا ترکیب چندین دیسک فیزیکی به یک Raid مجازی بزرگتر (RAID 0) برای نگهداری حجم زیادی از دیتا تعریف کنید. برای سرورهای اطلاعاتی امور مربوط به اعمال Redandancy (نسخه پشتیبان) را با استفاده از لایه LVM روی لایه Raid 1 پیاده سازی کنید. 7 - تغییر گزینه های Fstab برای امن کردن پارتیشن های دیتا پارتیشن های مربوط به ذخیره اطلاعات را مجزا کنید و از اجرا کردن برنامه ها و مدیاهای مربوط به فایل مانند فلش و یا تعریف setuid bit روی این نوع از پارتیشن ها جلوگیری کنید و گزینه زیر را به فایل fstab همانطور که مشاهده میکنید اضافه کنید.کد :/dev/sda5 /nas ext4 defaults,nosuid,nodev,noexec 1 2برای جلوگیری از اجرای اسکریپت های مخرب و افزایش دهنده سطوح دسترسی، یک پارتیشن مجزا برای /tmp ایجاد کنید و آنرا با عنوان nosuid ،nodev و noexec مانت کنید.کد :/dev/sda6 /tmp ext4 defaults,nosuid,nodev,noexec 0 08 - رمزنگاری هارد دیسک در block level با استفاده از LUKS به منظور محافظت از اطلاعات حساس در شرایط دسترسی فیزیکی به هارد سیستم ، به شما پیشنهاد میکنم که نحوه رمزنگاری دیسک را مطالعه و مورد استفاده قرار دهید. 9 - استفاده از Cryptography (رمزنگاری) با استفاده از PGP و Public-Key به منظور رمزنگاری دیسک با استفاده از شیوه رمزنگاری PGP و Public-Key یا دستور OpenSSL برای encrypt و decrypt فایل های حساس با یک پسورد استفاده کنید. 10 - تنها حداقل پکیج های مورد نیاز را نصب کنید از نصب برنامه یا سرویس های غیرمهم و غیرضروری جلوگیری کنید تا جلوی نفوذ پذیری پکیج ها را بگیرید. این امر میتواند ریسک اینکه به واسطه به خطر افتادن بخشی از نرم افزار، ممکن است منجر به نفوذ پذیری سایر اپلیکیشن ها یا بخش های از سیستم و یا حتی فایل سیستم و در نهایت منجر به از دست دادن دیتا و یا جاسوسی اطلاعات شود، را افزایش دهد. 11 - آپدیت منظم سیستم به صورت مرتب سیستم را آپدیت کنید. کرنل لینوکس را با آخرین پچ های امنیتی به روز نگهدارید. همچنین همه نرم افزارهای نصب شده را با آخرین ورژن های موجود و توسط دستور زیر آپدیت کنید.کد :# yum update12 - غیر فعال کردن Ctrl+Alt+Del به منظور جلوگیری از اینکه کاربران به محض دسترسی فیزیکی به یک کیبرد یا از طریق یک کنسول ریموت نرم افزاری یا از طریق کنسول مجازی (KVM واسط نرم افزاری مجازی) بخواهند سرور را ریبوت کنند، شما باید رشته کلیدهای Ctrl+Alt+Del را با اجرای دستور زیر غیر فعال کنید.کد :# systemctl mask ctrl-alt-del.target13 - حذف پکیج های نرم افزاری غیرضروری همیشه حداقل نرم افزارهای مورد نیاز برای ماشین تان را نصب کنید. هرگز برنامه یا سرویس های اضافی را نصب نکنید. پکیج ها را تنها از مخازن رسمی و معتبر نصب کنید. ماشینی که کل زمان عمرش را قرار است به عنوان یک سرور راه اندازی شود همیشه نصب حداقلی را برایش استفاده کنید. پکیج های نصب شده را با استفاده از یکی از دستورهای زیر بررسی کنید.کد :# rpm -qaبا استفاده از دستور زیر لیستی از پکیج های نصب شده را مشاهده کنید.کد :# yum list installed >> installed.txtپکیج های غیر مفید را بررسی و لیست کنید و با استفاده از دستور زیر آنها را حذف کنید.کد :# yum remove package_name14 -نکته بعد ، Reset سرویس های Systemd بعد از آپدیت پکیج ها نمونه دستور زیر را برای ریست کردن یک سرویس systemd به منظور اعمال آپدیت های جدید اجرا کنید.کد :# systemctl restart httpd.service15 - سرویس های غیر ضروری را حذف کنید سرویس هایی که روی پورت های خاص در حال listen هستند را با استفاده از دستور ss زیر شناسایی کنید.کد :# ss -tulpnبرای لیست کردن همه سرویس های نصب شده به همراه وضعیت خروجی آنها دستور زیر را اجرا کنید.کد :# systemctl list-units -t serviceبرای مثال، نصب CentOS Minimal به صورت پیش فرض سرویس postfix را به همراه دارد که روی پورت 25 اجرا میشود. در صورتیکه سرور شما به عنوان یک میل سرور استفاده نخواهد شد سرویس postfix را حذف کنید.کد :# yum remove postfix16 - اطلاعات انتقالی را رمز نگاری کنید از پروتکل نا امن برای دسترسی ریموت و یا انتقال فایل مانند Telnet ،FTP یا سایر پروتکل های متن ساده (Plain Text) همانند SMTP ،HTTP ،NFS یا SMB استفاده نکنید که به صورت پیش فرض مراحل احراز هویت یا انتقال دیتا را رمز نگاری نمیکند. برای انتقال فایل تنها از scp و sftp و همچنین برای ارتباط ریموت به کنسول یا دسترسی گرافیکی از SSH یا VNC روی بستر تانل های SSH استفاده کنید. به منظور برقراری یک تانل برای کنسول VNC از طریق SSH دستور زیر را استفاده کنید که پورت VNC شماره 5901 را از ماشین ریموت به کامپیوتر شما فوروارد میکند.کد :# ssh -L 5902:localhost:5901 remote_machineروی ماشین لوکال خود، دستور زیر را به منظور ارتباط مجازی به دستگاه ریموت اجرا کنید.کد :# vncviewer localhost:590217 - اسکن پورت های شبکه شما میتوانید با استفاده از ابزار Nmap از یک سیستم ریموت روی LAN پورت های اکسترنال را بررسی کنید. این نوع از اسکن را میتوان برای بررسی نفوذ پذیری شبکه یا تست رول های (قوانین) فایروال استفاده کرد.کد :# nmap -sT -O 192.168.1.10 18 - فیلتر کردن پکت ها در فایروال از ابزار Firewalld برای محافظت از پورت های سیستم (پورت های مختص سرویس ها، چه باز باشند یا بسته) خصوصا پورت های ناشناخته (بالای 1024) استفاده کنید. رول های فایروال را با اجرای دستور زیر install، start، enable و list کنید.کد :# yum install firewalld # systemctl start firewalld.service # systemctl enable firewalld.service # firewall-cmd --list-all19 - بررسی پکت های پروتکل با استفاده از Tcpdumpt به منظور sniff کردن پکت های شبکه به صورت لوکال و بررسی محتوای هر گونه ترافیک مشکوک از ابزار tcpdump استفاده کنید. که میتواند پورت های مبداء و مقصد، پروتکل های TCP/IP، ترافیک لایه 2، درخواست های ARP غیر معمولی را بررسی کند. برای یک تحلیل بهتر از فایل کپچر شده tcpdump ابزار پیشرفته تری مانند Wireshark استفاده کنید.کد :# tcpdump -i eno16777736 -w tcpdump.pcap20 - از حملات DNS جلوگیری کنید فایل /etc/resolve.conf را بررسی کنید که آدرس IP مربوط به DNS سرورها را در آن تعریف شده باشد که برای نام سرورها از این آدرس ها کوئری (درخواست) گرفته میشود. به منظور جلوگیری از حملات man-in-the-middle، ترافیک غیرضروری برای سرورهای DNS و همچنین جلوگیری از Spoof یا ایجاد یک حمله DOS لازم است محتوای resolver خود را بررسی و بازبینی کنید. موارد مطرح شده تنها بخش اول بودند. در بخش بعدی درباره سایر ترفندهای امنیتی در CentOS 7/8 بحث خواهیم کرد.