Разбираемся, как использовать одну из самых мощных свободно распространяемых утилит для аудита Linux-систем.
Вы когда-нибудь задумывались о том, насколько безопасна ваша Linux-система? Существует множество дистрибутивов Linux (каждый со своими настройками по умолчанию), на которых вы запускаете десятки программных пакетов с разными номерами версий. Кроме того, на вашей ОС в фоновом режиме работает множество сервисов, о которых вы порой не знаете или не думаете.
Чтобы получить информацию о системе, то есть проверить общее состояние программного обеспечения, сети и служб, работающих на вашем компьютере с установленной ОС Linux, достаточно выполнить несколько команд. Но что теперь делать с полученной информацией? Как в ней разобраться? Ведь объём данных, которые вам нужно проанализировать, огромен.
Было бы намного лучше, если бы вы могли просто запустить инструмент, который генерирует структурированный отчёт об уровне защищенности системы. Lynis — популярный инструмент с открытым исходным кодом, который позволяет провести аудит систем на базе Linux и Unix.
«Он выполняет всестороннее сканирование настроек безопасности и запускается на самой системе. Основная цель — протестировать средства защиты и выдать рекомендации по дальнейшему повышению уровня защищённости системы. Он также сканирует общесистемную информацию, информацию об установленных пакетах и возможных ошибках конфигурации. Lynis [обычно] используют системные администраторы и специалисты по безопасности для оценки уровня защищённости систем», — говорится на сайте проекта.
Устанавливаем Lynis
Для установки Lynis можно использовать менеджеры пакетов. При условии, что у вашей системы Linux с актуальностью версий в репозитории всё в порядке, утилиту можно установить так:
dnf install lynis
или так:
apt install lynis
Однако, если версия утилиты в вашем репозитории не самая последняя, лучше установить Lynix с GitHub (я использую систему Red Hat Linux, но аналогичные команды работают в любом дистрибутиве Linux):
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 (Maipo)
$
$ uname -r
3.10.0-1127.el7.x86_64
$
$ git clone https://github.com/CISOfy/lynis.git
Cloning into 'lynis'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 12566 (delta 15), reused 8 (delta 0), pack-reused 12536
Receiving objects: 100% (12566/12566), 6.36 MiB | 911.00 KiB/s, done.
Resolving deltas: 100% (9264/9264), done.
$
Как только вы клонируете хранилище, зайдите в него и посмотрите, что вам доступно, найдите файл с именем lynis. На самом деле это shell-скрипт, так что вы можете открыть его и почитать, что он делает. Фактически, Lynis в основном и реализован с использованием скриптов:
$ cd lynis/
$ ls
CHANGELOG.md CONTRIBUTING.md db developer.prf FAQ include LICENSE lynis.8 README SECURITY.md
CODE_OF_CONDUCT.md CONTRIBUTORS.md default.prf extras HAPPY_USERS.md INSTALL lynis plugins README.md
$
$ file lynis
lynis: POSIX shell script, ASCII text executable, with very long lines
$
Запускаем Lynis
Начнём знакомство с Lynis, запустив справку с помощью флага -h:
$ ./lynis -h
Так вы можете ознакомиться с основными командами утилиты. Например, давайте узнаем её версию:
$ ./lynis show version
3.0.0
$
Чтобы получить полный список команд Lynis, введите:
$ ./lynis show commands
Commands:
lynis audit
lynis configure
lynis generate
lynis show
lynis update
lynis upload-only
$
Запускаем аудит Linux-системы
Всё начинается со следующей команды:
$ ./lynis audit system
После запуска команды мы получим детальный отчёт. Не пугайтесь, мы в нём разберёмся чуть позже. Прочие результаты работы команд тоже сохраняются, так что и к ним вы можете вернуться позже.
Вот здесь Lynis хранит логи:
Files:
- Test and debug information : /var/log/lynis.log
- Report data : /var/log/lynis-report.dat
Вы можете проверить, были ли на самом деле созданы все необходимые файлы:
$ ls -l /var/log/lynis.log
-rw-r-----. 1 root root 341489 Apr 30 05:52 /var/log/lynis.log
$
$ ls -l /var/log/lynis-report.dat
-rw-r-----. 1 root root 638 Apr 30 05:55 /var/log/lynis-report.dat
$
Изучаем отчёты
Lynis предоставляет довольно подробные отчеты, поэтому я расскажу лишь о некоторых важных разделах. Самое первое, что делает Lynis при инициализации, — выясняет полную информацию об операционной системе, работающей на компьютере. Затем утилита проверяет, какие системные инструменты и плагины у вас установлены:
[+] Initializing program
------------------------------------
- Detecting OS... [ DONE ]
- Checking profiles... [ DONE ]
---------------------------------------------------
Program version: 3.0.0
Operating system: Linux
Operating system name: Red Hat Enterprise Linux Server 7.8 (Maipo)
Operating system version: 7.8
Kernel version: 3.10.0
Hardware platform: x86_64
Hostname: example
---------------------------------------------------
<<snip>>
[+] 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: pam
[..]
- Plugin: systemd
[................]
Отчёт делится на различные разделы, и каждый раздел начинается с [+]. Некоторые из разделов можно увидеть ниже
[+] Boot and services
[+] Kernel
[+] Memory and Processes
[+] Users, Groups and Authentication
[+] Shells
[+] File systems
[+] USB Devices
[+] Storage
[+] NFS
[+] Name services
[+] Ports and packages
[+] Networking
[+] Printers and Spools
[+] Software: e-mail and messaging
[+] Software: firewalls
[+] Software: webserver
[+] SSH Support
[+] SNMP Support
[+] Databases
[+] LDAP Services
[+] PHP
[+] Squid Support
[+] Logging and files
[+] Insecure services
[+] Banners and identification
[+] Scheduled tasks
[+] Accounting
[+] Time and Synchronization
[+] Cryptography
[+] Virtualization
[+] Containers
[+] Security frameworks
[+] Software: file integrity
[+] Software: System tooling
[+] Software: Malware
[+] File Permissions
[+] Home directories
[+] Kernel Hardening
[+] Hardening
[+] Custom tests
Для большей наглядности Lynis использует условные обозначения в виде цветов:
- зелёный: всё хорошо
- жёлтый: не нашёл всё необходимое, или возникла спорная ситуация
- красный: это проблема, стоит с ней разобраться
Посмотрите на SSH, например. Это важная часть системы, и она должна быть защищена. Здесь ничего не выделено красным, но у Lynis есть много предложений по повышению уровня защищённости службы SSH:
[+] SSH Support
------------------------------------
- Checking running SSH daemon [ FOUND ]
- Searching SSH configuration [ FOUND ]
- OpenSSH option: AllowTcpForwarding [ SUGGESTION ]
- OpenSSH option: ClientAliveCountMax [ SUGGESTION ]
- OpenSSH option: ClientAliveInterval [ OK ]
- OpenSSH option: Compression [ SUGGESTION ]
Lynis проверяет привилегии некоторых файлов, так как это важно с точки зрения безопасности.
[+] File Permissions
------------------------------------
- Starting file permissions check
File: /boot/grub2/grub.cfg [ SUGGESTION ]
File: /etc/cron.deny [ OK ]
File: /etc/crontab [ SUGGESTION ]
File: /etc/group [ OK ]
В конце отчёта Lynis вносит предложения по исправлению, основанные на результатах аудита. Каждое предложение начинается с описания, а рядом в скобках указывается тест (TEST-ID), который его сгенерировал.
Попытка не пытка
Так что, если вы хотите больше узнать о безопасности вашей Linux-системы, обратите внимание на Lynis. И, если вы хотите больше узнать о том, как работает эта утилита, как собирает всю эту информацию, — покопайтесь в её shell-скриптах. Как и в случае с другими утилитами, имеет смысл сначала опробовать её на виртуальной машине.
А какие инструменты используете вы? Поделитесь в комментариях.