Faites un audit de votre système avec Lynis

Article publié le 19 Février 2018

Je suis tombé par hasard sur un petit outil fort sympathique nommé Lynis. Lynis vous permet de faire un audit complet de votre système Linux/Unix. J’ai été très impressionné par sa précision,  Lynis va auditer jusqu’au moindre recoin de votre machine et vous faire un gros résumé de toutes les préconisations pour améliorer la sécurité et les performances de celle-ci. De plus Lynis détecte automatiquement les services installés et en fait l’audit  (Apache2, Squid, etc).

 

1) Installation

Sous Debian/Ubuntu:

– Installez la clé:

sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F

– Ajoutez le repo:

echo « deb https://packages.cisofy.com/community/lynis/deb/ <votre distrib> main » | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list

– Installez le paquet:

apt-get update && apt-get install lynis

 

Sous Centos/RedHat:

– Ajoutez le repo créez un fichier /etc/yum.repos.d/cisofy-lynis.repo:

[lynis]
name=CISOfy Software – Lynis package
baseurl=https://packages.cisofy.com/community/lynis/rpm/
enabled=1
gpgkey=https://packages.cisofy.com/keys/cisofy-software-rpms-public.key
gpgcheck=1

– Installez le package:

yum install lynis

 

2) Utilisation

Pour lancez un audit, il suffit de taper la commande suivante (avec le user roor ou en sudo):

lynis audit system

Pour l’exemple voici le résultat de l’audit d’une petite VM Vagrant:

 

ubuntu@ubuntu-xenial:~$ sudo lynis audit system

[ Lynis 2.6.2 ]

################################################################################
Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under the terms of the GNU General Public License.
See the LICENSE file for details about using this software.

2007-2018, CISOfy – https://cisofy.com/lynis/
Enterprise support available (compliance, plugins, interface and tools)
################################################################################

[+] Initializing program
————————————
– Detecting OS… [ DONE ]
– Checking profiles… [ DONE ]

—————————————————
Program version: 2.6.2
Operating system: Linux
Operating system name: Ubuntu Linux
Operating system version: 16.04
Kernel version: 4.4.0
Hardware platform: x86_64
Hostname: ubuntu-xenial
—————————————————
Profiles: /etc/lynis/default.prf
Log file: /var/log/lynis.log
Report file: /var/log/lynis-report.dat
Report version: 1.0
Plugin directory: /usr/share/lynis/plugins
—————————————————
Auditor: [Not Specified]
Language: en
Test category: all
Test group: all
—————————————————
– Program update status… [ NO UPDATE ]

[+] System Tools
————————————
– Scanning available tools…
– Checking system binaries…

[+] Plugins (phase 1)
————————————
Note: plugins have more extensive tests and may take several minutes to complete

– Plugins enabled [ NONE ]

[+] Boot and services
————————————
– Service Manager [ systemd ]
– Checking UEFI boot [ DISABLED ]
– Checking presence GRUB [ OK ]
– Checking presence GRUB2 [ FOUND ]
– Checking for password protection [ WARNING ]
– Check running services (systemctl) [ DONE ]
Result: found 22 running services
– Check enabled services at boot (systemctl) [ DONE ]
Result: found 32 enabled services
– Check startup files (permissions) [ OK ]

[+] Kernel
————————————
– Checking default run level [ RUNLEVEL 5 ]
– Checking CPU support (NX/PAE)
CPU support: PAE and/or NoeXecute supported [ FOUND ]
– Checking kernel version and release [ DONE ]
– Checking kernel type [ DONE ]
– Checking loaded kernel modules [ DONE ]
Found 56 active modules
– Checking Linux kernel configuration file [ FOUND ]
– Checking default I/O kernel scheduler [ FOUND ]
– Checking for available kernel update [ OK ]
– Checking core dumps configuration [ DISABLED ]
– Checking setuid core dumps configuration [ PROTECTED ]
– Check if reboot is needed [ YES ]

[+] Memory and Processes
————————————
– Checking /proc/meminfo [ FOUND ]
– Searching for dead/zombie processes [ OK ]
– Searching for IO waiting processes [ OK ]

[+] Users, Groups and Authentication
————————————
– Administrator accounts [ OK ]
– Unique UIDs [ OK ]
– Consistency of group files (grpck) [ OK ]
– Unique group IDs [ OK ]
– Unique group names [ OK ]
– Password file consistency [ OK ]
– Query system users (non daemons) [ DONE ]
– NIS+ authentication support [ NOT ENABLED ]
– NIS authentication support [ NOT ENABLED ]
– sudoers file [ FOUND ]
– Check sudoers file permissions [ OK ]
– PAM password strength tools [ SUGGESTION ]
– PAM configuration files (pam.conf) [ FOUND ]
– PAM configuration files (pam.d) [ FOUND ]
– PAM modules [ FOUND ]
– LDAP module in PAM [ NOT FOUND ]
– Accounts without expire date [ OK ]
– Accounts without password [ OK ]
– Checking user password aging (minimum) [ DISABLED ]
– User password aging (maximum) [ DISABLED ]
– Checking expired passwords [ OK ]
– Checking Linux single user mode authentication [ OK ]
– Determining default umask
– umask (/etc/profile) [ NOT FOUND ]
– umask (/etc/login.defs) [ SUGGESTION ]
– umask (/etc/init.d/rc) [ SUGGESTION ]
– LDAP authentication support [ NOT ENABLED ]
– Logging failed login attempts [ ENABLED ]

[+] Shells
————————————
– Checking shells from /etc/shells
Result: found 6 shells (valid shells: 6).
– Session timeout settings/tools [ NONE ]
– Checking default umask values
– Checking default umask in /etc/bash.bashrc [ NONE ]
– Checking default umask in /etc/profile [ NONE ]

[+] File systems
————————————
– Checking mount points
– Checking /home mount point [ SUGGESTION ]
– Checking /tmp mount point [ SUGGESTION ]
– Checking /var mount point [ SUGGESTION ]
– Query swap partitions (fstab) [ NONE ]
– Testing swap partitions [ OK ]
– Testing /proc mount (hidepid) [ SUGGESTION ]
– Checking for old files in /tmp [ OK ]
– Checking /tmp sticky bit [ OK ]
– Checking /var/tmp sticky bit [ OK ]
– ACL support root file system [ ENABLED ]
– Mount options of / [ OK ]
– Checking Locate database [ FOUND ]
– Disable kernel support of some filesystems
– Discovered kernel modules: udf

[+] USB Devices
————————————
– Checking usb-storage driver (modprobe config) [ NOT DISABLED ]
– Checking USB devices authorization [ DISABLED ]
– Checking USBGuard [ NOT FOUND ]

[+] Storage
————————————
– Checking firewire ohci driver (modprobe config) [ DISABLED ]

[+] NFS
————————————
– Check running NFS daemon [ NOT FOUND ]

[+] Name services
————————————
– Checking search domains [ FOUND ]
– Searching DNS domain name [ UNKNOWN ]
– Checking /etc/hosts
– Checking /etc/hosts (duplicates) [ OK ]
– Checking /etc/hosts (hostname) [ OK ]
– Checking /etc/hosts (localhost) [ OK ]
– Checking /etc/hosts (localhost to IP) [ OK ]

[+] Ports and packages
————————————
– Searching package managers
– Searching dpkg package manager [ FOUND ]
– Querying package manager
– Query unpurged packages [ NONE ]
– Checking security repository in sources.list file [ OK ]
– Checking APT package database [ OK ]
– Checking vulnerable packages [ WARNING ]
– Checking upgradeable packages [ SKIPPED ]
– Checking package audit tool [ INSTALLED ]
Found: apt-check

[+] Networking
————————————
– Checking IPv6 configuration [ ENABLED ]
Configuration method [ AUTO ]
IPv6 only [ NO ]
– Checking configured nameservers
– Testing nameservers
Nameserver: 10.0.2.3 [ OK ]
– Minimal of 2 responsive nameservers [ WARNING ]
– Checking default gateway [ DONE ]
– Getting listening ports (TCP/UDP) [ DONE ]
* Found 3 ports
– Checking promiscuous interfaces [ OK ]
– Checking waiting connections [ OK ]
– Checking status DHCP client [ RUNNING ]
– Checking for ARP monitoring software [ NOT FOUND ]

[+] Printers and Spools
————————————
– Checking cups daemon [ NOT FOUND ]
– Checking lp daemon [ NOT RUNNING ]

[+] Software: e-mail and messaging
————————————

[+] Software: firewalls
————————————
– Checking iptables kernel module [ NOT FOUND ]
– Checking host based firewall [ NOT ACTIVE ]

[+] Software: webserver
————————————
– Checking Apache [ NOT FOUND ]
– Checking nginx [ NOT FOUND ]

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

[+] SNMP Support
————————————
– Checking running SNMP daemon [ NOT FOUND ]

[+] Databases
————————————
No database engines found

[+] LDAP Services
————————————
– Checking OpenLDAP instance [ NOT FOUND ]

[+] PHP
————————————
– Checking PHP [ NOT FOUND ]

[+] Squid Support
————————————
– Checking running Squid daemon [ NOT FOUND ]

[+] Logging and files
————————————
– Checking for a running log daemon [ OK ]
– Checking Syslog-NG status [ NOT FOUND ]
– Checking systemd journal status [ FOUND ]
– Checking Metalog status [ NOT FOUND ]
– Checking RSyslog status [ FOUND ]
– Checking RFC 3195 daemon status [ NOT FOUND ]
– Checking minilogd instances [ NOT FOUND ]
– Checking logrotate presence [ OK ]
– Checking log directories (static list) [ DONE ]
– Checking open log files [ DONE ]
– Checking deleted files in use [ FILES FOUND ]

[+] Insecure services
————————————
– Checking inetd status [ NOT ACTIVE ]

[+] Banners and identification
————————————
– /etc/issue [ FOUND ]
– /etc/issue contents [ WEAK ]
– /etc/issue.net [ FOUND ]
– /etc/issue.net contents [ WEAK ]

[+] Scheduled tasks
————————————
– Checking crontab/cronjob [ DONE ]
– Checking atd status [ RUNNING ]
– Checking at users [ DONE ]
– Checking at jobs [ NONE ]

[+] Accounting
————————————
– Checking accounting information [ NOT FOUND ]
– Checking sysstat accounting data [ NOT FOUND ]
– Checking auditd [ NOT FOUND ]

[+] Time and Synchronization
————————————

[+] Cryptography
————————————
– Checking for expired SSL certificates [0/1] [ NONE ]

[+] Virtualization
————————————

[+] Containers
————————————

[+] Security frameworks
————————————
– Checking presence AppArmor [ FOUND ]
– Checking AppArmor status [ ENABLED ]
– Checking presence SELinux [ NOT FOUND ]
– Checking presence grsecurity [ NOT FOUND ]
– Checking for implemented MAC framework [ OK ]

[+] Software: file integrity
————————————
– Checking file integrity tools
– Checking presence integrity tool [ NOT FOUND ]

[+] Software: System tooling
————————————
– Checking automation tooling
– Automation tooling [ NOT FOUND ]
– Checking for IDS/IPS tooling [ NONE ]

[+] Software: Malware
————————————

[+] File Permissions
————————————
– Starting file permissions check
/root/.ssh [ OK ]

[+] Home directories
————————————
– Checking shell history files [ OK ]

[+] 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) [ DIFFERENT ]
– kernel.core_uses_pid (exp: 1) [ DIFFERENT ]
– 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) [ OK ]
– 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) [ DIFFERENT ]
– 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 ]

[+] Hardening
————————————
– Installed compiler(s) [ NOT FOUND ]
– Installed malware scanner [ NOT FOUND ]

[+] Custom Tests
————————————
– Running custom tests… [ NONE ]

[+] Plugins (phase 2)
————————————

================================================================================

-[ Lynis 2.6.2 Results ]-

Warnings (3):
—————————-
! Reboot of system is most likely needed [KRNL-5830]
– Solution : reboot
https://cisofy.com/controls/KRNL-5830/

! Found one or more vulnerable packages. [PKGS-7392]
https://cisofy.com/controls/PKGS-7392/

! Couldn’t find 2 responsive nameservers [NETW-2705]
https://cisofy.com/controls/NETW-2705/

Suggestions (39):
—————————-
* Set a password on GRUB bootloader to prevent altering boot configuration (e.g. boot in single user mode without password) [BOOT-5122]
https://cisofy.com/controls/BOOT-5122/

* Install a PAM module for password strength testing like pam_cracklib or pam_passwdqc [AUTH-9262]
https://cisofy.com/controls/AUTH-9262/

* Configure minimum password age in /etc/login.defs [AUTH-9286]
https://cisofy.com/controls/AUTH-9286/

* Configure maximum password age in /etc/login.defs [AUTH-9286]
https://cisofy.com/controls/AUTH-9286/

* Default umask in /etc/login.defs could be more strict like 027 [AUTH-9328]
https://cisofy.com/controls/AUTH-9328/

* Default umask in /etc/init.d/rc could be more strict like 027 [AUTH-9328]
https://cisofy.com/controls/AUTH-9328/

* To decrease the impact of a full /home file system, place /home on a separated partition [FILE-6310]
https://cisofy.com/controls/FILE-6310/

* To decrease the impact of a full /tmp file system, place /tmp on a separated partition [FILE-6310]
https://cisofy.com/controls/FILE-6310/

* To decrease the impact of a full /var file system, place /var on a separated partition [FILE-6310]
https://cisofy.com/controls/FILE-6310/

* Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [STRG-1840]
https://cisofy.com/controls/STRG-1840/

* Check DNS configuration for the dns domain name [NAME-4028]
https://cisofy.com/controls/NAME-4028/

* Install debsums utility for the verification of packages with known good database. [PKGS-7370]
https://cisofy.com/controls/PKGS-7370/

* Update your system with apt-get update, apt-get upgrade, apt-get dist-upgrade and/or unattended-upgrades [PKGS-7392]
https://cisofy.com/controls/PKGS-7392/

* Install package apt-show-versions for patch management purposes [PKGS-7394]
https://cisofy.com/controls/PKGS-7394/

* Check your resolv.conf file and fill in a backup nameserver if possible [NETW-2705]
https://cisofy.com/controls/NETW-2705/

* Consider running ARP monitoring software (arpwatch,arpon) [NETW-3032]
https://cisofy.com/controls/NETW-3032/

* Configure a firewall/packet filter to filter incoming and outgoing traffic [FIRE-4590]
https://cisofy.com/controls/FIRE-4590/

* Consider hardening SSH configuration [SSH-7408]
– Details : AllowTcpForwarding (YES –> NO)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : ClientAliveCountMax (3 –> 2)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : Compression (YES –> (DELAYED|NO))
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : LogLevel (INFO –> VERBOSE)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : MaxAuthTries (6 –> 2)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : MaxSessions (10 –> 2)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : PermitRootLogin (WITHOUT-PASSWORD –> NO)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : Port (22 –> )
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : TCPKeepAlive (YES –> NO)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : UsePrivilegeSeparation (YES –> SANDBOX)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : X11Forwarding (YES –> NO)
https://cisofy.com/controls/SSH-7408/

* Consider hardening SSH configuration [SSH-7408]
– Details : AllowAgentForwarding (YES –> NO)
https://cisofy.com/controls/SSH-7408/

* Check what deleted files are still in use and why. [LOGG-2190]
https://cisofy.com/controls/LOGG-2190/

* Add a legal banner to /etc/issue, to warn unauthorized users [BANN-7126]
https://cisofy.com/controls/BANN-7126/

* Add legal banner to /etc/issue.net, to warn unauthorized users [BANN-7130]
https://cisofy.com/controls/BANN-7130/

* Enable process accounting [ACCT-9622]
https://cisofy.com/controls/ACCT-9622/

* Enable sysstat to collect accounting (no results) [ACCT-9626]
https://cisofy.com/controls/ACCT-9626/

* Enable auditd to collect audit information [ACCT-9628]
https://cisofy.com/controls/ACCT-9628/

* Install a file integrity tool to monitor changes to critical and sensitive files [FINT-4350]
https://cisofy.com/controls/FINT-4350/

* Determine if automation tools are present for system management [TOOL-5002]
https://cisofy.com/controls/TOOL-5002/

* One or more sysctl values differ from the scan profile and could be tweaked [KRNL-6000]
– Solution : Change sysctl value or disable test (skip-test=KRNL-6000:<sysctl-key>)
https://cisofy.com/controls/KRNL-6000/

* Harden the system by installing at least one malware scanner, to perform periodic file system scans [HRDN-7230]
– Solution : Install a tool like rkhunter, chkrootkit, OSSEC
https://cisofy.com/controls/HRDN-7230/

Follow-up:
—————————-
– Show details of a test (lynis show details TEST-ID)
– Check the logfile for all details (less /var/log/lynis.log)
– Read security controls texts (https://cisofy.com)
– Use –upload to upload data to central system (Lynis Enterprise users)

================================================================================

Lynis security scan details:

Hardening index : 56 [########### ]
Tests performed : 206
Plugins enabled : 0

Components:
– Firewall [X]
– Malware scanner [X]

Lynis Modules:
– Compliance Status [?]
– Security Audit [V]
– Vulnerability Scan [V]

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

================================================================================

Lynis 2.6.2

Auditing, system hardening, and compliance for UNIX-based systems
(Linux, macOS, BSD, and others)

2007-2018, CISOfy – https://cisofy.com/lynis/
Enterprise support available (compliance, plugins, interface and tools)

================================================================================

[TIP]: Enhance Lynis audits by adding your settings to custom.prf (see /etc/lynis/default.prf for all settings)

 

Pour plus d’information n’hésitez pas à visiter la page officielle du projet:

https://packages.cisofy.com/