التحقق من أمان Linux باستخدام Lynis Utility

نحن نفهم كيفية استخدام واحدة من أقوى الأدوات المساعدة المجانية لتدقيق أنظمة Linux.


هل تساءلت يومًا عن مدى أمان نظام Linux؟ هناك العديد من توزيعات لينكس (لكل منها إعداداتها الافتراضية) التي تقوم بتشغيل عشرات حزم البرامج بأرقام إصدارات مختلفة. بالإضافة إلى ذلك ، على نظام التشغيل الخاص بك في الخلفية ، هناك العديد من الخدمات التي لا تعرفها أو تفكر فيها في بعض الأحيان.

للحصول على معلومات حول النظام ، أي تحقق من الحالة العامة للبرنامج والشبكة والخدمات التي تعمل على جهاز الكمبيوتر الخاص بك مع تثبيت Linux ، فقط قم بتشغيل بعض الأوامر. ولكن الآن ماذا تفعل بالمعلومات الواردة؟ كيف نفهمها؟ بعد كل شيء ، كمية البيانات التي تحتاج إلى تحليلها ضخمة.

سيكون من الأفضل بكثير إذا كان بإمكانك فقط تشغيل أداة تولد تقريرًا منظمًا حول مستوى أمان النظام. تعد Lynis أداة شائعة مفتوحة المصدر تقوم بتدقيق أنظمة Linux و Unix.

"إنه يقوم بمسح شامل لإعدادات الأمان ويعمل على النظام نفسه. الهدف الرئيسي هو اختبار ميزات الأمان وإصدار توصيات لزيادة تحسين مستوى أمان النظام. كما يقوم بمسح المعلومات على مستوى النظام ، ومعلومات حول الحزم المثبتة ، وأخطاء التكوين المحتملة. يقول موقع المشروع على الإنترنت: إن لينيس (عادة) يستخدم من قبل مسؤولي النظام وخبراء الأمن لتقييم مستوى أمن النظام .

قم بتثبيت Lynis


يمكنك استخدام مديري الحزم لتثبيت Lynis. شريطة أن يكون نظام Linux الخاص بك مع صلة الإصدارات في المستودع بالترتيب ، يمكن تثبيت الأداة المساعدة على النحو التالي:

dnf install lynis

أو هكذا:

apt install lynis

ومع ذلك ، إذا لم يكن إصدار الأداة المساعدة في المستودع الخاص بك هو الأحدث ، فمن الأفضل تثبيت Lynis مع GitHub (أستخدم Red Hat Linux ، ولكن الأوامر المماثلة تعمل على أي توزيع Linux):

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 (Maipo)
$
$ uname  -r
3.10.0-1127.el7.x86_64
$
$ git clone https://github.com/CISOfy/lynis.git
Cloning into 'lynis'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 12566 (delta 15), reused 8 (delta 0), pack-reused 12536
Receiving objects: 100% (12566/12566), 6.36 MiB | 911.00 KiB/s, done.
Resolving deltas: 100% (9264/9264), done.
$

بمجرد استنساخ المستودع ، انتقل إليه وشاهد ما هو متاح لك ، وابحث عن الملف المسمى lynis. هذا في الواقع نص برمجي ، لذلك يمكنك فتحه وقراءة ما يفعله. في الواقع ، يتم تنفيذ Lynis بشكل أساسي باستخدام البرامج النصية:

$ cd lynis/
$ ls
CHANGELOG.md        CONTRIBUTING.md  db           developer.prf  FAQ             include  LICENSE  lynis.8  README     SECURITY.md
CODE_OF_CONDUCT.md  CONTRIBUTORS.md  default.prf  extras         HAPPY_USERS.md  INSTALL  lynis    plugins  README.md
$
$ file lynis
lynis: POSIX shell script, ASCII text executable, with very long lines
$ 

قم بتشغيل Lynis


لنبدأ مع Lynis عن طريق تشغيل المساعدة باستخدام علامة -h :

$ ./lynis -h

حتى تتمكن من التعرف على أوامر الأداة المساعدة الرئيسية. على سبيل المثال ، دعنا نكتشف نسخته:

$ ./lynis show version
3.0.0
$

للحصول على قائمة كاملة بأوامر Lynis ، اكتب:

$ ./lynis show commands

Commands:
lynis audit
lynis configure
lynis generate
lynis show
lynis update
lynis upload-only

$

تشغيل تدقيق لنظام لينكس


يبدأ كل شيء بالأمر التالي:

$ ./lynis audit system

بعد بدء الفريق سوف نتلقى تقرير مفصل. لا تقلق ، سنكتشف ذلك بعد قليل. يتم أيضًا حفظ نتائج العمل الجماعي الأخرى ، بحيث يمكنك الرجوع إليها لاحقًا.

هنا يقوم Lynis بتخزين السجلات:

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

يمكنك التحقق مما إذا تم إنشاء جميع الملفات الضرورية بالفعل:

$ ls -l /var/log/lynis.log
-rw-r-----. 1 root root 341489 Apr 30 05:52 /var/log/lynis.log
$
$ ls -l /var/log/lynis-report.dat
-rw-r-----. 1 root root 638 Apr 30 05:55 /var/log/lynis-report.dat
$ 

ندرس التقارير


يقدم Lynis تقارير مفصلة إلى حد ما ، لذلك سأغطي فقط بعض الموضوعات المهمة. أول شيء يقوم به Lynis أثناء التهيئة هو معرفة المعلومات الكاملة حول نظام التشغيل الذي يعمل على الكمبيوتر. ثم تتحقق الأداة من أدوات النظام والمكونات الإضافية التي قمت بتثبيتها:

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Checking profiles...                                      [ DONE ]

  ---------------------------------------------------
  Program version:           3.0.0
  Operating system:          Linux
  Operating system name:     Red Hat Enterprise Linux Server 7.8 (Maipo)
  Operating system version:  7.8
  Kernel version:            3.10.0
  Hardware platform:         x86_64
  Hostname:                  example
  ---------------------------------------------------
<<snip>>

[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...

[+] Plugins (phase 1)
------------------------------------
 Note: plugins have more extensive tests and may take several minutes to complete
 
  - Plugin: pam
    [..]
  - Plugin: systemd
    [................]



التقرير مقسم إلى أقسام مختلفة ، ويبدأ كل قسم بـ [+] . يمكن رؤية بعض الأقسام أدناه.

[+] Boot and services
[+] Kernel
[+] Memory and Processes
[+] Users, Groups and Authentication
[+] Shells
[+] File systems
[+] USB Devices
[+] Storage
[+] NFS
[+] Name services
[+] Ports and packages
[+] Networking
[+] Printers and Spools
[+] Software: e-mail and messaging
[+] Software: firewalls
[+] Software: webserver
[+] SSH Support
[+] SNMP Support
[+] Databases
[+] LDAP Services
[+] PHP
[+] Squid Support
[+] Logging and files
[+] Insecure services
[+] Banners and identification
[+] Scheduled tasks
[+] Accounting
[+] Time and Synchronization
[+] Cryptography
[+] Virtualization
[+] Containers
[+] Security frameworks
[+] Software: file integrity
[+] Software: System tooling
[+] Software: Malware
[+] File Permissions
[+] Home directories
[+] Kernel Hardening
[+] Hardening
[+] Custom tests

لمزيد من الوضوح ، يستخدم Lynis اصطلاحات الألوان:

  • الأخضر: كل شيء على ما يرام
  • الأصفر: لم يجد كل شيء ضروريًا ، أو نشأ موقف مثير للجدل
  • الأحمر: هذه مشكلة تستحق التعامل معها

في حالتي ، تم العثور على معظم المشاكل (العلامات الحمراء) في قسم Kernel Hardening. تحتوي النواة على العديد من المعلمات القابلة للتكوين التي تحدد عملها ، وبعض هذه المعلمات مسؤولة عن الأمان. قد لا يقوم التوزيع بتثبيتها بشكل افتراضي لأسباب مختلفة ، ولكن يجب عليك فحص كل منها ومعرفة ما إذا كنت بحاجة إلى تغيير قيمته اعتمادًا على متطلبات الأمان الخاصة بك:

[+] Kernel Hardening
------------------------------------
  - Comparing sysctl key pairs with scan profile
    - fs.protected_hardlinks (exp: 1)                         [ OK ]
    - fs.protected_symlinks (exp: 1)                          [ OK ]
    - fs.suid_dumpable (exp: 0)                               [ OK ]
    - kernel.core_uses_pid (exp: 1)                           [ OK ]
    - kernel.ctrl-alt-del (exp: 0)                            [ OK ]
    - kernel.dmesg_restrict (exp: 1)                          [ DIFFERENT ]
    - kernel.kptr_restrict (exp: 2)                           [ DIFFERENT ]
    - kernel.randomize_va_space (exp: 2)                      [ OK ]
    - kernel.sysrq (exp: 0)                                   [ DIFFERENT ]
    - kernel.yama.ptrace_scope (exp: 1 2 3)                   [ DIFFERENT ]
    - net.ipv4.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv4.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv4.conf.all.bootp_relay (exp: 0)                  [ OK ]
    - net.ipv4.conf.all.forwarding (exp: 0)                   [ OK ]
    - net.ipv4.conf.all.log_martians (exp: 1)                 [ DIFFERENT ]
    - net.ipv4.conf.all.mc_forwarding (exp: 0)                [ OK ]
    - net.ipv4.conf.all.proxy_arp (exp: 0)                    [ OK ]
    - net.ipv4.conf.all.rp_filter (exp: 1)                    [ OK ]
    - net.ipv4.conf.all.send_redirects (exp: 0)               [ DIFFERENT ]
    - net.ipv4.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv4.conf.default.accept_source_route (exp: 0)      [ OK ]
    - net.ipv4.conf.default.log_martians (exp: 1)             [ DIFFERENT ]
    - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1)           [ OK ]
    - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1)     [ OK ]
    - net.ipv4.tcp_syncookies (exp: 1)                        [ OK ]
    - net.ipv4.tcp_timestamps (exp: 0 1)                      [ OK ]
    - net.ipv6.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv6.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv6.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv6.conf.default.accept_source_route (exp: 0)      [ OK ]

انظر إلى SSH على سبيل المثال. هذا جزء مهم من النظام ويجب حمايته. لم يتم تمييز أي شيء باللون الأحمر هنا ، ولكن لدى Lynis العديد من الاقتراحات لتحسين أمان خدمة SSH:

[+] SSH Support
------------------------------------
  - Checking running SSH daemon                               [ FOUND ]
    - Searching SSH configuration                             [ FOUND ]
    - OpenSSH option: AllowTcpForwarding                      [ SUGGESTION ]
    - OpenSSH option: ClientAliveCountMax                     [ SUGGESTION ]
    - OpenSSH option: ClientAliveInterval                     [ OK ]
    - OpenSSH option: Compression                             [ SUGGESTION ]
    - OpenSSH option: FingerprintHash                         [ OK ]
    - OpenSSH option: GatewayPorts                            [ OK ]
    - OpenSSH option: IgnoreRhosts                            [ OK ]
    - OpenSSH option: LoginGraceTime                          [ OK ]
    - OpenSSH option: LogLevel                                [ SUGGESTION ]
    - OpenSSH option: MaxAuthTries                            [ SUGGESTION ]
    - OpenSSH option: MaxSessions                             [ SUGGESTION ]
    - OpenSSH option: PermitRootLogin                         [ SUGGESTION ]
    - OpenSSH option: PermitUserEnvironment                   [ OK ]
    - OpenSSH option: PermitTunnel                            [ OK ]
    - OpenSSH option: Port                                    [ SUGGESTION ]
    - OpenSSH option: PrintLastLog                            [ OK ]
    - OpenSSH option: StrictModes                             [ OK ]
    - OpenSSH option: TCPKeepAlive                            [ SUGGESTION ]
    - OpenSSH option: UseDNS                                  [ SUGGESTION ]
    - OpenSSH option: X11Forwarding                           [ SUGGESTION ]
    - OpenSSH option: AllowAgentForwarding                    [ SUGGESTION ]
    - OpenSSH option: UsePrivilegeSeparation                  [ OK ]
    - OpenSSH option: AllowUsers                              [ NOT FOUND ]
    - OpenSSH option: AllowGroups                             [ NOT FOUND ]

لا يتم تشغيل حاوية واحدة أو آلة افتراضية على نظامي. لذا ، للأسف ، لن يكون هناك شيء للقراءة هنا.

[+] Virtualization
------------------------------------

[+] Containers
------------------------------------

يتحقق Lynis من امتيازات بعض الملفات ، لأن ذلك مهم من وجهة نظر أمنية.

[+] File Permissions
------------------------------------
  - Starting file permissions check
    File: /boot/grub2/grub.cfg                                [ SUGGESTION ]
    File: /etc/cron.deny                                      [ OK ]
    File: /etc/crontab                                        [ SUGGESTION ]
    File: /etc/group                                          [ OK ]
    File: /etc/group-                                         [ OK ]
    File: /etc/hosts.allow                                    [ OK ]
    File: /etc/hosts.deny                                     [ OK ]
    File: /etc/issue                                          [ OK ]
    File: /etc/issue.net                                      [ OK ]
    File: /etc/motd                                           [ OK ]
    File: /etc/passwd                                         [ OK ]
    File: /etc/passwd-                                        [ OK ]
    File: /etc/ssh/sshd_config                                [ OK ]
    Directory: /root/.ssh                                     [ SUGGESTION ]
    Directory: /etc/cron.d                                    [ SUGGESTION ]
    Directory: /etc/cron.daily                                [ SUGGESTION ]
    Directory: /etc/cron.hourly                               [ SUGGESTION ]
    Directory: /etc/cron.weekly                               [ SUGGESTION ]
    Directory: /etc/cron.monthly                              [ SUGGESTION ]

في نهاية التقرير ، يقوم Lynis بإجراء تصحيحات بناءً على نتائج التدقيق. تبدأ كل جملة بوصف ، ويشار إلى الاختبار ( TEST-ID ) الذي تم إنشاؤه في قوسين بجواره . يقترح السطر التالي حلاً للمشكلة ، إذا كان موجودًا:

Suggestions (47):
  ----------------------------
  * If not required, consider explicit disabling of core dump in /etc/security/limits.conf file [KRNL-5820]
      https://cisofy.com/lynis/controls/KRNL-5820/

  * Check PAM configuration, add rounds if applicable and expire passwords to encrypt with new values [AUTH-9229]
      https://cisofy.com/lynis/controls/AUTH-9229/

يتيح Lynis العثور على معلومات إضافية حول كل اقتراح تصحيح باستخدام الأمر show details متبوعًا برقم اختبار TEST-ID :

./lynis show details TEST-ID

على سبيل المثال ، لمعرفة المزيد من المعلومات حول اختبار SSH-7408 ، أدخل $ ./lynis عرض التفاصيل SSH-7408 واحصل على:

$ ./lynis show details SSH-7408
2020-04-30 05:52:23 Performing test ID SSH-7408 (Check SSH specific defined options)
2020-04-30 05:52:23 Test: Checking specific defined options in /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Result: added additional options for OpenSSH < 7.5
2020-04-30 05:52:23 Test: Checking AllowTcpForwarding in /tmp/lynis.k8JwazmKc6
2020-04-30 05:52:23 Result: Option AllowTcpForwarding found
2020-04-30 05:52:23 Result: Option AllowTcpForwarding value is YES
2020-04-30 05:52:23 Result: OpenSSH option AllowTcpForwarding is in a weak configuration state and should be fixed
2020-04-30 05:52:23 Suggestion: Consider hardening SSH configuration [test:SSH-7408] [details:AllowTcpForwarding (set YES to NO)] [solution:-]

لا تحاول التعذيب


لذلك إذا كنت تريد معرفة المزيد عن أمان نظام Linux الخاص بك ، فراجع Lynis. وإذا كنت ترغب في معرفة المزيد حول كيفية عمل هذه الأداة ، وكيف تجمع كل هذه المعلومات ، فتنقل في نصوص الصدفة الخاصة بها. كما هو الحال مع الأدوات المساعدة الأخرى ، من المنطقي أن تجربها أولاً على جهاز افتراضي.

ما الأدوات التي تستخدمها؟ شارك في التعليقات.



كإعلان


تقدم VDSina خوادم على أي نظام تشغيل - اختر أحد أنظمة التشغيل المثبتة مسبقًا ، أو قم بالتثبيت من صورتك. خوادم الدفع اليومية أو عرض فريد في السوق - خوادم أبدية!


All Articles