분류 기타

Lynis로 Linux 보안 스캔

컨텐츠 정보

  • 조회 369 (작성일 )

본문

이 포괄적인 오픈 소스 보안 감사 도구를 사용하여 Linux 상자의 보안을 확인하십시오.


Linux 시스템이 실제로 얼마나 안전한지 생각해 본 적이 있습니까? 각각의 기본 설정이 있는 수많은 Linux 배포판이 있으며, 여기에서 버전 번호가 서로 다른 수십 개의 소프트웨어 패키지를 실행하고 백그라운드에서 실행되는 수많은 서비스는 거의 알거나 관심이 없습니다.


Linux 시스템에서 실행되는 소프트웨어, 네트워크 및 서비스의 전체 보안 상태 인 보안 상태를 찾으려면 몇 가지 명령을 실행하고 관련 정보를 얻을 수 있지만 파싱해야 하는 데이터의 양은 엄청납니다.


기계의 보안 상태에 대한 보고서를 생성하는 도구를 실행할 수 있다면 훨씬 더 좋을 것입니다. 운 좋게도 Lynis가 있습니다. Linux 및 Unix 기반 시스템을 강화하는 데 도움이 되는 매우 인기 있는 오픈 소스 보안 감사 도구입니다. 프로젝트에 따르면 :


"심층 보안 검사를 수행하고 시스템 자체에서 실행됩니다. 기본 목표는 보안 방어를 테스트하고 추가 시스템 강화를 위한 팁을 제공하는 것입니다. 또한 일반 시스템 정보, 취약한 소프트웨어 패키지 및 가능한 구성 문제를 검사합니다. Lynis는 일반적으로 시스템 관리자와 감사자가 시스템의 보안 방어를 평가하는 데 사용합니다. "


Lynis 설치 


Lynis는 Linux 소프트웨어 저장소에서 사용할 수 있습니다. 그렇다면 다음을 사용하여 설치할 수 있습니다.


dnf install lynis 


또는


apt install lynis 


그러나 리포지토리의 버전이 최신 버전이 아닌 경우 GitHub에서 설치하는 것이 좋습니다. (저는 Red Hat Linux 시스템을 사용하고 있지만 모든 Linux 배포판에서 실행할 수 있습니다.) 모든 도구와 마찬가지로 가상 머신에서 먼저 사용해 보는 것이 좋습니다. GitHub에서 설치하려면 :


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 실행 


도움말 섹션을 보려면 -h 옵션을 제공하여 Lynis를 회전 시키십시오.


./lynis -h 


짧은 정보 화면과 Lynis가 지원하는 모든 명령이 표시됩니다.


다음으로 몇 가지 테스트 명령을 시도하여 사물에 대한 느낌을 얻고 편안해집니다. 작업 중인 Lynis 버전을 확인하려면 다음을 실행하십시오.


$ ./lynis show version
3.0.0
$ 


Lynis에서 사용할 수있는 모든 명령을 보려면 :


$ ./lynis show commands

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

$ 


Linux 시스템 감사 


시스템의 보안 상태를 감사하려면 다음 명령을 실행하십시오.


./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
    [................] 


다음으로 보고서는 여러 섹션으로 나뉘고 각 섹션은 [+] 기호로 시작됩니다. 일부 섹션은 아래에서 볼 수 있습니다. (와, 감사 할 영역이 너무 많고 Lynis가 작업에 적합한 도구입니다!)


[+] 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
------------------------------------
  - 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가 핵심 영역이고 보안이 필요하기 때문에 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 명령과 테스트 ID 번호를 사용하여 액세스 할 수 있습니다.


./lynis show details TEST-ID 


그러면 해당 테스트에 대한 추가 정보가 표시됩니다. 예를 들어 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:-] 


Give it a try 


Linux 시스템의 보안에 대해 자세히 알아 보려면 Lynis를 확인하십시오. 그리고 Lynis가 어떻게 작동하는지 배우고 싶다면 쉘 스크립트를 파헤쳐 이 모든 정보를 수집하는 방법을 확인하십시오.


https://opensource.com/article/20/5/linux-security-lynis