Как провести аудит linux

Проверяем уровень защищённости Linux с помощью утилиты Lynis

Разбираемся, как использовать одну из самых мощных свободно распространяемых утилит для аудита Linux-систем.

Вы когда-нибудь задумывались о том, насколько безопасна ваша Linux-система? Существует множество дистрибутивов Linux (каждый со своими настройками по умолчанию), на которых вы запускаете десятки программных пакетов с разными номерами версий. Кроме того, на вашей ОС в фоновом режиме работает множество сервисов, о которых вы порой не знаете или не думаете.

Чтобы получить информацию о системе, то есть проверить общее состояние программного обеспечения, сети и служб, работающих на вашем компьютере с установленной ОС Linux, достаточно выполнить несколько команд. Но что теперь делать с полученной информацией? Как в ней разобраться? Ведь объём данных, которые вам нужно проанализировать, огромен.

Было бы намного лучше, если бы вы могли просто запустить инструмент, который генерирует структурированный отчёт об уровне защищенности системы. Lynis — популярный инструмент с открытым исходным кодом, который позволяет провести аудит систем на базе Linux и Unix.

«Он выполняет всестороннее сканирование настроек безопасности и запускается на самой системе. Основная цель — протестировать средства защиты и выдать рекомендации по дальнейшему повышению уровня защищённости системы. Он также сканирует общесистемную информацию, информацию об установленных пакетах и возможных ошибках конфигурации. Lynis [обычно] используют системные администраторы и специалисты по безопасности для оценки уровня защищённости систем», — говорится на сайте проекта.

Устанавливаем Lynis

Для установки Lynis можно использовать менеджеры пакетов. При условии, что у вашей системы Linux с актуальностью версий в репозитории всё в порядке, утилиту можно установить так:

Однако, если версия утилиты в вашем репозитории не самая последняя, лучше установить Lynis с 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:

Читайте также:  Linux mint cinnamon with kde

Так вы можете ознакомиться с основными командами утилиты. Например, давайте узнаем её версию:

Чтобы получить полный список команд Lynis, введите:

$ ./lynis show commands Commands: lynis audit lynis configure lynis generate lynis show lynis update lynis upload-only $

Запускаем аудит Linux-системы

Всё начинается со следующей команды:

После запуска команды мы получим детальный отчёт. Не пугайтесь, мы в нём разберёмся чуть позже. Прочие результаты работы команд тоже сохраняются, так что и к ним вы можете вернуться позже.

Вот здесь 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 --------------------------------------------------- > [+] 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 использует условные обозначения в виде цветов:

  • зелёный: всё хорошо
  • жёлтый: не нашёл всё необходимое, или возникла спорная ситуация
  • красный: это проблема, стоит с ней разобраться
[+] Kernel Hardening ------------------------------------ - Comparing sysctl key pairs with scan profile - fs.protected_hardlinks (exp: 1) [ OK ] - fs.protected_symlinks (exp: 1) [ OK ] - fs.suid_dumpable (exp: 0) [ OK ] - kernel.core_uses_pid (exp: 1) [ OK ] - kernel.ctrl-alt-del (exp: 0) [ OK ] - kernel.dmesg_restrict (exp: 1) [ DIFFERENT ] - kernel.kptr_restrict (exp: 2) [ DIFFERENT ] - kernel.randomize_va_space (exp: 2) [ OK ] - kernel.sysrq (exp: 0) [ DIFFERENT ] - kernel.yama.ptrace_scope (exp: 1 2 3) [ DIFFERENT ] - net.ipv4.conf.all.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv4.conf.all.accept_source_route (exp: 0) [ OK ] - net.ipv4.conf.all.bootp_relay (exp: 0) [ OK ] - net.ipv4.conf.all.forwarding (exp: 0) [ OK ] - net.ipv4.conf.all.log_martians (exp: 1) [ DIFFERENT ] - net.ipv4.conf.all.mc_forwarding (exp: 0) [ OK ] - net.ipv4.conf.all.proxy_arp (exp: 0) [ OK ] - net.ipv4.conf.all.rp_filter (exp: 1) [ OK ] - net.ipv4.conf.all.send_redirects (exp: 0) [ DIFFERENT ] - net.ipv4.conf.default.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv4.conf.default.accept_source_route (exp: 0) [ OK ] - net.ipv4.conf.default.log_martians (exp: 1) [ DIFFERENT ] - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1) [ OK ] - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1) [ OK ] - net.ipv4.tcp_syncookies (exp: 1) [ OK ] - net.ipv4.tcp_timestamps (exp: 0 1) [ OK ] - net.ipv6.conf.all.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv6.conf.all.accept_source_route (exp: 0) [ OK ] - net.ipv6.conf.default.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv6.conf.default.accept_source_route (exp: 0) [ OK ]

Посмотрите на 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 ] - OpenSSH option: FingerprintHash [ OK ] - OpenSSH option: GatewayPorts [ OK ] - OpenSSH option: IgnoreRhosts [ OK ] - OpenSSH option: LoginGraceTime [ OK ] - OpenSSH option: LogLevel [ SUGGESTION ] - OpenSSH option: MaxAuthTries [ SUGGESTION ] - OpenSSH option: MaxSessions [ SUGGESTION ] - OpenSSH option: PermitRootLogin [ SUGGESTION ] - OpenSSH option: PermitUserEnvironment [ OK ] - OpenSSH option: PermitTunnel [ OK ] - OpenSSH option: Port [ SUGGESTION ] - OpenSSH option: PrintLastLog [ OK ] - OpenSSH option: StrictModes [ OK ] - OpenSSH option: TCPKeepAlive [ SUGGESTION ] - OpenSSH option: UseDNS [ SUGGESTION ] - OpenSSH option: X11Forwarding [ SUGGESTION ] - OpenSSH option: AllowAgentForwarding [ SUGGESTION ] - OpenSSH option: UsePrivilegeSeparation [ OK ] - OpenSSH option: AllowUsers [ NOT FOUND ] - OpenSSH option: AllowGroups [ NOT FOUND ] 

На моей системе не запущен ни один контейнер и ни одна виртуальная машина. Так что, увы, тут почитать будет нечего.

[+] Virtualization ------------------------------------ [+] Containers ------------------------------------

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 ] File: /etc/group- [ OK ] File: /etc/hosts.allow [ OK ] File: /etc/hosts.deny [ OK ] File: /etc/issue [ OK ] File: /etc/issue.net [ OK ] File: /etc/motd [ OK ] File: /etc/passwd [ OK ] File: /etc/passwd- [ OK ] File: /etc/ssh/sshd_config [ OK ] Directory: /root/.ssh [ SUGGESTION ] Directory: /etc/cron.d [ SUGGESTION ] Directory: /etc/cron.daily [ SUGGESTION ] Directory: /etc/cron.hourly [ SUGGESTION ] Directory: /etc/cron.weekly [ SUGGESTION ] Directory: /etc/cron.monthly [ SUGGESTION ]

В конце отчёта Lynis вносит предложения по исправлению, основанные на результатах аудита. Каждое предложение начинается с описания, а рядом в скобках указывается тест (TEST-ID), который его сгенерировал. В следующей строке предлагается решение проблемы, если оно существует:

Suggestions (47): ---------------------------- * If not required, consider explicit disabling of core dump in /etc/security/limits.conf file [KRNL-5820] https://cisofy.com/lynis/controls/KRNL-5820/ * Check PAM configuration, add rounds if applicable and expire passwords to encrypt with new values [AUTH-9229] https://cisofy.com/lynis/controls/AUTH-9229/

Lynis даёт возможность найти дополнительную информацию о каждом предложении по исправлению с помощью команды show details, за которой следует номер теста TEST-ID:

./lynis show details TEST-ID

Например, чтобы узнать дополнительную информацию для теста SSH-7408 я ввожу $ ./lynis show details SSH-7408 и получаю:

$ ./lynis show details SSH-7408 2020-04-30 05:52:23 Performing test ID SSH-7408 (Check SSH specific defined options) 2020-04-30 05:52:23 Test: Checking specific defined options in /tmp/lynis.k8JwazmKc6 2020-04-30 05:52:23 Result: added additional options for OpenSSH < 7.5 2020-04-30 05:52:23 Test: Checking AllowTcpForwarding in /tmp/lynis.k8JwazmKc6 2020-04-30 05:52:23 Result: Option AllowTcpForwarding found 2020-04-30 05:52:23 Result: Option AllowTcpForwarding value is YES 2020-04-30 05:52:23 Result: OpenSSH option AllowTcpForwarding is in a weak configuration state and should be fixed 2020-04-30 05:52:23 Suggestion: Consider hardening SSH configuration [test:SSH-7408] [details:AllowTcpForwarding (set YES to NO)] [solution:-]

Попытка не пытка

Так что, если вы хотите больше узнать о безопасности вашей Linux-системы, обратите внимание на Lynis. И, если вы хотите больше узнать о том, как работает эта утилита, как собирает всю эту информацию, — покопайтесь в её shell-скриптах. Как и в случае с другими утилитами, имеет смысл сначала опробовать её на виртуальной машине.

Читайте также:  Bodhi linux установка русского языка

А какие инструменты используете вы? Поделитесь в комментариях.

На правах рекламы

VDSina предлагает серверы на любой операционной системе — выбирайте одну из предустановленных ОС, либо устанавливайте из своего образа. Серверы с посуточной оплатой или уникальное на рынке предложение — вечные серверы!

Источник

Оцените статью
Adblock
detector