
Инструмент аудита безопасности UNIX, основанный на нескольких фреймворках безопасности.

Аудит и отчётность по блокировке UNIX
Текущая версия 15.9.1
Обратитесь к lunar.sh и журналу изменений для получения более актуальной информации о версии
CC BY-SA: https://creativecommons.org/licenses/by-sa/4.0/
Поддержите меня здесь: https://ko-fi.com/richardatlateralblast
Запускайте этот код только в режиме аудита, например, с ключом -a или --audit. Запускайте блокировку на свой страх и риск. Как и при любых изменениях системы, делайте резервные копии. Я работаю над улучшением режима восстановления, но могут оставаться ошибки.
Я постарался максимально очистить этот скрипт с помощью shellcheck и включил возможность использования флагов оболочки -e (errexit) и -u (nounset) для защиты от ошибок. Флаг -x (xtrace) можно включить, запустив скрипт с флагом -Q или --debug.
В процессе:
Этот скрипт генерирует оценённый отчёт аудита безопасности хоста Unix. Он основан на CIS и других фреймворках. Где возможно, в документации кода есть ссылки на CIS и другие бенчмарки.
Почему shell-скрипт? Я хотел инструмент, который мог бы работать на заблокированных системах, где другие инструменты могут быть недоступны. Я также хотел инструмент, работающий на всех версиях UNIX. При этом есть некоторые различия между sh и bash, поэтому я использовал функции только из sh.
С этим скриптом не предоставляется никаких гарантий, явных или подразумеваемых. Я рекомендую использовать этот скрипт только в режиме аудита и устранять каждое предупреждение индивидуально с помощью политик, документации и управления конфигурацией.
Я ни в коем случае не программист, поэтому в этом скрипте наверняка есть ошибки и лучшие способы реализации вещей, поэтому искренняя благодарность людям, которые предоставили отзывы, обновления и патчи для исправления ошибок/добавления функций в код.
Он также может выполнять блокировку. В отличие от некоторых других скриптов, я добавил возможность отката изменений. Файлы резервируются с помощью cpio в каталог, основанный на дате.
Хотя он может выполнять блокировку, как уже было сказано, я рекомендую устранять предупреждения с помощью политик, документации и управления конфигурацией. Именно так я использую этот инструмент. Аудит сервисов AWS поддерживает только отчётность, он не предоставляет возможности блокировки.
Поддерживаются следующие операционные системы:
Поддержка Windows потребовала бы установки дополнительного программного обеспечения, поэтому я этим не занимался. Тем не менее, поддержка Windows может появиться в будущем через bash.
Поддерживаются следующие сервисы:
Аудит сервисов AWS использует AWS CLI и, следовательно, требует пользователя с соответствующими правами. В настоящее время он не поддерживает возможность блокировки, только генерацию отчёта аудита по бенчмарку CIS.
Есть несколько проверок, которые можно выполнить или решить только через GUI. Пример — включение биллинга. Обратитесь к бенчмарку CIS для получения дополнительной информации.
Где возможно, я поместил предлагаемые команды исправления в подробный вывод аудита. Опять же, в некоторых случаях это можно сделать только через CLI. Обратитесь к бенчмарку CIS для получения дополнительной информации.
Кроме того, я добавил режим рекомендаций, который проверяет AWS на соответствие общедоступным передовым практикам от таких компаний, как Cloud Conformity.
Поддерживается следующий вывод управления конфигурацией:
Этот параметр выводит пример кода/строф управления конфигурацией Ansible для реализации рекомендации.
Для UNIX:
Для AWS:
Для Azure:
Usage: ./lunar.sh -switch|--switch
switch(es):
-----------
-1|--list)
List changes/backups
-2|--tests)
Print tests
-3|--printfunct)
Print function
-4|--dryrun)
Run in dryrun mode
-6|--format)
Outpt format/type
-7|--file)
Output file
-8|--usesudo)
Use sudo
-9|--shellcheck)
Run shellcheck against script
-0|--force)
Force action
-a|--audit)
Run in audit mode (for Operating Systems - no changes made to system)
-A|--fullaudit)
Run in audit mode and include filesystems (for Operating Systems - no changes made to system)
-b|--backups|--listbackups)
List backups
-B|--basedir)
Set base directory
-c|--codename|--distro)
Distro/Code name (used with docker/multipass)
-C|--shell)
Run docker-compose testing suite (drops to shell in order to do more testing)
-d|--dockeraudit)
Run in audit mode (for Docker - no changes made to system)
-D|--dockertests)
List all Docker functions available to selective mode
-e|--host)
Run in audit mode on external host (for Operating Systems - no changes made to system)
-E|--hash|--passwordhash)
Password hash
-f|--action)
Action (e.g delete - used with multipass)
-F|--tempfile)
Temporary file to use for operations
-g|--giturl)
Git URL for code to copy to container
-G|--wheelgroup)
Set wheel group
-h|--help)
Display help
-H|--usage)
Display usage
-i|--anacron)
Enable/Disable anacron
-I|--type)
Audit type
-k|--kubeaudit)
Run in audit mode (for Kubernetes - no changes made to system)
-K|--function|--test)
Do a specific function
-l|--lockdown)
Run in lockdown mode (for Operating Systems - changes made to system)
-L|--fulllockdown|fulllock)
Run in lockdown mode (for Operating Systems - changes made to system)
-m|--machine|--vm)
Set virtualisation type
-M|--workdir)
Set work directory
-n|--ansible)
Output ansible
-N|--nocat)
Do output cat in score
-o|--os|--osver)
Set OS version
-O|--osinfo|--systeminfo)
Print OS/System information
-p|--previous)
Print previous audit information
-P|--sshsandbox|--sandbox)
Enable/Disabe SSH sandbox
-q|--quiet|--nostrict)
Run in quiet mode
-Q|--debug)
Run in debug mode
-r|--awsregion|--region)
Set AWS region
-R|--moduleinfo|--testinfo)
Print information about a module
-s|--select|--check)
Run in selective mode (only run tests you want to)
-S|--unixtests|--unix)
List UNIX tests
-t|--tag|--name)
Set docker tag
-T|--tempdir)
Set temp directoru
-u|--undo)
Undo lockdown (for Operating Systems - changes made to system)
-U|--dofiles)
Include filesystems
-v|--verbose)
Run in verbose mode
-V|--version)
Print version
-w|--awsaudit)
Run in audit mode (for AWS - no changes made to system)
-W|--awstests|--aws)
List all AWS functions available to selective mode
-x|--awsrec)
Run in recommendations mode (for AWS - no changes made to system)
-X|--strict)
Run shellcheck against script
-z)
Run specified audit function in lockdown mode
-Z|--changes|--listchanges)
List changes
Выполнить полный аудит (без рекурсивной проверки файловой системы):
./lunar.sh --audit
Список тестов:
./lunar.sh --tests
Список тестов AWS:
./lunar.sh --tests aws
Выполнить конкретный тест:
./lunar.sh --audit --select remote_shell
Создать VM multipass с Ubuntu 24.04 для тестирования:
./lunar.sh --action create --machine multipass --osver 24.04
Для получения дополнительной информации обратитесь к вики:
Добавлен простой фреймворк тестирования для отладки самого скрипта lunar. Он использует docker compose для запуска контейнера, монтирования каталога lunar и запуска lunar.