diff --git a/CHANGELOG.md b/CHANGELOG.md index 35ce224d..7d625649 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,14 @@ ## Lynis 3.1.3 (not released yet) +### Added +- Detection of Buildroot, Fedora Linux Asahi Remix, Peppermint OS + ### Changed - FILE-6398 - Only perform test if we know if Linux kernel is monolithic/modular +- FIRE-4508 - Fix typo in conditional expression - KRNL-5622 - Test if systemctl binary is set -- OS detection for Fedora Linux Asahi Remix +- Update of translations: Russian --------------------------------------------------------------------------------- @@ -28,7 +32,7 @@ ### Changed - Correction of software EOL database and inclusion of AIX entries - Support sysctl value perf_event_paranoid -> 2|3 -- Update of translations: German, Portuguest, Turkish +- Update of translations: German, Portuguese, Turkish - Grammar and spell improvements - Improved package detection on Alpine Linux - Slackware support to check installed packges (functionPackageIsInstalled()) diff --git a/README.md b/README.md index 4fa3900e..b6565bac 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Lynis is collecting some awards along the way and we are proud of that. * 2015 * [![ToolsWatch Best Tools (second place)](https://www.toolswatch.org/badges/toptools/2015.svg)](https://www.toolswatch.org/2016/02/2015-top-security-tools-as-voted-by-toolswatch-org-readers/) - * [Best of Open Source Software Awards 2015](http://www.idgenterprise.com/news/press-release/infoworld-announces-the-2015-best-of-open-source-software-awards/). + * [Best of Open Source Software Awards 2015](http://www.idgenterprise.com/news/press-release/infoworld-announces-the-2015-best-of-open-source-software-awards/) ([mirror](https://web.archive.org/web/20210313082124/https://www.idg.com/news/infoworld-announces-the-2015-best-of-open-source-software-awards/)). * 2014 * [![ToolsWatch Best Tools (third place)](https://www.toolswatch.org/badges/toptools/2014.svg)](https://www.toolswatch.org/2015/01/2014-top-security-tools-as-voted-by-toolswatch-org-readers/) diff --git a/db/languages/ru b/db/languages/ru index 92402178..a770ab56 100644 --- a/db/languages/ru +++ b/db/languages/ru @@ -1,75 +1,75 @@ -ERROR_NO_LICENSE="Лицензионный ключ не настроен" -ERROR_NO_UPLOAD_SERVER="Загрузочный сервер не настроен" -GEN_CHECKING="Проверка" -GEN_CURRENT_VERSION="Текущая версия" -GEN_DEBUG_MODE="Режим отладки" -GEN_INITIALIZE_PROGRAM="Инициализация программы" -GEN_LATEST_VERSION="Последняя версия" -GEN_PHASE="Стадия" -GEN_PLUGINS_ENABLED="Плагины включены" -GEN_UPDATE_AVAILABLE="доступно обновление" -GEN_VERBOSE_MODE="Подробный режим" -GEN_WHAT_TO_DO="Что сделать" -NOTE_EXCEPTIONS_FOUND_DETAILED="Были найдены некоторые исключительные события или информация" -NOTE_EXCEPTIONS_FOUND="Найдены исключения" -NOTE_PLUGINS_TAKE_TIME="Примечание: плагины имеют более обширные тесты и могут занять несколько минут до завершения" -NOTE_SKIPPED_TESTS_NON_PRIVILEGED="Тесты пропущены из-за использования непривилегированного режима" -SECTION_ACCOUNTING="Учёт" -SECTION_BANNERS_AND_IDENTIFICATION="Баннеры и идентификаторы" -SECTION_BASICS="Основное" -SECTION_BOOT_AND_SERVICES="Загрузка и сервисы" -SECTION_CONTAINERS="Контейнеры" -SECTION_CRYPTOGRAPHY="Криптография" -SECTION_CUSTOM_TESTS="Пользовательские тесты" -SECTION_DATABASES="Базы данных" -SECTION_DATA_UPLOAD="Отправка данных" -SECTION_DOWNLOADS="Загрузки" -SECTION_EMAIL_AND_MESSAGING="Программное обеспечение: e-mail и отправка сообщений" +ERROR_NO_LICENSE="ОШИБКА: ЛИЦЕНЗИОННЫЙ КЛЮЧ НЕ НАСТРОЕН" +ERROR_NO_UPLOAD_SERVER="ОШИБКА: ЗАГРУЗОЧНЫЙ СЕРВЕР НЕ НАСТРОЕН" +GEN_CHECKING="ПРОВЕРКА" +GEN_CURRENT_VERSION="ТЕКУЩАЯ ВЕРСИЯ" +GEN_DEBUG_MODE="РЕЖИМ ОТЛАДКИ" +GEN_INITIALIZE_PROGRAM="ИНИЦИАЛИЗАЦИЯ ПРОГРАММЫ" +GEN_LATEST_VERSION="ПОСЛЕДНЯЯ ВЕРСИЯ" +GEN_PHASE="СТАДИЯ" +GEN_PLUGINS_ENABLED="ПЛАГИНЫ ВКЛЮЧЕНЫ" +GEN_UPDATE_AVAILABLE="ДОСТУПНО ОБНОВЛЕНИЕ" +GEN_VERBOSE_MODE="ПОДРОБНЫЙ РЕЖИМ" +GEN_WHAT_TO_DO="ЧТО СДЕЛАТЬ?" +NOTE_EXCEPTIONS_FOUND_DETAILED="БЫЛИ ОБНАРУЖЕНЫ УНИКАЛЬНЫЕ СОБЫТИЯ ИЛИ СВЕДЕНИЯ" +NOTE_EXCEPTIONS_FOUND="НАЙДЕННЫ ИСКЛЮЧЕНИЯ" +NOTE_PLUGINS_TAKE_TIME="ПРИМЕЧАНИЕ: ПЛАГИНЫ ИМЕЮТ БОЛЕЕ ОБШИРНЫЕ ТЕСТЫ И МОГУТ ЗАНЯТЬ НЕСКОЛЬКО МИНУТ ДО ЗАВЕРШЕНИЯ" +NOTE_SKIPPED_TESTS_NON_PRIVILEGED="ТЕСТЫ ПРОПУЩЕНЫ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ НЕПРЕВЕЛИГИРОВАННОГО РЕЖИМА" +SECTION_ACCOUNTING="УЧЁТ" +SECTION_BANNERS_AND_IDENTIFICATION="БАННЕРЫ И ИДЕНТИФИКАТОРЫ" +SECTION_BASICS="ОСНОВНОЕ" +SECTION_BOOT_AND_SERVICES="ЗАГРУЗКА И СЕРВИСЫ" +SECTION_CONTAINERS="КОНТЕЙНЕРЫ" +SECTION_CRYPTOGRAPHY="КРИПТОГРАФИЯ" +SECTION_CUSTOM_TESTS="ПОЛЬЗОВАТЕЛЬСКИЕ ТЕСТЫ" +SECTION_DATABASES="БАЗЫ ДАННЫХ" +SECTION_DATA_UPLOAD="ОТПРАВКА ДАННЫХ" +SECTION_DOWNLOADS="ЗАГРУЗКИ" +SECTION_EMAIL_AND_MESSAGING="ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: E-MAIL И ОТПРАВКА СООБЩЕНИЙ" SECTION_FILE_INTEGRITY="Программное обеспечение: целостность файлов" -SECTION_FILE_PERMISSIONS="Права доступа к файлам" -SECTION_FILE_SYSTEMS="Файловые системы" -SECTION_FIREWALLS="Программное обеспечение: firewall" -SECTION_GENERAL="Общее" -SECTION_HARDENING="Усиление" -SECTION_HOME_DIRECTORIES="Домашние директории" -SECTION_IMAGE="Образы" -SECTION_INITIALIZING_PROGRAM="Инициализация программы" -SECTION_INSECURE_SERVICES="Небезопасные сервисы" -SECTION_KERNEL_HARDENING="УСиления ядра" -SECTION_KERNEL="Ядро" -SECTION_LDAP_SERVICES="Сервисы LDAP" -SECTION_LOGGING_AND_FILES="Логирование и файлы" -SECTION_MALWARE="Вредоносное ПО" -SECTION_MEMORY_AND_PROCESSES="Память и процессы" -SECTION_NAME_SERVICES="Серверы имён" -SECTION_NETWORKING="Сети" -SECTION_PERMISSIONS="Права доступа" -SECTION_PORTS_AND_PACKAGES="Пакеты" -SECTION_PRINTERS_AND_SPOOLS="Принтеры и спулеры" -SECTION_PROGRAM_DETAILS="Подробности о программе" -SECTION_SCHEDULED_TASKS="Запланированные задачи" -SECTION_SECURITY_FRAMEWORKS="Фреймворки" -SECTION_SHELLS="Командные оболочки" -SECTION_SNMP_SUPPORT="Поддержка SNMP" -SECTION_SOFTWARE="Программное обеспечение" -SECTION_SQUID_SUPPORT="Поддержка Squid" -SECTION_SSH_SUPPORT="Поддержка SSH" -SECTION_STORAGE="Хранилище" -SECTION_SYSTEM_INTEGRITY="Программное обеспечение: целостность системы" -SECTION_SYSTEM_TOOLING="SПрограммное обеспечение: системные инструменты" -SECTION_SYSTEM_TOOLS="Системные утилиты" -SECTION_TIME_AND_SYNCHRONIZATION="Время и его синхронизация" -SECTION_USB_DEVICES="USB Устройства" -SECTION_USERS_GROUPS_AND_AUTHENTICATION="Пользователи, группы и Аутентификация" -SECTION_VIRTUALIZATION="Виртуализация" -SECTION_WEBSERVER="Программное обеспечение: веб-серверы" +SECTION_FILE_PERMISSIONS="ПРАВА ДОСТУПА К ФАЙЛАМ" +SECTION_FILE_SYSTEMS="ФАЙЛОВЫЕ СИСТЕМЫ" +SECTION_FIREWALLS="ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: FIREWALL" +SECTION_GENERAL="ОБЩЕЕ" +SECTION_HARDENING="УСИЛЕНИЕ" +SECTION_HOME_DIRECTORIES="ДОМАШНИЕ ДИРЕКТОРИИ" +SECTION_IMAGE="ОБРАЗЫ" +SECTION_INITIALIZING_PROGRAM="ИНИЦИАЛИЗАЦИЯ ПРОГРАММЫ" +SECTION_INSECURE_SERVICES="НЕБЕЗОПАСНЫЕ СЕРВИСЫ" +SECTION_KERNEL_HARDENING="УСИЛЕНИЕ ЯДРА" +SECTION_KERNEL="ЯДРО" +SECTION_LDAP_SERVICES="СЕРВИСЫ LDAP" +SECTION_LOGGING_AND_FILES="ЛОГИРОВАНИЕ И ФАЙЛЫ" +SECTION_MALWARE="ВРЕДОНОСНОЕ ПО" +SECTION_MEMORY_AND_PROCESSES="ПАМЯТЬ И ПРОЦЕССОРЫ" +SECTION_NAME_SERVICES="СЕРВЕРЫ ИМЁН" +SECTION_NETWORKING="СЕТИ" +SECTION_PERMISSIONS="ПРАВА ДОСТУПА" +SECTION_PORTS_AND_PACKAGES="ПАКЕТЫ" +SECTION_PRINTERS_AND_SPOOLS="ПРИНТЕРЫ И СПУЛЕРЫ" +SECTION_PROGRAM_DETAILS="ПОДРОБНОСТИ О ПРОГРАММЕ" +SECTION_SCHEDULED_TASKS="ЗАПЛАНИРОВАННЫЕ ЗАДАЧИ" +SECTION_SECURITY_FRAMEWORKS="ФРЕЙМВОРКИ" +SECTION_SHELLS="КОМАНДНЫЕ ОБОЛОЧКИ" +SECTION_SNMP_SUPPORT="ПОДДЕРЖКА SNMP" +SECTION_SOFTWARE="ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ" +SECTION_SQUID_SUPPORT="ПОДДЕРЖКА Squid" +SECTION_SSH_SUPPORT="ПОДДЕРЖКА SSH" +SECTION_STORAGE="ХРАНИЛИЩЕ" +SECTION_SYSTEM_INTEGRITY="ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: ЦЕЛОСТНОСТЬ СИСТЕМЫ" +SECTION_SYSTEM_TOOLING="ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: СИСТЕМНЫЕ ИНСТУРМЕНТЫ" +SECTION_SYSTEM_TOOLS="СИСТЕМНЫЕ УТИЛИТЫ" +SECTION_TIME_AND_SYNCHRONIZATION="ВРЕМЯ И ЕГО СИНХРОНИЗАЦИЯ" +SECTION_USB_DEVICES="USB УСТРОЙСТВА" +SECTION_USERS_GROUPS_AND_AUTHENTICATION="ПОЛЬЗОВАТЕЛИ, ГРУППЫ И АУТЕНТИФИКАЦИЯ" +SECTION_VIRTUALIZATION="ВИРТУАЛИЗАЦИЯ" +SECTION_WEBSERVER="ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: WEB-СЕРВЕРЫ" STATUS_ACTIVE="АКТИВЕН" STATUS_CHECK_NEEDED="ТРЕБУЕТСЯ ПРОВЕРКА" STATUS_DEBUG="ОТЛАДКА" STATUS_DEFAULT="ПО УМОЛЧАНИЮ" STATUS_DIFFERENT="ОТЛИЧАЕТСЯ" STATUS_DISABLED="ОТКЛЮЧЕНО" -STATUS_DONE="Завершено" +STATUS_DONE="ЗАВЕРШЕНО" STATUS_ENABLED="ВКЛЮЧЕНО" STATUS_ERROR="ОШИБКА" STATUS_EXPOSED="УЯЗВИМО" @@ -81,8 +81,8 @@ STATUS_INSTALLED="УСТАНОВЛЕНО" STATUS_LOCAL_ONLY="ТОЛЬКО ЛОКАЛЬНО" STATUS_MEDIUM="СРЕДНИЙ" STATUS_NON_DEFAULT="НЕ ПО УМОЛЧАНИЮ" -STATUS_NONE="Отсутствует" -STATUS_NOT_ACTIVE="NOT ACTIVE" +STATUS_NONE="ОТСУТСТВУЕТ" +STATUS_NOT_ACTIVE="НЕ АКТИВЕН" STATUS_NOT_CONFIGURED="НЕ СКОНФИГУРИРОВАНО" STATUS_NOT_DISABLED="НЕ ОТКЛЮЧЕНО" STATUS_NOT_ENABLED="НЕ ВКЛЮЧЕНО" @@ -90,9 +90,9 @@ STATUS_NOT_FOUND="НЕ НАЙДЕНО" STATUS_NOT_RUNNING="НЕ ЗАПУЩЕНО" STATUS_NO_UPDATE="ОБНОВЛЕНИЙ НЕТ" STATUS_NO="НЕТ" -STATUS_OFF="Выключено" +STATUS_OFF="ВЫКЛЮЧЕНО" STATUS_OK="ОК" -STATUS_ON="Включено" +STATUS_ON="ВКЛЮЧЕНО" STATUS_PARTIALLY_HARDENED="ЧАСТИЧНО УСИЛЕНО" STATUS_PROTECTED="ЗАЩИЩЕНО" STATUS_RUNNING="ЗАПУЩЕНО" @@ -104,6 +104,6 @@ STATUS_UPDATE_AVAILABLE="ДОСТУПНЫ ОБНОВЛЕНИЯ" STATUS_WARNING="ПРЕДУПРЕЖДЕНИЕ" STATUS_WEAK="СЛАБЫЙ" STATUS_YES="ДА" -TEXT_UPDATE_AVAILABLE="доступно обновление" -TEXT_YOU_CAN_HELP_LOGFILE="Вы можете помочь, предоставив ваш лог-файл" -#SECTION_KERBEROS="Kerberos" +TEXT_UPDATE_AVAILABLE="ДОСТУПНО ОБНОВЛЕНИЕ" +TEXT_YOU_CAN_HELP_LOGFILE="ПОЖАЛУЙСТА, ПОМОГИТЕ НАМ, ОТПРАВИВ ВАШ LOG-ФАЙЛ" +SECTION_KERBEROS="KERBEROS" diff --git a/include/osdetection b/include/osdetection index 9d579ccb..fa2046d5 100644 --- a/include/osdetection +++ b/include/osdetection @@ -202,6 +202,12 @@ OS_VERSION=$(grep "^VERSION_ID=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') OS_VERSION_FULL=$(grep "^VERSION=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') ;; + "buildroot") + LINUX_VERSION="Buildroot" + OS_NAME="Buildroot" + OS_VERSION=$(grep "^VERSION_ID=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') + OS_VERSION_FULL=$(grep "^PRETTY_NAME=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') + ;; "bunsenlabs") LINUX_VERSION="BunsenLabs" OS_NAME="BunsenLabs" @@ -406,6 +412,13 @@ OS_VERSION=$(grep "^VERSION_ID=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') OS_VERSION_FULL=$(grep "^PRETTY_NAME=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') ;; + "peppermint") + LINUX_VERSION="Peppermint OS" + LINUX_VERSION_LIKE="Debian" + OS_NAME="Peppermint OS" + OS_VERSION=$(grep "^PRETTY_NAME=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') + OS_VERSION_FULL=$(grep "^VERSION_CODENAME=" /etc/os-release | awk -F= '{print $2}' | tr -d '"') + ;; "poky") LINUX_VERSION="Poky" OS_NAME="openembedded" diff --git a/include/tests_firewalls b/include/tests_firewalls index 6852b536..92e0fc78 100644 --- a/include/tests_firewalls +++ b/include/tests_firewalls @@ -122,7 +122,7 @@ LogText "Result: iptables ${table} -- ${chainname} policy is ${policy}." LogText "Result: ${policy}" - if [ "${TABLE}" = "filter" ]; then + if [ "${table}" = "filter" ]; then if [ "${chainname}" = "INPUT" ]; then case ${policy} in "ACCEPT") diff --git a/include/tests_kernel b/include/tests_kernel index 837b97c8..9f3313b7 100644 --- a/include/tests_kernel +++ b/include/tests_kernel @@ -39,55 +39,50 @@ # Description : Check default run level on Linux machines Register --test-no KRNL-5622 --os Linux --weight L --network NO --category security --description "Determine Linux default run level" if [ ${SKIPTEST} -eq 0 ]; then - # Only run if systemctl binary is available - if [ -n "${SYSTEMCTLBINARY}" ]; then - # Checking if we can find the systemd default target - LogText "Test: Checking for systemd default.target" - if [ $(${SYSTEMCTLBINARY} get-default) ]; then - FIND=$(${SYSTEMCTLBINARY} get-default) - FIND2=$(${ECHOCMD} ${FIND} | ${EGREPBINARY} "runlevel5|graphical") - if HasData "${FIND2}"; then - LogText "Result: Found match on runlevel5/graphical" - Display --indent 2 --text "- Checking default runlevel" --result "runlevel 5" --color GREEN - Report "linux_default_runlevel=5" + # Checking if we can find the systemd default target + LogText "Test: Checking for systemd default.target" + if [ $( [ ! -z ${SYSTEMCTLBINARY} ] && ${SYSTEMCTLBINARY} get-default) ]; then + FIND=$(${SYSTEMCTLBINARY} get-default) + FIND2=$(${ECHOCMD} ${FIND} | ${EGREPBINARY} "runlevel5|graphical") + if HasData "${FIND2}"; then + LogText "Result: Found match on runlevel5/graphical" + Display --indent 2 --text "- Checking default runlevel" --result "runlevel 5" --color GREEN + Report "linux_default_runlevel=5" + else + LogText "Result: No match found on runlevel, defaulting to runlevel 3" + Display --indent 2 --text "- Checking default runlevel" --result "runlevel 3" --color GREEN + Report "linux_default_runlevel=3" + fi + else + LogText "Result: no systemd found, so trying inittab" + LogText "Test: Checking ${ROOTDIR}etc/inittab" + if [ -f ${ROOTDIR}etc/inittab ]; then + LogText "Result: file ${ROOTDIR}etc/inittab found" + LogText "Test: Checking default Linux run level" + FIND=$(${AWKBINARY} -F: '/^id/ { print $2; }' ${ROOTDIR}etc/inittab | head -n 1) + if IsEmpty "${FIND}"; then + Display --indent 2 --text "- Checking default runlevel" --result "${STATUS_UNKNOWN}" --color YELLOW + LogText "Result: Can't determine default run level from ${ROOTDIR}etc/inittab" else - LogText "Result: No match found on runlevel, defaulting to runlevel 3" - Display --indent 2 --text "- Checking default runlevel" --result "runlevel 3" --color GREEN - Report "linux_default_runlevel=3" + Display --indent 2 --text "- Checking default run level" --result "${FIND}" --color GREEN + LogText "Found default run level '${FIND}'" + Report "linux_default_runlevel=${FIND}" fi else - LogText "Result: no systemd found, so trying inittab" - LogText "Test: Checking ${ROOTDIR}etc/inittab" - if [ -f ${ROOTDIR}etc/inittab ]; then - LogText "Result: file ${ROOTDIR}etc/inittab found" - LogText "Test: Checking default Linux run level" - FIND=$(${AWKBINARY} -F: '/^id/ { print $2; }' ${ROOTDIR}etc/inittab | head -n 1) - if IsEmpty "${FIND}"; then - Display --indent 2 --text "- Checking default runlevel" --result "${STATUS_UNKNOWN}" --color YELLOW - LogText "Result: Can't determine default run level from ${ROOTDIR}etc/inittab" - else - Display --indent 2 --text "- Checking default run level" --result "${FIND}" --color GREEN - LogText "Found default run level '${FIND}'" + LogText "Result: file ${ROOTDIR}etc/inittab not found" + if [ "${LINUX_VERSION}" = "Debian" ] || [ "${LINUX_VERSION}" = "Ubuntu" ] || [ "${LINUX_VERSION_LIKE}" = "Debian" ] || [ "${LINUX_VERSION_LIKE}" = "Ubuntu" ]; then + LogText "Test: Checking run level with who -r, for Debian based systems" + FIND=$(who -r | ${AWKBINARY} '{ if ($1=="run-level") { print $2 } }') + if HasData "${FIND}"; then + LogText "Result: Found default run level '${FIND}'" Report "linux_default_runlevel=${FIND}" - fi - else - LogText "Result: file ${ROOTDIR}etc/inittab not found" - if [ "${LINUX_VERSION}" = "Debian" ] || [ "${LINUX_VERSION}" = "Ubuntu" ] || [ "${LINUX_VERSION_LIKE}" = "Debian" ] || [ "${LINUX_VERSION_LIKE}" = "Ubuntu" ]; then - LogText "Test: Checking run level with who -r, for Debian based systems" - FIND=$(who -r | ${AWKBINARY} '{ if ($1=="run-level") { print $2 } }') - if HasData "${FIND}"; then - LogText "Result: Found default run level '${FIND}'" - Report "linux_default_runlevel=${FIND}" - Display --indent 2 --text "- Checking default run level" --result "RUNLEVEL ${FIND}" --color GREEN - else - LogText "Result: Can't determine default run level from who -r" - Display --indent 2 --text "- Checking default run level" --result "${STATUS_UNKNOWN}" --color YELLOW - fi + Display --indent 2 --text "- Checking default run level" --result "RUNLEVEL ${FIND}" --color GREEN + else + LogText "Result: Can't determine default run level from who -r" + Display --indent 2 --text "- Checking default run level" --result "${STATUS_UNKNOWN}" --color YELLOW fi fi fi - else - LogText "Result: test skipped, as systemctl binary could not be found" fi fi #