ARM, FOSS, security

Security audit your ARM board with Lynis

Be it powerful production servers, or humble home hosted ARM boards, an internet facing system requires that we take security very seriously.

But security is hard. No matter how much we try to secure our systems, any small detail we oversee can ruin all our efforts.

In the same way that intruders make use of automated scanning tools to detect vulnerabilities, we also have some tools at our hand to help secure our systems and try to validate that we are not missing anything.

Lynis is an open source security auditing tool. It is really simple to use and allows us to perform a thorough security analysis.

Installation

Install not only the lynis package, but also some other helpful tools

# apt-get install lynis debian-goodies needrestart debsums debsecan

Probably too much for an ARM board, but in a production server we can also afford to include

# apt-get install apt-listbugs samhain tripwire

We will cover those other tools in another post.

Usage

Just

# lynis audit system

You can run a non privileged scan for pentesting

# lynis audit --pentest

These examples run with the default profile, which you can find in /etc/lynis/default.prf. It is recommended that add your modifications to custom.prf instead of modifying default.prf directly.

Your modifications to custom.prf will be picked up automatically. If we want to run from another custom profile we can indicate it with

# lynis audit system --profile /myprofile.prf

Warnings will have an explanation and a code, such as ACCT-9628. Also, we will receive suggestions on how to solve, and a link to their extensive documentation, in our example this link.

As we try to fix issues, it is handy to see how Lynis checks for a particular warning to be issued. We can do this by inspecting the log /var/log/lynis.log, or with the command

# lynis show details ACCT-9628
2017-12-23 11:42:10 Performing test ID ACCT-9628 (Check for auditd)
2017-12-23 11:42:10 Test: Check auditd status
2017-12-23 11:42:10 IsRunning: process 'auditd' not found
2017-12-23 11:42:10 Result: auditd not active
2017-12-23 11:42:10 Suggestion: Enable auditd to collect audit information [test:ACCT-9628] [details:-] [solution:-]
2017-12-23 11:42:10 Hardening: assigned partial number of hardening points (0 of 1). Currently having 139 points (out of 227)
2017-12-23 11:42:10 ===---------------------------------------------------------------===

Lynis in ARM boards

The output of the above commands will provide us with very valuable information to improve our security and the configuration of our system.

For instance, this is the output after installing on plain Raspbian

[ Lynis 2.4.0 ]

################################################################################
  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-2016, CISOfy - https://cisofy.com/lynis/
  Enterprise support available (compliance, plugins, interface and tools)
################################################################################


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

  ---------------------------------------------------
  Program version:           2.4.0
  Operating system:          Linux
  Operating system name:     Debian
  Operating system version:  9.1
  Kernel version:            4.9.59
  Hardware platform:         armv7l
  Hostname:                  raspberrypi
  ---------------------------------------------------
  Profiles:                  /etc/lynis/default.prf
  Log file:                  /var/log/lynis.log
  Report file:               /var/log/lynis-report.dat
  Report version:            1.0
  Plugin directory:          /etc/lynis/plugins
  ---------------------------------------------------
  Auditor:                   [Not Specified]
  Test category:             all
  Test group:                all
  ---------------------------------------------------
    - Program update status...  [ WARNING ]

      ===============================================================================
        Lynis update available
      ===============================================================================

        Current version is more than 4 months old

        Current version : 240   Latest version : 257

        Please update to the latest version.
        New releases include additional features, bug fixes, tests and baselines.

        Download the latest version:
        Packages (DEB/RPM) -  https://packages.cisofy.com
        Website            -  https://cisofy.com/downloads/
        GitHub             -  https://github.com/CISOfy/lynis

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


[+] 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: debian
    [
[+] Debian Tests
------------------------------------
    - Checking for system binaries that are required by Debian Tests...
      - Checking /bin...  [ FOUND ]
      - Checking /sbin...  [ FOUND ]
      - Checking /usr/bin...  [ FOUND ]
      - Checking /usr/sbin...  [ FOUND ]
      - Checking /usr/local/bin...  [ FOUND ]
      - Checking /usr/local/sbin...  [ FOUND ]
    - Authentication:
      - PAM (Pluggable Authentication Modules):
        - libpam-tmpdir [ Not Installed ]
        - libpam-usb [ Not Installed ]
    - File System Checks:
      - DM-Crypt, Cryptsetup & Cryptmount:
    - Software:
      - apt-listbugs [ Not Installed ]
      - apt-listchanges [ Installed and enabled for apt ]
      - checkrestart [ Not Installed ]
      - needrestart [ Not Installed ]
      - debsecan [ Not Installed ]
      - debsums [ Not Installed ]
      - fail2ban [ Not Installed ]
]

[+] Boot and services
------------------------------------
    - Service Manager [ systemd ]
    - Checking UEFI boot [ DISABLED ]
      - Boot loader [ NONE FOUND ]
    - Check running services (systemctl) [ DONE ]
Result: found 15 running services
    - Check enabled services at boot (systemctl) [ DONE ]
Result: found 23 enabled services
    - Check startup files (permissions) [ OK ]

[+] Kernel
------------------------------------
    - Checking default run level [ RUNLEVEL 5 ]
    - Checking CPU support (NX/PAE)
      CPU support: No PAE or NoeXecute supported [ NONE ]
    - Checking kernel version and release [ DONE ]
    - Checking kernel type [ DONE ]
    - Checking loaded kernel modules [ DONE ]
        Found 20 active modules
    - Checking Linux kernel configuration file [ NOT FOUND ]
    - Checking for available kernel update [ UNKNOWN ]
    - Checking core dumps configuration [ DISABLED ]
      - Checking setuid core dumps configuration [ DEFAULT ]
    - Check if reboot is needed [ UNKNOWN ]

[+] 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 [ NOT 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 ]
    - LDAP authentication support [ NOT ENABLED ]
    - Logging failed login attempts [ ENABLED ]

[+] Shells
------------------------------------
    - Checking shells from /etc/shells
      Result: found 4 shells (valid shells: 4).
      - 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 ]
    - ACL support root file system [ ENABLED ]
    - Mount options of / [ NON DEFAULT ]
    - Mount options of /boot [ NON DEFAULT ]
    - Disable kernel support of some filesystems
      - Discovered kernel modules: hfs hfsplus jffs2 squashfs udf 

[+] Storage
------------------------------------
    - Checking usb-storage driver (modprobe config) [ NOT DISABLED ]
    - Checking USB devices authorization [ ENABLED ]
    - Checking firewire ohci driver (modprobe config) [ NOT DISABLED ]

[+] NFS
------------------------------------
    - Query rpc registered programs [ DONE ]
    - Query NFS versions [ DONE ]
    - Query NFS protocols [ DONE ]
    - Check running NFS daemon [ NOT FOUND ]

[+] Name services
------------------------------------
    - Checking default DNS search domain [ FOUND ]
    - Searching DNS domain name [ FOUND ]
        Domain name: Home
    - Checking /etc/hosts
      - Checking /etc/hosts (duplicates) [ OK ]
      - Checking /etc/hosts (hostname) [ OK ]
      - Checking /etc/hosts (localhost) [ 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 or directory [ WARNING ]
    - Checking vulnerable packages (apt-get only) [ DONE ]
    - Checking package audit tool [ INSTALLED ]
      Found: apt-get

[+] Networking
------------------------------------
    - Checking IPv6 configuration [ ENABLED ]
        Configuration method [ AUTO ]
        IPv6 only [ NO ]
    - Checking configured nameservers
      - Testing nameservers
        Nameserver: 192.168.0.5 [ SKIPPED ]
      - Minimal of 2 responsive nameservers [ SKIPPED ]
    - Checking default gateway [ DONE ]
    - Getting listening ports (TCP/UDP) [ DONE ]
        * Found 7 ports
    - Checking promiscuous interfaces [ OK ]
    - Checking waiting connections [ OK ]
    - Checking status DHCP client [ NOT ACTIVE ]
    - 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
------------------------------------
    - Checking Exim status [ NOT FOUND ]
    - Checking Postfix status [ NOT FOUND ]
    - Checking Dovecot status [ NOT FOUND ]
    - Checking Qmail status [ NOT FOUND ]
    - Checking Sendmail status [ NOT FOUND ]

[+] Software: firewalls
------------------------------------
    - Checking iptables kernel module [ FOUND ]
      - Checking iptables policies of chains [ FOUND ]
INVALID OPTION (Display): YELLOW
      - Checking for empty ruleset [ WARNING ]
      - Checking for unused rules [ OK ]
    - Checking host based firewall [ 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 [ NOT FOUND ]
      - SSH option: StrictModes [ OK ]
      - SSH option: TCPKeepAlive [ SUGGESTION ]
      - SSH option: UseDNS [ OK ]
      - SSH option: UsePrivilegeSeparation [ OK ]
      - 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 [ SKIPPED ]

[+] 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 ]

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

[+] Time and Synchronization
------------------------------------
    - NTP daemon found: systemd (timesyncd) [ FOUND ]
    - Checking for a running NTP daemon or client [ OK ]

[+] Cryptography
------------------------------------
    - Checking for expired SSL certificates [ NONE ]

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

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

[+] Security frameworks
------------------------------------
    - Checking presence AppArmor [ NOT FOUND ]
    - Checking presence SELinux [ NOT FOUND ]
    - Checking presence grsecurity [ NOT FOUND ]
    - Checking for implemented MAC framework [ NONE ]

[+] 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
      /etc/lilo.conf [ NOT FOUND ]
      /root/.ssh [ NOT FOUND ]

[+] Home directories
------------------------------------
    - Checking shell history files [ OK ]

[+] Kernel Hardening
------------------------------------
    - Comparing sysctl key pairs with scan profile
      - kernel.core_uses_pid (exp: 1) [ DIFFERENT ]
      - kernel.ctrl-alt-del (exp: 0) [ OK ]
      - kernel.kptr_restrict (exp: 2) [ DIFFERENT ]
      - kernel.randomize_va_space (exp: 2) [ OK ]
      - kernel.sysrq (exp: 0) [ 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) [ DIFFERENT ]
      - 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) [ DIFFERENT ]
      - 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) [ FOUND ]
      - Installed malware scanner [ NOT FOUND ]
      - Installed malware scanner [ NOT FOUND ]

[+] Custom Tests
------------------------------------
    - Running custom tests...  [ NONE ]

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

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

  -[ Lynis 2.4.0 Results ]-

  Warnings (3):
  ----------------------------
  ! Version of Lynis is very old and should be updated [LYNIS] 
      https://cisofy.com/controls/LYNIS/

  ! Can't find any security repository in /etc/apt/sources.list or sources.list.d directory [PKGS-7388] 
      https://cisofy.com/controls/PKGS-7388/

  ! iptables module(s) loaded, but no rules active [FIRE-4512] 
      https://cisofy.com/controls/FIRE-4512/

  Suggestions (43):
  ----------------------------
  * Install libpam-tmpdir to set $TMP and $TMPDIR for PAM sessions [CUST-0280] 
      https://your-domain.example.org/controls/CUST-0280/

  * Install libpam-usb to enable multi-factor authentication for PAM sessions [CUST-0285] 
      https://your-domain.example.org/controls/CUST-0285/

  * Install apt-listbugs to display a list of critical bugs prior to each APT installation. [CUST-0810] 
      https://your-domain.example.org/controls/CUST-0810/

  * Install debian-goodies so that you can run checkrestart after upgrades to determine which services are using old versions of libraries and need restarting. [CUST-0830] 
      https://your-domain.example.org/controls/CUST-0830/

  * Install needrestart, alternatively to debian-goodies, so that you can run needrestart after upgrades to determine which daemons are using old versions of libraries and need restarting. [CUST-0831] 
      https://your-domain.example.org/controls/CUST-0831/

  * Install debsecan to generate lists of vulnerabilities which affect this installation. [CUST-0870] 
      https://your-domain.example.org/controls/CUST-0870/

  * Install debsums for the verification of installed package files against MD5 checksums. [CUST-0875] 
      https://your-domain.example.org/controls/CUST-0875/

  * Install fail2ban to automatically ban hosts that commit multiple authentication errors. [DEB-0880] 
      https://cisofy.com/controls/DEB-0880/

  * Use a PAE enabled kernel when possible to gain native No eXecute/eXecute Disable support [KRNL-5677] 
      https://cisofy.com/controls/KRNL-5677/

  * Discover why /vmlinuz is missing. Consider manually re-linking. [KRNL-5788] 
      https://cisofy.com/controls/KRNL-5788/

  * Check the output of apt-cache policy manually to determine why output is empty [KRNL-5788] 
      https://cisofy.com/controls/KRNL-5788/

  * 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/

  * 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/

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

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

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

  * 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 --> 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 --> 1)
      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  : 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/

  * 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] 
      https://cisofy.com/controls/KRNL-6000/

  * Harden compilers like restricting access to root user only [HRDN-7222] 
      https://cisofy.com/controls/HRDN-7222/

  * 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 : 57 [###########         ]
  Tests performed : 203
  Plugins enabled : 1

  Components:
  - Firewall               [V]
  - 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

================================================================================
  Notice: Lynis update available
  Current version : 240    Latest version : 257
================================================================================

  Lynis 2.4.0

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

  2007-2016, 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)

We can see that we are granted a score of 57. We should take this score with a grain of salt, but a rule of thumb, the higher the better, and a score of around 80 is very decent.

We can see that some of these warnings are taylored towards fat x86 servers and might not make sense in our home ARM setups where we don’t have resources to spare, and we have some different constrains and usage cases.

As with anything else in security, there are compromises to me made between security and inconvenience. For this reason, I add these rules to my custom profile

# Won't install apt-listbugs and all its ruby dependencies
skip-test=CUST-0810

# Won't install puppet or similar
skip-test=TOOL-5002

# Raspbian doesn't have security sources ( https://www.raspberrypi.org/forums/viewtopic.php?t=98006&p=680175 )
skip-test=PKGS-7388

# We have a preset partition scheme in the SD card
skip-test=FILE-6310

# We don't use firewire
skip-test=STRG-1846

# We use USB in NCP
skip-test=STRG-1840

# Won't recompile kernel to support auditd
skip-test=ACCT-9628

# Won't be protected against DDOS in self-hosting, will save the resources
skip-test=HTTP-6640
skip-test=HTTP-6641

# vmlinuz missing at least in Raspbian
skip-test=KRNL-5788

# won't recompile kernels for PAE NX
skip-test=KRNL-5677

For NextCloudPi, the system is a bit different from plain Raspbian, so you can check a more customized profile here.

Currently, NextCloudPi has a 79 hardening score.

References

https://www.digitalocean.com/community/tutorials/how-to-perform-security-audits-with-lynis-on-ubuntu-16-04

Author: nachoparker

Humbly sharing things that I find useful [ github dockerhub ]

4 Comments on “Security audit your ARM board with Lynis

Leave a Reply

Your email address will not be published. Required fields are marked *