40 نکته افزایش سطح امنیتی سرور لینوکس [نسخه 2022]

حفظ امنیت سرور لینوکس برای محافظت از داده ها بسیار مهم است، مالکیت معنوی و زمان شما در برابر دستان کرکرها (هکرها) است. یک مدیر سیستم مسئول امنیت جعبه لینوکس است. در این قسمت از سری امنیت سرور لینوکس، 40 نکته مقاوم سازی سرور لینوکس را برای یک سرور با نصب پیش‌فرض سیستم لینوکس ارائه خواهم کرد.

امنیت سرور لینوکس  

دسترسی سریع به تیترها
    Scroll to Top

    نکات امنیتی و چک لیست افزایش امنیت سرور لینوکس

    دستورالعمل‌های زیر فرض می‌کنند که از سرور توزیع لینوکس مبتنی بر CentOS/RHEL یا Ubuntu/Debian استفاده می‌کنید.

    1. رمزگذاری ارتباطات داده برای سرور لینوکس

    تمام داده های منتقل شده از طریق یک شبکه برای نظارت باز است. در صورت امکان، داده های ارسال شده را با رمز عبور یا با استفاده از کلیدها / گواهی ها رمزگذاری کنید.

    1. برای انتقال فایل از scp، ssh ، rsync یا sftp استفاده کنید. همچنین می توانید سیستم فایل سرور راه دور یا فهرست خانه خود را با استفاده از ابزارهای sshfs و fuse مخصوص نصب کنید.
    2. GnuPG اجازه می دهد تا داده ها و ارتباطات خود را رمزگذاری و امضا کنید، دارای یک سیستم مدیریت کلید همه کاره و همچنین ماژول های دسترسی برای انواع دایرکتوری های کلید عمومی است.
    3. Open-V.-P.-N یک SSL V-.P-.N مقرون به صرفه و سبک است.
    4. Lighttpd SSL (لایه سرور امن) پیکربندی و نصب Https
    5. Apache SSL (لایه سرور امن) Https (mod_ssl) پیکربندی و نصب
    6.  و نیز پیکربندی Nginx با گواهینامه رایگان Let’s Encrypt SSL در Debian یا Ubuntu Linux

    2. استفاده از خدمات FTP، Telnet و Rlogin/Rsh در لینوکس خوداری کنید

    در اکثر پیکربندی‌های شبکه، نام‌های کاربری، گذرواژه‌ها، دستورات FTP / telnet / rsh و فایل‌های منتقل‌شده می‌توانند توسط هر کسی در همان شبکه با استفاده از sniffer بسته ضبط شوند. راه حل رایج برای این مشکل استفاده از OpenSSH ، SFTP یا FTPS (FTP روی SSL) است که رمزگذاری SSL یا TLS را به FTP اضافه می کند. دستور yum زیر را برای حذف NIS، rsh و سایر سرویس های قدیمی تایپ کنید:

    				
    					yum erase xinetd ypserv tftp-server telnet-server rsh-server
    				
    			

    اگر از سرور مبتنی بر لینوکس Debian/Ubuntu استفاده می کنید، دستور apt-get / دستور apt را برای حذف سرویس های ناامن امتحان کنید:

    				
    					sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
    				
    			

    3. نرم افزار را برای به حداقل برسانید آسیب پذیری در لینوکس به حداقل میرسد

    آیا واقعاً نیاز به نصب انواع وب سرویس دارید؟ برای جلوگیری از آسیب پذیری نرم افزاری، از نصب نرم افزارهای غیر ضروری خودداری کنید. از مدیر بسته‌های RPM مانند yum یا apt-get و/یا dpkg برای بررسی همه بسته‌های نرم‌افزاری نصب‌شده روی یک سیستم استفاده کنید. تمام بسته های ناخواسته را حذف کنید.

    				
    					yum list installed
    yum list packageName
    yum remove packageName
    
    				
    			

    اگر از لینوکس Debian/Ubuntu استفاده می کنید، در نتیجه باید از دستورات زیر استفاده کنید:

    				
    					dpkg --list
    dpkg --info packageName
    apt-get remove packageName
    				
    			

    4. یک سرویس در هر شبکه و یک سرویس در هر سرور

    سرویس های مختلف شبکه را روی سرورهای جداگانه یا ماشین مجازی جداگانه اجرا کنید. این تعداد خدمات گوناگون را که ممکن است در معرض خطر قرار گیرند محدود می کند. به عنوان مثال، اگر یک مهاجم بتواند با موفقیت از نرم افزاری مانند سرویسهای Apache سوء استفاده کند، به کل سرور از جمله سرویس های دیگر مانند MySQL/MariaDB/PGSql، سرور ایمیل و غیره دسترسی پیدا می کند.  در نتیجه به صورت تفکیک شده سرویس ها بر روی سرور بارگذاری کنید.

    5. هسته و همه نرم افزارهای لینوکس را به روز نگه دارید

    بروزرسانی وصله های امنیتی بخش مهمی از حفظ سرور لینوکس است. لینوکس تمام ابزارهای لازم را برای به روز نگه داشتن سیستم شما فراهم می کند و همچنین امکان ارتقاء آسان بین نسخه ها را فراهم می کند. همه به‌روزرسانی‌های امنیتی باید در اسرع وقت بررسی و اعمال شوند. مجدداً از مدیر سرورتان بخواهید تا بسته RPM مانند yum و یا apt-get و یا dpkg برای اعمال تمام به روز رسانی های امنیتی استفاده کند.

    				
    					yum update
    				
    			

    یا اگر دبیان و اوبونتو استفاده می کنید:

    				
    					apt-get update && apt-get upgrade
    				
    			

    مدیر سرور می تواند Red Hat / CentOS / Fedora Linux را برای ارسال اعلان به روز رسانی بسته yum از طریق ایمیل پیکربندی کنید که بعد از بروزرسانی به شما اعلام وضعیت کند. گزینه دیگر این است که تمام به روز رسانی های امنیتی را از طریق cron job اعمال کنید. در لینوکس دبیان / اوبونتو می توانید از apticron برای ارسال اعلان های امنیتی استفاده کنید. همچنین امکان پیکربندی ارتقاهای بدون نظارت برای سرور لینوکس دبیان/اوبونتو با استفاده از دستور:

    				
    					sudo apt-get install unattended-upgrades apt-listchanges bsd-mailx
    				
    			

    6. از برنامه های افزودنی امنیتی لینوکس استفاده کنید

    لینوکس دارای وصله‌های امنیتی مختلفی است که می‌توان از آنها برای محافظت در برابر برنامه‌های پیکربندی نادرست یا در معرض خطر استفاده کرد. در صورت امکان از SELinux و سایر برنامه های افزودنی امنیتی لینوکس برای اعمال محدودیت در شبکه و سایر برنامه ها استفاده کنید. به عنوان مثال، SELinux انواع سیاست های امنیتی را برای هسته لینوکس فراهم می کند.

    7. SELinux

    دیاکو وب به شما به شدت توصیه می کند از SELinux استفاده کنید که یک کنترل دسترسی اجباری انعطاف پذیر (MAC) ارائه می دهد. تحت کنترل استاندارد دسترسی اختیاری لینوکس (DAC)، برنامه یا فرآیندی که به عنوان کاربر اجرا می شود (UID یا SUID) دارای مجوزهای کاربر برای اشیایی مانند فایل ها، سوکت ها و سایر فرآیندها است. اجرای یک هسته MAC از سیستم در برابر برنامه های مخرب یا معیوب محافظت می کند که می توانند به سیستم آسیب بزنند یا از بین ببرند. مستندات رسمی Redhat را ببینید که پیکربندی SELinux را توضیح می دهد.

    8. حساب های کاربری لینوکس و پیروی از قوانین رمز عبور قوی

    از دستورات useradd / usermod برای ایجاد و نگهداری حساب های کاربری استفاده کنید. مطمئن شوید که یک قانون پایدار رمز عبور خوب و قوی دارید. به عنوان مثال، یک رمز عبور خوب شامل حداقل 10 کاراکتر و ترکیبی از حروف الفبا، عدد، نویسه خاص، الفبای بالا و پایین و غیره است. از ابزارهایی مانند John the Ripper برای پیدا کردن رمز عبور کاربران ضعیف در سرور خود استفاده کنید. برای اعمال خط مشی رمز عبور، pam_cracklib.so را پیکربندی کنید.

    9. برای امنیت بهتر رمز عبور را برای کاربران لینوکس به صورت دوره ای تنظیم کنید

    دستور chage تعداد روزهای بین تغییر رمز عبور و تاریخ آخرین تغییر رمز را تغییر می دهد. این اطلاعات توسط سیستم برای تعیین زمانی که کاربر باید رمز عبور خود را تغییر دهد استفاده می شود. فایل /etc/login.defs پیکربندی خاص را برای مجموعه رمز عبور شامل پیکربندی قدیمی رمز عبور تعریف می کند. برای غیرفعال کردن تنظیم مجدد رمز عبور وارد کنید:

    				
    					chage -M 99999 userName
    				
    			

    برای دریافت اطلاعات انقضا رمز عبور یک کاربر، وارد کنید:

    				
    					chage -l userName
    				
    			

    در نهایت، می‌توانید فایل /etc/shadow را به صورت فیلدهای زیر ویرایش کنید:​

    				
    					{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
    
    				
    			

    توضیحات هر فیلدها:

    1. Minimum_days : حداقل تعداد روزهای مورد نیاز بین تغییر رمز عبور، یعنی تعداد روزهای باقی مانده تا کاربر مجاز به تغییر رمز عبور خود باشد.
    2. Maximum_days : حداکثر تعداد روزهایی که رمز عبور معتبر است (پس از اینکه کاربر مجبور به تغییر رمز عبور خود شد).
    3. Warn : تعداد روزهای قبل از منقضی شدن رمز عبور است که به کاربر هشدار داده می شود که رمز عبور او باید تغییر کند.
    4. Expire : روزها از 1 ژانویه 1990 که این حساب غیرفعال شده است، یعنی یک تاریخ مطلق که مشخص می کند چه زمانی دیگر نمی توان از ورود استفاده کرد.

    دیاکو وب دستور chage را به جای ویرایش فایل /etc/shadow به صورت دستی توصیه می کند:

    				
    					chage -M 60 -m 7 -W 7 userName
    				
    			

    10. محدود سازی کاربردی از رمزهای عبور قبلی در لینوکس

    شما می‌توانید از استفاده یا استفاده مجدد از رمزهای عبور قدیمی در لینوکس برای همه کاربران جلوگیری کنید. پارامتر ماژول pam_unix به یاد داشته باشید را می توان برای پیکربندی تعداد رمزهای عبور قبلی که نمی توان دوباره استفاده کرد استفاده کرد.

    11. قفل کردن حساب های کاربری پس از عدم موفقیت در ورود

    در لینوکس می‌توانید از دستور faillog برای نمایش رکوردهای خطا یا تعیین محدودیت‌ها در صورت عدم موفقیت ورود استفاده کنید. faillog محتویات گزارش خرابی را از /var/log/faillog پایگاه داده / فایل log قالب بندی می کند. همچنین می‌توان از آن برای حفظ شمارنده‌ها و محدودیت‌های شکست استفاده کرد. برای مشاهده تلاش‌های ناموفق برای ورود، وارد کنید:

    				
    					faillog
    				
    			

    برای باز کردن قفل حساب پس از شکست در ورود، اجرا کنید:

    				
    					faillog -r -u userName
    				
    			

    توجه داشته باشید که می‌توانید از دستور passwd برای قفل و باز کردن حساب‌ها استفاده کنید:

    				
    					# lock Linux account
    passwd -l userName
    # unlock Linux account
    passwd -u userName
    
    				
    			

    12. چگونه می توانم مطمئن شوم که هیچ حساب کاربری رمز عبور خالی ندارد؟

    دستور زیر را در تایپ کنید

    				
    					awk -F: '($2 == "") {print}' /etc/shadow
    				
    			

    همه حساب‌های به صورت رمز خالی را قفل کنید:

    				
    					passwd -l accountName
    				
    			

    13. مطمئن شوید که هیچ حساب غیر ریشه ای UID روی 0 تنظیم نشده باشد

    فقط حساب ریشه دارای UID 0 با مجوزهای کامل برای دسترسی به سیستم است. دستور زیر را برای نمایش همه حساب‌های دارای UID روی 0 تایپ کنید:

    				
    					awk -F: '($3 == "0") {print}' /etc/passwd
    				
    			

    فقط باید یک خط را به صورت زیر ببینید:

    				
    					root:x:0:0:root:/root:/bin/bash
    				
    			

    اگر خطوط دیگری را مشاهده کردید، آنها را حذف کنید یا مطمئن شوید که حساب های دیگر توسط شما مجاز به استفاده از UID 0 هستند.

    14. Root Login را غیرفعال کنید

    هرگز به عنوان کاربر root وارد سیستم نشوید. شما باید از sudo برای اجرای دستورات سطح ریشه در صورت لزوم استفاده کنید. sudo امنیت سیستم را بدون به اشتراک گذاشتن رمز عبور root با سایر کاربران و ادمین ها بسیار افزایش می دهد. sudo ویژگی‌های ساده ممیزی و ردیابی را نیز فراهم می‌کند.

    15. امنیت سرور فیزیکی

    شما باید از دسترسی فیزیکی کنسول سرورهای لینوکس محافظت کنید. BIOS را پیکربندی کنید و بوت شدن از دستگاه های خارجی مانند DVD / CD / قلم USB را غیرفعال کنید. بایوس و پسورد grub boot loader را برای محافظت از این تنظیمات تنظیم کنید. همه جعبه‌های تولید باید در IDCها (مراکز داده‌های اینترنتی) قفل شوند و همه افراد باید قبل از دسترسی به سرور شما نوعی بررسی امنیتی را انجام دهند.

    16. خدمات ناخواسته لینوکس را غیرفعال کنید

    همه سرویس ها و دیمون های غیر ضروری (سرویس هایی که در پس زمینه اجرا می شوند) را غیرفعال کنید. باید تمام خدمات ناخواسته را از راه اندازی سیستم حذف کنید. دستور زیر را تایپ کنید تا تمام سرویس‌هایی که در زمان راه‌اندازی در سطح اجرا شماره 3 شروع شده‌اند فهرست شوند:

    				
    					chkconfig --list | grep '3:on'
    				
    			

    برای غیرفعال کردن سرویس، وارد کنید:

    				
    					service serviceName stop
    chkconfig serviceName off
    				
    			

    یادداشتی در مورد توزیع و خدمات لینوکس مبتنی بر سیستم

    توزیع های مدرن لینوکس با systemd از دستور systemctl برای همین منظور استفاده می کنند.

    فهرستی از سرویس‌ها را چاپ کنید که سطوح اجرا را فهرست می‌کند که هر کدام روشن یا خاموش شده‌اند

    				
    					systemctl list-unit-files --type=service
    systemctl list-dependencies graphical.target
    				
    			

    سرویس خاموش کنید که در زمان بود فعال نشود

    				
    					systemctl disable service
    systemctl disable httpd.service
    				
    			

    شروع /توقف /راه اندازی مجدد سرویس

    				
    					systemctl start service
    systemctl restart service
    systemctl stop service
    				
    			

    وضعیت خدمات را دریافت کنید

    				
    					systemctl status service
    systemctl status httpd.service
    				
    			

    مشاهده پیام های گزارش

    				
    					journalctl
    journalctl -u network.service
    journalctl -u ssh.service
    journalctl -f
    journalctl -k
    				
    			

    17. پورت های باز شنونده شبکه را پیدا کنید

    از دستور زیر برای لیست کردن همه پورت های باز و برنامه های مرتبط استفاده کنید:

    				
    					netstat -tulpn
    				
    			

    دستور ss به صورت زیر استفاده کنید :

    				
    					ss -tulpn
    				
    			

    یا:

    				
    					nmap -sT -O localhost
    nmap -sT -O server.example.com
    				
    			

    از iptables برای بستن پورت های باز یا متوقف کردن تمام خدمات شبکه ناخواسته با استفاده از دستورات سرویس و chkconfig استفاده کنید.

    18. سیستم های پنجره ایکس (X11) را حذف کنید

    سیستم های پنجره X روی سرور مورد نیاز نیست. دلیلی برای اجرای X11 بر روی سرور اختصاصی وب مبتنی بر لینوکس و وب سرور Apache/Nginx وجود ندارد. برای بهبود امنیت و عملکرد سرور می توانید X Windows را غیرفعال و حذف کنید . /etc/inittab را ویرایش کنید و سطح اجرا را روی 3 تنظیم کنید. در نهایت سیستم X Windows را حذف کنید، وارد کنید: در سرور CentOS 7/RHEL 7 از دستورات زیر استفاده کنید:

    				
    					yum groupremove "X Window System"
    yum group remove "GNOME Desktop"
    yum group remove "KDE Plasma Workspaces"
    yum group remove "Server with GUI"
    yum group remove "MATE Desktop"
    
    				
    			

    19. فایروال مبتنی بر Iptables و TCPWrappers را روی لینوکس پیکربندی کنید

    Iptables یک برنامه کاربردی فضای کاربری است که به شما امکان می دهد فایروال (Netfilter) ارائه شده توسط هسته لینوکس را پیکربندی کنید. از فایروال برای فیلتر کردن ترافیک استفاده کنید و فقط به ترافیک ضروری اجازه ورود و خروج دهید. همچنین از TCPWrappers یک سیستم ACL شبکه مبتنی بر میزبان برای فیلتر کردن دسترسی شبکه به اینترنت استفاده کنید. با کمک Iptables می توانید از بسیاری از حملات تضعیف و نفوذ سرویس جلوگیری کنید:

    20: افزایش مقاومت هسته /etc/sysctl.conf لینوکس

    فایل /etc/sysctl.conf برای پیکربندی پارامترهای هسته در زمان اجرا استفاده می شود. لینوکس تنظیمات را از /etc/sysctl.conf در زمان بوت می خواند و اعمال می کند. نمونه /etc/sysctl.conf :

    				
    					# Turn on execshield
    kernel.exec-shield=1
    kernel.randomize_va_space=1
    # Enable IP spoofing protection
    net.ipv4.conf.all.rp_filter=1
    # Disable IP source routing
    net.ipv4.conf.all.accept_source_route=0
    # Ignoring broadcasts request
    net.ipv4.icmp_echo_ignore_broadcasts=1
    net.ipv4.icmp_ignore_bogus_error_messages=1
    # Make sure spoofed packets get logged
    net.ipv4.conf.all.log_martians = 1
    				
    			

    21. پارتیشن های دیسک جداگانه برای سیستم لینوکس

    جداسازی فایل های سیستم عامل از فایل های کاربر ممکن است منجر به سیستم بهتر و ایمن شود. مطمئن شوید که فایل سیستم های زیر روی پارتیشن های جداگانه نصب شده اند لیست پارتیشن سیستمی:

    				
    					/usr
    /home
    /var and /var/tmp
    /tmp
    				
    			

    پارتیشن های جداگانه برای ریشه های سرور Apache و FTP ایجاد کنید. فایل /etc/fstab را ویرایش کنید و مطمئن شوید که گزینه های پیکربندی زیر را اضافه کرده اید:

    1. noexec – اجرای هیچ باینری را در این پارتیشن تنظیم نکنید (از اجرای باینری ها جلوگیری می کند اما اسکریپت ها را مجاز می کند).
    2. nodev – اجازه ندهید کاراکترها یا دستگاه های خاصی در این پارتیشن وجود داشته باشد (از استفاده از فایل های دستگاه مانند صفر، sda و غیره جلوگیری می کند).
    3. nosuid – دسترسی SUID/SGID را روی این پارتیشن تنظیم نکنید (جلوگیری از بیت setuid).

    ورودی /etc/fstab را برای محدود کردن دسترسی کاربر به /dev/sda5 (دایرکتوری ریشه سرور ftp) نمونه کنید:

    				
    					/dev/sda5  /ftpdata          ext3    defaults,nosuid,nodev,noexec 1 2
    
    				
    			

    22. سهمیه دیسک

    مطمئن شوید که سهمیه دیسک برای همه کاربران فعال است. برای پیاده سازی سهمیه دیسک، از مراحل زیر استفاده کنید:

    1. با تغییر فایل /etc/fstab، سهمیه ها در هر سیستم فایل را فعال کنید.
    2. سیستم(های) فایل را دوباره نصب کنید.
    3. فایل های پایگاه داده سهمیه را ایجاد کنید و جدول استفاده از دیسک را ایجاد کنید.
    4. تعیین سیاست های سهمیه بندی
    5. برای جزئیات بیشتر به آموزش اجرای سهمیه دیسک مراجعه کنید.

    23. IPv6 را فقط در صورتی خاموش کنید که از آن در لینوکس استفاده نمی کنید

    پروتکل اینترنت نسخه 6 (IPv6) یک لایه اینترنت جدید از مجموعه پروتکل TCP/IP را ارائه می دهد که جایگزین پروتکل اینترنت نسخه 4 (IPv4) شده و مزایای زیادی را ارائه می دهد. اگر از IPv6 استفاده نمی کنید، آن را غیرفعال کنید.

    24. باینری های SUID و SGID ناخواسته را غیرفعال کنید

    وقتی فایل اجرایی SUID/SGID دارای یک مشکل امنیتی یا باگ باشد، می‌توان از تمامی فایل‌های فعال بیت‌های SUID/SGID سوء استفاده کرد. همه کاربران محلی یا راه دور می توانند از چنین فایلی استفاده کنند. این ایده خوبی است که همه این فایل ها را پیدا کنید. از دستور find به صورت زیر استفاده کنید: باید هر فایل گزارش شده را بررسی کنید. برای جزئیات بیشتر به صفحه فایل گزارش شده مراجعه کنید.

    				
    					#See all set user id files:
    find / -perm +4000
    # See all group id files
    find / -perm +2000
    # Or combine both in a single command
    find / \( -perm -4000 -o -perm -2000 \) -print
    find / -path -prune -o -type f -perm +6000 -ls
    
    				
    			

    25: فایل های قابل نوشتن عمومی روی سرور لینوکس

    هر کسی می تواند فایل قابل نوشتن جهان را تغییر دهد که منجر به یک مشکل امنیتی می شود. از دستور زیر برای یافتن همه فایل‌های مجموعه بیت‌های قابل نوشتن و چسبنده جهان استفاده کنید:

    				
    					find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
    				
    			

    باید هر فایل گزارش‌شده را بررسی کنید و یا مجوز کاربر و گروه را درست تنظیم کنید یا آن را حذف کنید.

    26. Noowner Files

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

    				
    					find /dir -xdev \( -nouser -o -nogroup \) -print
    
    				
    			

    27. از سرویس احراز هویت متمرکز استفاده کنید

    بدون یک سیستم احراز هویت متمرکز، داده‌های تأیید اعتبار کاربر متناقض می‌شوند، که ممکن است منجر به اعتبارنامه‌های قدیمی و حساب‌های فراموش شده شود که در ابتدا باید حذف می‌شدند. یک سرویس احراز هویت متمرکز به شما امکان می دهد کنترل مرکزی حساب لینوکس / یونیکس و داده های احراز هویت را حفظ کنید. می توانید داده های تأیید اعتبار را بین سرورها هماهنگ نگه دارید. از سرویس NIS برای احراز هویت متمرکز استفاده نکنید. از OpenLDAP برای کلاینت ها و سرورها استفاده کنید.

    28. Kerberos

    Kerberos احراز هویت را به عنوان یک سرویس احراز هویت شخص ثالث قابل اعتماد با استفاده از راز مشترک رمزنگاری با این فرض انجام می‌دهد که بسته‌هایی که در طول شبکه ناامن حرکت می‌کنند را می‌توان خواند، اصلاح کرد و درج کرد. Kerberos مبتنی بر رمزنگاری کلید متقارن است و به یک مرکز توزیع کلید نیاز دارد. با استفاده از Kerberos می توانید ورود از راه دور، کپی از راه دور، کپی امن فایل بین سیستمی و سایر کارهای پرخطر را ایمن تر و قابل کنترل تر کنید. بنابراین، هنگامی که کاربران با استفاده از Kerberos به سرویس‌های شبکه احراز هویت می‌شوند، کاربران غیرمجاز که با نظارت بر ترافیک شبکه اقدام به جمع‌آوری رمزهای عبور می‌کنند، عملاً خنثی می‌شوند. نحوه راه اندازی و استفاده از Kerberos را ببینید.

    29. ثبت و حسابرسی

    برای جمع‌آوری تمام تلاش‌های هک و کرک، باید لاگ و ممیزی را پیکربندی کنید. به طور پیش فرض syslog داده ها را در فهرست /var/log/ ذخیره می کند. این همچنین برای کشف پیکربندی نادرست نرم افزار که ممکن است سیستم شما را در برابر حملات مختلف باز کند مفید است.

    30. پیام‌های گزارش مشکوک را با Logwatch و Logcheck نظارت کنید

    گزارش های خود را با استفاده از دستور logwatch ( logcheck ) بخوانید. این ابزارها زندگی خواندن گزارش شما را آسان تر می کند. شما گزارش دقیقی در مورد موارد غیر معمول در syslog از طریق ایمیل دریافت می کنید. نمونه گزارش syslog:

    				
    					 ################### Logwatch 7.3 (04/27/06) ####################
            Processing Initiated: Fri Oct 20 04:05:03 2011
            Date Range Processed: yesterday
                                  ( 2011-Oct-11 )
                                  Period is day.
          Detail Level of Output: 0
                  Type of Output: unformatted
               Logfiles for Host: www-52.nixcraft.net.in
      ##################################################################
    
     --------------------- Named Begin ------------------------
    
     **Unmatched Entries**
        general: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s)
        general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s)
        general: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s)
        general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s)
    
     ---------------------- Named End -------------------------
    
      --------------------- iptables firewall Begin ------------------------
    
     Logged 87 packets on interface eth0
       From 58.y.2a.w - 1 packet to tcp(8080)
       From 59.www.z2.yyy - 1 packet to tcp(22)
       From 60.32.n2nn.yyy - 2 packets to tcp(45633)
       From 222.1.ttt.zz - 5 packets to tcp(8000,8080,8800)
    
     ---------------------- iptables firewall End -------------------------
    
     --------------------- SSHD Begin ------------------------
    
     Users logging in through sshd:
        root:
           123.xxx.ttt.zzz: 6 times
    
     ---------------------- SSHD End -------------------------
    
     --------------------- Disk Space Begin ------------------------
    
     Filesystem            Size  Used Avail Use% Mounted on
     /dev/sda3             650G  115G  241G  44% /
     /dev/sda1              99M   25M   60M  37% /boot
    
     ---------------------- Disk Space End -------------------------
    
     ###################### Logwatch End #########################
    
    				
    			

    31. حسابداری سیستم با حسابرسی

    حسابرسی شده برای ممیزی سیستم ارائه شده است. وظیفه نوشتن سوابق ممیزی روی دیسک را بر عهده دارد. در طول راه اندازی، قوانین موجود در /etc/audit.rules توسط این دیمون خوانده می شود. شما می توانید فایل /etc/audit.rules را باز کنید و تغییراتی مانند تنظیمات محل ثبت فایل حسابرسی و سایر گزینه ها را ایجاد کنید. با ممیزی می توانید به سوالات زیر پاسخ دهید:

    1. رویدادهای راه اندازی و خاموش شدن سیستم (راه اندازی مجدد / توقف).
    2. تاریخ و زمان برگزاری.
    3. مسئولیت کاربر برای رویداد (مانند تلاش برای دسترسی به فایل /path/to/topsecret.dat).
    4. نوع رویداد (ویرایش، دسترسی، حذف، نوشتن، به روز رسانی فایل و دستورات).
    5. موفقیت یا شکست رویداد.
    6. رویدادهایی را ثبت می کند که تاریخ و زمان را تغییر می دهند.
    7. ببینید چه کسی برای تغییر تنظیمات شبکه سیستم تغییراتی ایجاد کرده است.
    8. رویدادهایی را ضبط کنید که اطلاعات کاربر/گروه را تغییر می‌دهند.
    9. ببینید چه کسی در یک فایل و غیره تغییراتی ایجاد کرده است.

    32. سرور OpenSSH را ایمن کنید

    پروتکل SSH برای ورود از راه دور و انتقال فایل از راه دور توصیه می شود. با این حال، ssh برای بسیاری از حملات باز است. نحوه ایمن سازی سرور OpenSSH:

    1. پورت ورود تغییر دهید
    2. نام کاربری روت را برای ورود به SSH غیر فعال کنید
    3. امکان لاگین با پسورد غیر فعال کنید و فقط با کلید خصوصی امکان ورود باشد.
    4. کد تایید دو مرحله ای گوگل برای ورود فعال کنید.
    5. امکان ورود به SSH را به فقط به IP ثابت مدیر سیستم محدود کنید.

    33. نصب و استفاده از سیستم تشخیص نفوذ

    سیستم تشخیص نفوذ شبکه (NIDS) یک سیستم تشخیص نفوذ است که تلاش می‌کند فعالیت‌های مخربی مانند حملات انکار سرویس، اسکن پورت یا حتی تلاش برای نفوذ به رایانه‌ها را با نظارت بر ترافیک شبکه شناسایی کند.

    این یک تمرین خوب است که هر نرم افزار بررسی یکپارچگی را قبل از آنلاین شدن سیستم در یک محیط تولید، به کار بگیرید. در صورت امکان نرم افزار AIDE را قبل از اتصال سیستم به هر شبکه ای نصب کنید. AIDE یک سیستم تشخیص نفوذ مبتنی بر میزبان (HIDS) است که می تواند اجزای داخلی یک سیستم محاسباتی را نظارت و تجزیه و تحلیل کند. توصیه می کنم نرم افزار تشخیص root kit rkhunter را نیز نصب و استفاده کنید .

    34. دستگاه های USB/Firewire/Thunderbolt را غیرفعال کنید

    دستور زیر را برای غیرفعال کردن دستگاه‌های USB در سیستم لینوکس تایپ کنید :

    				
    					echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf
    				
    			

    از همین روش برای غیرفعال کردن ماژول‌های firewire و thunderbolt استفاده کنید: پس از اتمام کار، کاربران نمی‌توانند به سرعت داده‌های حساس را در دستگاه‌های USB کپی کنند یا بدافزار/ویروس‌ها یا درب پشتی را روی سیستم مبتنی بر لینوکس خود نصب کنند.

    				
    					 echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf
    echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf
    				
    			

    35. سرویس های استفاده نشده را غیرفعال کنید

    می‌توانید سرویس‌های بلااستفاده را با استفاده از دستور service /systemctl غیرفعال کنید: به عنوان مثال، اگر برای مدتی از سرویس Nginx استفاده نمی‌کنید، آن را غیرفعال کنید:

    				
    					sudo systemctl stop service
    sudo systemctl disable service
    
    				
    			

    36. از fail2ban/denyhost به عنوان IDS استفاده کنید (نصب یک سیستم تشخیص نفوذ)

    Fail2ban یا denyhost فایل های log را برای تعداد زیادی تلاش ناموفق برای ورود اسکن می کند و آدرس IP را که علائم مخرب را نشان می دهد مسدود می کند. نحوه نصب و استفاده از denyhost برای لینوکس را ببینید . یکی می تواند fail2ban را به راحتی نصب کند:

    				
    					sudo apt-get install fail2ban
    				
    			

    فایل پیکربندی را مطابق نیاز خود ویرایش کنید:

    				
    					sudo vi /etc/fail2ban/jail.conf
    				
    			

    سرویس را مجدداً راه اندازی کنید:

    				
    					sudo systemctl restart fail2ban.service
    				
    			

    37. سرور Apache/PHP/Nginx ایمن

    فایل httpd.conf را ویرایش کنید و موارد زیر را اضافه کنید:

    				
    					ServerTokens Prod
    ServerSignature Off
    TraceEnable Off
    Options all -Indexes
    Header always unset X-Powered-By
    
    				
    			

    بعد از ویرایش فایل حتما وب سرور ریستارت کنید تا تنظیمات اعمال شود:

    				
    					sudo systemctl restart apache2.service
    				
    			

    یا

    				
    					sudo systemctl restart httpd.service
    				
    			

    38. حفاظت از فایل ها، فهرست راهنماها و ایمیل

    لینوکس محافظت بسیار خوبی در برابر دسترسی غیرمجاز به داده ها ارائه می دهد. مجوزهای فایل و MAC از دسترسی غیرمجاز به داده ها جلوگیری می کند. با این حال، اگر مهاجمی به رایانه دسترسی فیزیکی داشته باشد و بتواند به سادگی هارد رایانه را برای کپی و تجزیه و تحلیل داده های حساس به سیستم دیگری منتقل کند، مجوزهای تعیین شده توسط لینوکس بی ربط است. با استفاده از ابزارهای زیر می توانید به راحتی از فایل ها و پارتیتون ها در لینوکس محافظت کنید:

    • برای رمزگذاری و رمزگشایی فایل ها با رمز عبور، از دستور gpg استفاده کنید .
    • رمز عبور لینوکس یا یونیکس از فایل ها با openssl و ابزارهای دیگر محافظت می کند.
    • رمزگذاری کامل دیسک برای ایمن سازی داده ها ضروری است و توسط اکثر توزیع های لینوکس پشتیبانی می شود. نحوه رمزگذاری هارددیسک با استفاده از LUKS در لینوکس را ببینید. مطمئن شوید که swap نیز رمزگذاری شده است. برای ویرایش بوت لودر به رمز عبور نیاز دارید.
    • مطمئن شوید که ایمیل ریشه به حسابی که بررسی می‌کنید ارسال می‌شود.
    • نحوه انجام: رمزگذاری دیسک و پارتیشن در لینوکس برای دستگاه های تلفن همراه .
    • سرور لینوکس Dovecot IMAPS / POP3S با پیکربندی SSL .
    • نصب و پیکربندی گواهینامه SSL Linux Postfix SMTP (سرور ایمیل) .
    • نصب و پیکربندی گواهی سرور IMAP SSL پیک .
    • رمزگذاری SSL Sendmail را برای ارسال و دریافت ایمیل پیکربندی کنید.

    39. پشتیبان گیری

    نمی توان به اندازه کافی تاکید کرد که چقدر مهم است که یک نسخه پشتیبان از سیستم لینوکس خود تهیه کنید. پشتیبان گیری مناسب خارج از سایت به شما امکان می دهد تا از سرور کرک شده یعنی نفوذی بازیابی کنید. برنامه های پشتیبان سنتی یونیکس به صورت dump و restore نیز توصیه می شود. باید پشتیبان‌های رمزگذاری شده را روی حافظه خارجی مانند سرور NAS یا سرور NAS تنظیم کنید.

    40. سایر توصیه ها و نتیجه گیری ها

    هیچ زمان مطمئن نباشید که سرور شما 100% مطمئن است. همیشه راه نفوذی هست یا ایجاد می شود و یا کشف خواهد شد، پس همیشه سعی کنید به روز باشید و در حال برسی و مانیتورینگ سیستم باشید، از بک آپ گیری و کد گذاری دیتا حساس چشم پوشی نکنید، می توانید برای برای خرید سرور مجازی لینوکس از خدمات دیاکو وب استفاده کنید و در صورت نیاز از خدمات پشتیبانی رایگان برای مدیریت سرور استفاده کنید. و در کنار امنیت نرم افزاری سرویس امنیت سخت افزاری و دیتاسنتری و نگهداری مطمئن دیتا فراموش نشود.