#!/bin/sh

#################################################################################
#
#   Lynis
# ------------------
#
# Copyright (c) Michael Boelen, CISOfy, and many contributors.
#
# Website  : https://cisofy.com
# Blog     : https://linux-audit.com/
# GitHub   : https://github.com/CISOfy/lynis
#
# 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 LICENSE file for usage of this software.
#
#################################################################################
#
    InsertSection "${SECTION_STORAGE}"
#
#################################################################################
#
    AUTOMOUNTER_DAEMON_RUNNING=0
    NFS_DAEMON_RUNNING=0
    AUTOMOUNTER_DAEMON_TOOL=""
#
#################################################################################
#
    # Test        : STRG-1846
    # Description : Check for disabled firewire storage
    # Explanation : Best option is to use the install function, otherwise drivers can still be loaded manually
    Register --test-no STRG-1846 --os Linux --weight L --network NO --category security --description "Check if firewire storage is disabled"
    if [ "${SKIPTEST}" -eq 0 ]; then
        FOUND=0
        LogText "Test: Checking firewire storage driver in directory /etc/modprobe.d and configuration file /etc/modprobe.conf"
        if [ -d "${ROOTDIR}etc/modprobe.d" ]; then
            FIND=$(${LSBINARY} ${ROOTDIR}etc/modprobe.d/* 2> /dev/null)
            if [ -n "${FIND}" ]; then
                FIND1=$(${GREPBINARY} -E "blacklist (ohci1394|firewire[-_]ohci|firewire-core)" ${ROOTDIR}etc/modprobe.d/* | ${GREPBINARY} -v "#")
                FIND2=$(${GREPBINARY} -E "install (ohci1394|firewire[-_]ohci|firewire-core) /bin/(false|true)" ${ROOTDIR}etc/modprobe.d/* | ${GREPBINARY} -v "#")
                if [ -n "${FIND1}" ] || [ -n "${FIND2}" ]; then
                    FOUND=1
                    LogText "Result: found firewire ohci driver in disabled state"
                fi
            else
                LogText "Result: skipping ${ROOTDIR}etc/modprobe.d, directory found but no files in it"
            fi
        fi
        if [ -f "${ROOTDIR}etc/modprobe.conf" ]; then
            FIND1=$(${GREPBINARY} -E -r "blacklist (ohci1394|firewire[-_]ohci|firewire-core)" "${ROOTDIR}etc/modprobe.conf" | ${GREPBINARY} -v "#")
            FIND2=$(${GREPBINARY} -E -r "install (ohci1394|firewire[-_]ohci|firewire-core) /bin/(false|true)" "${ROOTDIR}etc/modprobe.conf" | ${GREPBINARY} -v "#")
            if [ -n "${FIND1}" ] || [ -n "${FIND2}" ]; then
                FOUND=1
                LogText "Result: found firewire ohci driver in disabled state"
            fi
        fi

        if [ ${FOUND} -eq 0 ]; then
            LogText "Result: firewire ohci driver is not explicitly disabled"
            Display --indent 2 --text "- Checking firewire ohci driver (modprobe config)" --result "${STATUS_NOT_DISABLED}" --color WHITE
            ReportSuggestion "${TEST_NO}" "Disable drivers like firewire storage when not used, to prevent unauthorized storage or data theft"
            # after blacklisting modules, make sure to remove them from the initram filesystem: update-initramfs -u
            AddHP 2 3
        else
            LogText "Result: firewire ohci driver is disabled"
            Display --indent 2 --text "- Checking firewire ohci driver (modprobe config)" --result "${STATUS_DISABLED}" --color GREEN
            AddHP 3 3
        fi
    fi
#
#################################################################################
#

WaitForKeyPress

# EOF
