#!/bin/sh

#################################################################################
#
#   Lynis
# ------------------
#
# Copyright 2007-2013, Michael Boelen
# Copyright 2007-2021, CISOfy
#
# Website  : https://cisofy.com
# Blog     : http://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.
#
#################################################################################
#
# Insecure services
#
#################################################################################
#
    InsertSection "${SECTION_INSECURE_SERVICES}"
#
#################################################################################
#
    INETD_ACTIVE=0
    INETD_CONFIG_FILE="${ROOTDIR}etc/inetd.conf"
    INETD_PACKAGE_INSTALLED=0
    XINETD_ACTIVE=0
    XINETD_CONFIG_FILE="${ROOTDIR}etc/xinetd.conf"
    XINETD_CONFIG_DIR="${ROOTDIR}etc/xinetd.d"
#
#################################################################################
#
    # Test        : INSE-8000
    # Description : Check for installed inetd package
    Register --test-no INSE-8000 --package-manager-required --weight L --network NO --category security --description "Installed inetd package"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check for installed inetd daemon
        LogText "Test: Checking if inetd is installed"
        if PackageIsInstalled "inetd"; then
            INETD_PACKAGE_INSTALLED=1
            LogText "Result: inetd is installed"
            Display --indent 2 --text "- Installed inetd package" --result "${STATUS_FOUND}" --color YELLOW
            #ReportSuggestion "${TEST_NO}" "If there are no inetd services required, it is recommended that the daemon be removed"
        else
            LogText "Result: inetd is NOT installed"
            Display --indent 2 --text "- Installed inetd package" --result "${STATUS_NOT_FOUND}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8002
    # Description : Check for inetd status
    if [ ${INETD_PACKAGE_INSTALLED} -eq 1 ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8002 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check for enabled inet daemon"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check running processes
        LogText "Test: Searching for active inet daemon"
        if IsRunning "inetd"; then
            LogText "Result: inetd is running"
            Display --indent 4 --text "- inetd status" --result "${STATUS_ACTIVE}" --color GREEN
            INETD_ACTIVE=1
        else
            LogText "Result: inetd is NOT running"
            Display --indent 4 --text "- inetd status" --result "${STATUS_NOT_ACTIVE}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8004
    # Description : Check for inetd configuration file (inetd)
    if [ ${INETD_ACTIVE} -eq 1 ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8004 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Presence of inetd configuration file"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check configuration file
        LogText "Test: Searching for file ${INETD_CONFIG_FILE}"
        if [ -f ${INETD_CONFIG_FILE} ]; then
            LogText "Result: ${INETD_CONFIG_FILE} exists"
            Display --indent 4 --text "- Checking inetd.conf" --result "${STATUS_FOUND}" --color WHITE
        else
            LogText "Result: ${INETD_CONFIG_FILE} does not exist"
            Display --indent 4 --text "- Checking inetd.conf" --result "${STATUS_NOT_FOUND}" --color WHITE
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8006
    # Description : Check for inetd configuration file contents if inetd is NOT active
    if [ ${INETD_ACTIVE} -eq 0 -a -f ${INETD_CONFIG_FILE} ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8006 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check configuration of inetd when disabled"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check if any service is enabled in /etc/inetd.conf (inetd is not active, see test INSE-8002)
        LogText "Test: check if all services are disabled when inetd is disabled"
        FIND=$(${GREPBINARY} -v "^#" ${INETD_CONFIG_FILE} | ${GREPBINARY} -v "^$")
        if [ -z "${FIND}" ]; then
            LogText "Result: no services found in ${INETD_CONFIG_FILE}"
            Display --indent 4 --text "- Checking enabled inetd services" --result "${STATUS_OK}" --color GREEN
        else
            LogText "Result: found services in inetd, even though inetd is not running"
            Display --indent 4 --text "- Checking enabled inetd services" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Although inetd is not running, make sure no services are enabled in ${INETD_CONFIG_FILE}, or remove inetd service"
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8016
    # Description : Check for telnet enabled via inetd
    if [ ${INETD_ACTIVE} -eq 1 -a -f ${INETD_CONFIG_FILE} ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8016 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check for telnet via inetd"
    if [ ${SKIPTEST} -eq 0 ]; then
        LogText "Test: checking telnet presence in inetd configuration"
        FIND=$(${GREPBINARY} "^telnet" ${INETD_CONFIG_FILE})
        if [ -z "${FIND}" ]; then
            LogText "Result: telnet not enabled in ${INETD_CONFIG_FILE}"
            Display --indent 2 --text "- Checking inetd (telnet)" --result "${STATUS_NOT_FOUND}" --color GREEN
            AddHP 3 3
        else
            LogText "Result: telnet enabled in ${INETD_CONFIG_FILE}"
            Display --indent 2 --text "- Checking inetd (telnet)" --result "${STATUS_WARNING}" --color RED
            ReportSuggestion "${TEST_NO}" "Disable telnet in inetd configuration and use SSH instead"
            AddHP 1 3
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8100
    # Description : Check for installed xinetd daemon
    Register --test-no INSE-8100 --package-manager-required --weight L --network NO --category security --description "Check for installed xinetd daemon"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check for installed xinetd daemon
        LogText "Test: Checking for installed xinetd daemon"
        if PackageIsInstalled "xinetd"; then
            LogText "Result: xinetd is installed"
            Display --indent 2 --text "- Installed xinetd package" --result "${STATUS_FOUND}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "If there are no xinetd services required, it is recommended that the daemon be removed"
        else
            LogText "Result: xinetd is NOT installed"
            Display --indent 2 --text "- Installed xinetd package" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8102
    # Description : Check for xinetd status
    Register --test-no INSE-8102 --weight L --network NO --category security --description "Check for active xinet daemon"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check running processes
        LogText "Test: Searching for active extended internet services daemon (xinetd)"
        if IsRunning "xinetd"; then
            LogText "Result: xinetd is running"
            Display --indent 4 --text "- xinetd status" --result "${STATUS_ACTIVE}" --color GREEN
            XINETD_ACTIVE=1
        else
            LogText "Result: xinetd is NOT running"
            Display --indent 4 --text "- xinetd status" --result "${STATUS_NOT_ACTIVE}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8104
    # Description : Check for xinetd configuration file
    if [ ${XINETD_ACTIVE} -eq 1 ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8104 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check for enabled xinet daemon"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check configuration file
        LogText "Test: Searching for file ${XINETD_CONFIG_FILE}"
        if [ -f "${XINETD_CONFIG_FILE}" ]; then
            LogText "Result: ${XINETD_CONFIG_FILE} exists"
            Display --indent 6 --text "- Configuration file (xinetd.conf)" --result "${STATUS_FOUND}" --color WHITE
        else
            LogText "Result: ${XINETD_CONFIG_FILE} does not exist"
            Display --indent 6 --text "- Configuration file (xinetd.conf)" --result "${STATUS_NOT_FOUND}" --color WHITE
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8106
    # Description : Check for xinetd configuration file contents if xinetd is NOT active
    if [ ${XINETD_ACTIVE} -eq 0 -a -f ${XINETD_CONFIG_FILE} ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8106 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check configuration of xinetd when disabled"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check if any service is enabled in /etc/xinetd.d (xinetd is not active, see test INSE-8102)
        LogText "Test: check if all services are disabled if xinetd is disabled"
        FIND=$(${GREPBINARY} -r "disable\s*=\s*no" ${XINETD_CONFIG_DIR})
        if [ -z "${FIND}" ]; then
            LogText "Result: no services found in ${XINETD_CONFIG_DIR}"
            Display --indent 6 --text "- Enabled xinetd.d services" --result "${STATUS_NOT_FOUND}" --color GREEN
        else
            LogText "Result: found services in ${XINETD_CONFIG_DIR}, even though xinetd is not running"
            Display --indent 6 --text "- Enabled xinetd.d services" --result "${STATUS_FOUND}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Although xinetd is not running, make sure no services are enabled in ${XINETD_CONFIG_DIR}, or remove xinetd service"
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8116
    # Description : Check for insecure services enabled via xinetd
    if [ ${XINETD_ACTIVE} -eq 1 ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8116 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Insecure services enabled via xinetd"
    if [ ${SKIPTEST} -eq 0 ]; then
        XINETD_INSECURE_SERVICE_FOUND=0

        ITEMS="chargen chargen-dgram chargen-stream daytime daytime-dgram daytime-stream discard discard-dgram discard-stream echo echo-dgram echo-stream time time-dgram time-stream ntalk rexec rlogin rsh rsync talk telnet tftp"

        for SERVICE in ${ITEMS}; do
            LogText "Test: checking service ${SERVICE}"
            if ! SkipAtomicTest "${TEST_NO}:${SERVICE}"; then
                FILE="${XINETD_CONFIG_DIR}/${SERVICE}"
                if [ -f "${FILE}" ]; then
                    LogText "Test: checking status in xinetd configuration file (${FILE})"
                    FIND=$(${GREPBINARY} "disable\s*=\s*no" ${FILE})
                    if [ -n "${FIND}" ]; then
                        LogText "Result: found insecure service enabled: ${SERVICE}"
                        XINETD_INSECURE_SERVICE_FOUND=1
                        ReportSuggestion "${TEST_NO}" "Disable or remove any insecure services in the xinetd configuration" "${SERVICE}" "text:See log file for more details"
                        Report "insecure_service[]=${SERVICE}"
                    fi
                fi
            else
                LogText "Result: skipped, as this item is excluded using the profile"
            fi
        done

        if [ ${XINETD_INSECURE_SERVICE_FOUND} -eq 0 ]; then
            LogText "Result: no insecure services found in xinetd configuration"
            Display --indent 6 --text "- Checking xinetd (insecure services)" --result "${STATUS_OK}" --color GREEN
            AddHP 3 3
        else
            LogText "Result: one ore more insecure services discovered in xinetd configuration"
            Display --indent 6 --text "- Checking xinetd (insecure services)" --result "${STATUS_WARNING}" --color RED
            AddHP 0 3
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8200
    # Description : Check if tcp_wrappers is installed when inetd/xinetd is active
    if [ ${INETD_ACTIVE} -eq 1 -o ${XINETD_ACTIVE} -eq 1 ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no INSE-8200 --package-manager-required --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check if tcp_wrappers is installed when inetd/xinetd is active"
    if [ ${SKIPTEST} -eq 0 ]; then
        LogText "Test: Checking if tcp_wrappers is installed"
        FOUND=0
        PACKAGES="tcp_wrappers tcpd"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then LogText "Package '${PACKAGE}' is installed"; FOUND=1; fi
        done
        if [ ${FOUND} -eq 1 ]; then
            LogText "Result: tcp_wrappers is installed"
            Display --indent 2 --text "- Checking tcp_wrappers installation" --result "${STATUS_OK}" --color GREEN
        else
            LogText "Result: tcp_wrappers is NOT installed"
            Display --indent 2 --text "- Checking tcp_wrappers installation" --result "${STATUS_SUGGESTION}" --color YELLOW
            #ReportSuggestion "${TEST_NO}" "When network services are using the inetd/xinetd service, the tcp_wrappers package should be installed"
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8300
    # Description : Check if rsh client is installed
    Register --test-no INSE-8300 --package-manager-required --weight L --network NO --category security --description "Check if rsh client is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        LogText "Test: Checking if rsh client is installed"
        FOUND=0
        PACKAGES="rsh rsh-client rsh-redone-client"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then LogText "Package '${PACKAGE}' is installed"; FOUND=1; fi
        done
        if [ ${FOUND} -eq 1 ]; then
            LogText "Result: rsh client is installed"
            Display --indent 2 --text "- Installed rsh client package" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Remove rsh client when it is not in use or replace with the more secure SSH package"
        else
            LogText "Result: rsh client is NOT installed"
            Display --indent 2 --text "- Installed rsh client package" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8302
    # Description : Check presence of rsh Trust Files
    #Register --test-no INSE-8302 --weight L --network NO --category security --description "Check presence of rsh Trust Files"
    #if [ ${SKIPTEST} -eq 0 ]; then
    #    # Check presence of Rsh Trust Files
    #    FOUND=0
    #    for LINE in $(${CAT_BINARY} /etc/passwd | ${EGREPBINARY} -v '^(root|halt|sync|shutdown)' | ${AWKBINARY} -F: '($7 !="/sbin/nologin" && $7 != "/bin/false") { print }'); do
    #        USER=$(echo ${LINE} | ${CUTBINARY} -d: -f1)
    #        DIR=$(echo ${LINE} | ${CUTBINARY} -d: -f6)
    #            if [ -d ${DIR} ]; then
    #                for RHOSTS in ${DIR}/.rhosts; do
    #                    if [ ! -h ${RHOSTS} -a -f ${RHOSTS} ]; then
    #                        LogText "FOUND .rhosts file in home directory ${DIR} of ${USER}"
    #                        FOUND=1
    #                    fi
    #                done
    #            fi
    #    done
    #    if [ -f /etc/hosts.equiv ];then
    #        LogText "FOUND /etc/hosts.equiv"
    #        FOUND=1
    #    fi
    #    if [ ${FOUND} -eq 1 ]; then
    #        LogText "Result: found one or more Rsh Trust Files"
    #        Display --indent 4 --text "- Checking presence of Rsh Trust Files" --result "${STATUS_SUGGESTION}" --color YELLOW
    #        ReportSuggestion "${TEST_NO}" "Remove every Rsh Trust Files as they can allow unauthenticated access to a system"
    #    else
    #        LogText "Result: no Rsh Trust Files found"
    #        Display --indent 4 --text "- Checking presence of Rsh Trust Files" --result "${STATUS_OK}" --color GREEN
    #    fi
    #fi
#
#################################################################################
#
    # Test        : INSE-8304
    # Description : Check if rsh server is installed
    Register --test-no INSE-8304 --package-manager-required --weight L --network NO --category security --description "Check if rsh server is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check if rsh server is installed
        LogText "Test: Checking if rsh server is installed"
        FOUND=0
        PACKAGES="rsh-server rsh-redone-server"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then LogText "Package '${PACKAGE}' is installed"; FOUND=1; fi
        done
        if [ ${FOUND} -eq 1 ]; then
            LogText "Result: rsh server is installed"
            Display --indent 2 --text "- Installed rsh server package" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Remove the rsh-server package and replace with a more secure alternative like SSH"
            Report "insecure_service[]=rsh-server"
        else
            LogText "Result: rsh server is NOT installed"
            Display --indent 2 --text "- Installed rsh server package" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8310
    # Description : Check if telnet client is installed
    Register --test-no INSE-8310 --package-manager-required --weight L --network NO --category security --description "Check if telnet client is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check if telnet client is installed
        LogText "Test: Checking if telnet client is installed"
        if PackageIsInstalled "${PACKAGE}"; then LogText "Package '${PACKAGE}' is installed"; FOUND=1; fi

        if [ ${FOUND} -eq 1 ]; then
            LogText "Result: telnet client is installed"
            Display --indent 2 --text "- Installed telnet client package" --result "${STATUS_FOUND}" --color YELLOW
            # Telnet client usage might be used for troubleshooting instead of system administration
            #ReportSuggestion "${TEST_NO}" "telnet client contain numerous security exposures and have been replaced with the more secure SSH package"
        else
            LogText "Result: telnet client is NOT installed"
            Display --indent 2 --text "- Installed telnet client package" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8312
    # Description : Check if telnet server is installed
    Register --test-no INSE-8322 --package-manager-required --weight L --network NO --category security --description "Check if telnet server is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        # Check if TFTP server is installed
        LogText "Test: Checking if telnet server is installed"
        FOUND=0
        PACKAGES="telnetd telnet-server"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then LogText "Package '${PACKAGE}' is installed"; FOUND=1; fi
        done
        if [ ${FOUND} -eq 1 ]; then
            LogText "Result: telnet server is installed"
            Display --indent 2 --text "- Installed telnet server package" --result "${STATUS_FOUND}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Removing the telnet server package and replace with SSH when possible"
            Report "insecure_service[]=telnet-server"
        else
            LogText "Result: telnet server is NOT installed"
            Display --indent 2 --text "- Installed telnet server package" --result "${STATUS_NOT_FOUND}" --color GREEN
        fi
    fi

#
#################################################################################
#
    # Test        : INSE-8314
    # Description : Check if NIS client is installed
    Register --test-no INSE-8314 --package-manager-required --weight L --network NO --category security --description "Check if NIS client is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        FOUND=""
        LogText "Test: Checking if NIS client is installed"
        PACKAGES="nis ypbind"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then
                FOUND="${PACKAGE}"
            fi
        done
        if [ -n "${FOUND}" ]; then
            LogText "Result: NIS client is installed"
            Display --indent 2 --text "- Checking NIS client installation" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "NIS client should be removed if not required. Use a more secure alternative or a protocol that can use encrypted communications."
        else
            LogText "Result: NIS client is NOT installed"
            Display --indent 2 --text "- Checking NIS client installation" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8316
    # Description : Check if NIS server is installed
    Register --test-no INSE-8316 --package-manager-required --weight L --network NO --category security --description "Check if NIS server is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        FOUND=""
        LogText "Test: Checking if NIS server is installed"
        PACKAGES="nis ypserv"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then
                FOUND="${PACKAGE}"
            fi
        done
        if [ -n "${FOUND}" ]; then
            LogText "Result: NIS server is installed"
            Display --indent 2 --text "- Checking NIS server installation" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Removing the ${FOUND} package decreases the risk of the accidental (or intentional) activation of NIS or NIS+ services"
        else
            LogText "Result: NIS server is NOT installed"
            Display --indent 2 --text "- Checking NIS server installation" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8318
    # Description : Check if TFTP client is installed
    Register --test-no INSE-8318 --package-manager-required --weight L --network NO --category security --description "Check if TFTP client is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        LogText "Test: Checking if TFTP client is installed"
        FOUND=""
        PACKAGES="atftp tftp tftp-hpa"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then
                FOUND="${PACKAGE}"
            fi
        done
        if [ -n "${FOUND}" ]; then
            LogText "Result: TFTP client is installed"
            Display --indent 2 --text "- Checking TFTP client installation" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "It is recommended that TFTP be removed, unless there is a specific need for TFTP (such as a boot server)"
        else
            LogText "Result: TFTP client is NOT installed"
            Display --indent 2 --text "- Checking TFTP client installation" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    # Test        : INSE-8320
    # Description : Check if TFTP server is installed
    Register --test-no INSE-8320 --package-manager-required --weight L --network NO --category security --description "Check if TFTP server is installed"
    if [ ${SKIPTEST} -eq 0 ]; then
        LogText "Test: Checking if TFTP server is installed"
        FOUND=""
        PACKAGES="atftpd tftpd tftp-server tftpd-hpa"
        for PACKAGE in ${PACKAGES}; do
            if PackageIsInstalled "${PACKAGE}"; then
                FOUND="${PACKAGE}"
            fi
        done
        if [ -n "${FOUND}" ]; then
            LogText "Result: TFTP server is installed"
            Display --indent 2 --text "- Checking TFTP server installation" --result "${STATUS_SUGGESTION}" --color YELLOW
            ReportSuggestion "${TEST_NO}" "Removing the ${FOUND} package decreases the risk of the accidental (or intentional) activation of tftp services"
        else
            LogText "Result: TFTP server is NOT installed"
            Display --indent 2 --text "- Checking TFTP server installation" --result "${STATUS_OK}" --color GREEN
        fi
    fi
#
#################################################################################
#
    if [ -n "${LAUNCHCTL_BINARY}" ]; then PREQS_MET="YES"; SKIPREASON=""; else PREQS_MET="NO"; SKIPREASON="No launchctl binary on this system"; fi
    Register --test-no INSE-8050 --os "macOS" --preqs-met ${PREQS_MET} --skip-reason "${SKIPREASON}" --weight M --network NO --category security --description "Check for insecure services on macOS"
    if [ ${SKIPTEST} -eq 0 ]; then
        TEST_SERVICES="com.apple.fingerd com.apple.ftp-proxy"
        for ITEM in ${TEST_SERVICES}; do
            if ${LAUNCHCTL_BINARY} list | ${GREPBINARY} -sq ${ITEM}; then
                Display --indent 2 --text "- ${ITEM}" --result "${STATUS_NO}" --color RED
                LogText "Result: found ${ITEM}, which is considered an insecure service"
                ReportSuggestion "${TEST_NO}" "Consider disabling service ${ITEM}" "launchctl" "-"
                AddHP 0 1
            else
                Display --indent 2 --text "- ${ITEM}" --result "${STATUS_OK}" --color GREEN
                LogText "Result: did not find ${ITEM}, which is fine"
                AddHP 1 1
            fi
        done
    fi
#
#################################################################################
#

WaitForKeyPress

#
#================================================================================
# Lynis - Security Auditing and System Hardening for Linux and UNIX - https://cisofy.com