Энциклопедия мобильной связи

Как провести аудит безопасности сервера и не беспокоиться про утечку данных. Лучшие инструменты аудита безопасности Linux Аудит доступа к файлам linux

Вопрос безопасности ИТ-инфраструктуры имеет большую актуальность для любого типа бизнеса. Будь то группа компаний с разветвленной филиальной сетью или интернет-магазин с 1-2 продавцами.
Для каждого сервера, основное предназначение которого предоставлять хостинг для сайтов, остро стоит вопрос об обеспечении защиты пользовательских данных.
Наша компания предлагает услугу аудита безопасности сервера.

Данная услуга включает в себя:

— Анализ версий ПО, установленного на сервере, на предмет соответствия текущим актуальным версиям, лишенных известных проблем с безопасностью. Как правило, для веб-серверов важна актуальность версий следующего ПО: почтовый сервер, веб-сервер, кэширующий веб-сервер (если такой присутствует), интерпретатор языка программирования (на котором написаны сайты, например, PHP), ftp-сервер, веб-приложения (для обеспечения упрощенного доступа к тем или иным настройкам сервера и работе с данными);
— Анализ настроек веб-сервера, настроек сопутствующего ПО на предмет соответствия основным требованиям, предъявляемым к безопасности;
— Анализ настроек операционной системы. По этому пункту идет анализ основных моментов, связанных с потенциальной возможностью для злоумышленника захватить контроль над сервером. Как правило, осматриваются настройки ssh-сервера, опций работы с жесткими дисками;
— Анализ прав доступа к основным файлам и папкам системы, содержащим конфиденциальную информацию. Как правило, в рамках этого пункта идет осмотр основных системных папок, файлов панели управления сервером, директории с резервными копиями, права на папки пользователей;
— На сервере, который находится под подозрением, что он скомпрометирован, и может использоваться злоумышленниками для ведения вредоносных действий, наши специалисты выполнят необходимые меры для того, чтобы очистить его от вредоносных программ, и предотвратить повтор данной ситуации;

Защита информации – приоритетный вопрос для любого бизнеса, работающего в интернете. Вирусные заражения и внешние атаки, а также несанкционированный доступ к информации, – все это влечет крупные финансовые и репутационные риски. Поэтому выбирая серверную платформу, владельцы бизнеса всегда интересуются степенью защищенности ресурсов.
А чтобы проверить, насколько хорошо работает система защиты, нет ли в ней уязвимостей и «дыр», не реже одного раза в месяц рекомендуется проводить аудит безопасности сервера.

Что входит в аудит безопасности сервера

Угрозой безопасности может стать даже малозначительный, на первый взгляд, фактор, такой как неправильные настройки самого сервера или устаревшее программное обеспечение. Аудит помогает выявить слабые места защиты и принять своевременные меры для их устранения до того, как произойдет заражение или хищение данных.
Администратор сервера проводит проверку установленного ПО, его соответствие последним обновлениям, оценивает настройки безопасности сервера и устраняет ошибки, если такие есть, а также анализирует соответствие настроек прав доступа сотрудников к тем или иным ресурсам.

Как провести аудит виртуального выделенного сервера своими руками

Проверить защищенность серверов на Windows или Linux-платформах может каждый пользователь, для этого необязательно обладать специальными знаниями в программировании.
Проверку безопасности можно разделить на несколько этапов:

Физический доступ

В случае с выделенным сервером физический доступ к серверу третьих лиц ограничен по дефолту, это обеспечивает ЦОД. Но пользователь может дополнительно установить пароль для доступа в BIOS.

Межсетевой экран

Для непрерывного контроля ПО и портов должен быть правильно настроен и включен брандмауэр Windows. Для Linux можно использовать систему SELinux для контроля доступа. Также у нас можно арендовать аппаратный файрволл Cisco ASA или Fortinet FortiGate 60D.

Файловая система

Проверка обновлений

Настройте на сервере автоматическое получение и установку обновлений.

Парольная политика

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

Контроль логов

Включите ведение логов для критических сегментов инфраструктуры и регулярно их проверяйте.

Сетевая безопасность

Для сегментации узлов и безопасности каналов рекомендуется использовать VPN и VLAN.
Также следует сменить стандартные настройки и переадресовать порты сервисов сетевого оборудования.
Для шифрования трафика можно использовать сервис IPsec. А для просмотра открытых портов – утилиту Netstat.

Контроль доступа

Разграничьте права доступа пользователей к критичным файлам, отключите гостевой доступ и пользователей с пустым паролем. Отключайте неиспользуемые роли и приложения на сервере.

Резервное копирование

Воспользуйтесь услугой по резервному копированию файлов, это выгодно и надежно. Не храните резервные копии незашифрованными. Если вы арендуете сервер у нас, то можете выбрать место для бекапов.

Доступ к базам данных

Критически важные базы данных следует хранить на разных SQL-серверах. Настраивать запуск нужно от имени пользователя с минимальными полномочиями или от преднастроенного белого списка IP-адресов.

Антивирусная защита

Для работы сервера на Windows установка автоматически обновляемого антивирусного ПО рекомендуется при работе пользователей с сетевыми хранилищами. Для Linux установка антивируса не требуется при условии регулярного мониторинга безопасности сервера и контроля несанкционированного доступа. Для этого может быть полезна утилита Tiger.

Такой аудит раз в месяц поможет проверить корректность работы сервера, устранить уязвимости и контролировать безопасность сетевой инфраструктуры.

Безопасность сервера Linux имеет очень важное значение для защиты ваших данных, интеллектуальной собственности, а также времени от рук взломщиков. За безопасность операционной системы Linux отвечает системный администратор. В этой статье мы рассмотрим двадцать вещей, которые нужно сделать с вашей операционной системой Linux чтобы она была всегда в безопасности и надежно защищена. Если это домашний компьютер, то про безопасность, возможно, и нет смысла беспокоиться настолько сильно, достаточно будет надежных паролей и закрытия доступа к портам из сети интернет. Но в случае публичного сервера стоит обратить внимание на обеспечение его защиты.

Эти инструкции подойдут для любого дистрибутива, неважно что вы используете CentOS, Red Hat или Ubuntu, Debian.

1. Шифрование связи

Все данные, передаваемые по сети открыты для мониторинга. Поэтому нужно шифровать передаваемые данные, там, где это возможно с помощью паролей, ключей или сертификатов.

Используйте scp, ssh , rsync, или sftp для передачи файлов. Можно также смонтировать удаленную файловую систему в ваш домашний каталог с помощью таких инструментов, как shhfs.

GnuPG позволяет шифровать и подписывать ваши данные с помощью специального личного ключа. Также есть функции для управления ключами и доступа к открытым ключам.

Fugu - это графический инструмент для передачи файлов по протоколу SFTP. SFTP очень похож на FTP, но вся сессия здесь зашифрована. Это значит что никакие пароли или команды не передаются в открытом виде. А поэтому такие передачи менее уязвимы для третьих сторон. Также можно использовать FileZilla, это кроссплатформенный FTP клиент с поддержкой работы FTS через SSH / TLS и SSH File Transfer Protocol (SFTP).

OpenVPN - эффективный и легкий VPN клиент с поддержкой шифрования по SSH.

2. Постарайтесь не использовать FTP, Telnet, Rlogin и RSH

В большинстве сетей имена пользователей, пароли от FTP, Telnet, RSH команд могут быть перехвачены кем-либо из той же самой сети с помощью анализатора пакетов. Общее решение этой проблемы заключается в использовании OpenSSH, SFTP или SFTP, который добавляет SSL или TLS к обычному FTP. Выполните такую команду чтобы удалить NIS, RSH и другие устаревшие службы:

yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

3. Уменьшите количество программного обеспечения

Вам действительно нужны все установленные веб-службы? Не следует устанавливать ненужное программное обеспечение, чтобы избежать уязвимостей в этих программах. Используйте свой пакетный менеджер чтобы посмотреть установленные программы и удалить все ненужные:

yum list installed
$ yum list пакет
$ yum remove пакет

dpkg --list
$ dpkg --info пакет
$ apt-get remove пакет

4. Одна машина - одна служба

Запускайте разные службы на отдельных серверах или виртуальных машинах. Это ограничивает число сервисов, которые могут быть скомпрометированы. Например, если злоумышленник сможет взломать Apache, то он получит доступ ко всему серверу. Включая такие сервисы, как MySQL, сервер электронной почты и так далее. Вы можете использовать такое программное обеспечение, как XEN или OpenVZ для виртуализации.

5. Держите ядро Linux и ПО в актуальном состоянии

Применение патчей безопасности это очень важная часть того чтобы поддерживать безопасность сервера Linux. Операционная система предоставляет все инструменты для поддержания системы в актуальном состоянии, и обновления до новых версий. Все обновления безопасности должны применяться как можно скорее. Здесь тоже нужно использовать ваш менеджер пакетов. Например:

Или для систем основанных на Debian:

sudo apt update && sudo apt upgrade

Вы можете настроить Red Hat или Fedora для отправки вам уведомления на Email о доступности новых обновлений безопасности. Также вы можете настроить автоматическое обновление через cron, или же вы можете использовать aptcron в Debian для уведомления о необходимости обновить систему.

6. Используйте расширения безопасности в Linux

Операционная система Linux поставляется с различными патчами безопасности, которые могут быть использованы для защиты от неправильной конфигурации или вредоносных программ. Но вы также можете использовать также такие дополнительные системы контроля доступа для приложений как SELinux или AppArrmor.

SELinux предоставляет различные политики безопасности для ядра Linux. Здесь есть возможность контролировать доступ к любым ресурсам системы с помощью ролей. К тому или иному ресурсу может получить доступ только программа, роль которой позволяет это делать и даже права суперпользователя не имеют значения. SELinux намного увеличивает безопасность системы Linux, поскольку даже root здесь считается обычным пользователем. Подробнее о описано в отдельной статье.

7. Учетные записи пользователей и надежные пароли

Используйте команды useradd и usermod для создания и поддерживания учетных записей пользователей. Убедитесь, что у вас хороший и сильный пароль, он должен содержать, по крайней мере, восемь символов, желательно в разном регистре, среди которых должны встречаться специальные символы или цифры. Например, 8 символов, из которых семь буквы и один символ или цифра. Используйте такие инструменты, как John the ripper чтобы найти слабые пароли пользователей на сервере, а также настройте pam_cracklib.so, чтобы обеспечить соблюдение политики паролей.

8. Время от времени изменяйте пароли

Команда change позволяет указать количество дней до даты принудительной смены пароля. Эта информация используется системой для определения момента, когда пользователь должен его изменить. Эти настройки находятся в /etc/login.defs. Чтобы отключить старение пароля введите следующую команду:

change -l имя_пользователя

Чтобы получить информацию о строке годности пароля введите команду:

Также вы можете все настроить вручную, в файле /etc/shadow:

{пользователь}: {пароль}: {последнее_изменение}: {максимум_дней}: {минимум_дней}: {Предупреждение}: {деактивировать}: {строк_годности}:

  • Минимум дней - минимальный интервал между сменами паролей, то есть насколько часто пользователь может менять пароль.
  • Максимум дней - сколько дней будет годен пароль, по истечении этого срока пользователь будет вынужден поменять пароль.
  • Предупреждение - количество дней после которых пользователь будет предупрежден, что ему нужно сменить пароль.
  • Строк_годности - количество дней с первого января 1970 когда аккаунт будет полностью отключен.

chage -M 60 -m 7 -W 7 имя_пользователя

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

9. Блокируйте аккаунты после неудачных попыток входа

В операционной системе Linux вы можете использовать команду faillog, чтобы посмотреть неудачные попытки входа пользователей. Также с помощью нее вы можете установить лимит неудачных попыток входа. Вся информация о неудачных попытках входа хранится в файле /var/log/faillog. Чтобы ее посмотреть наберите:

А чтобы задать лимит попыток входа для определенного аккаунта используйте:

faillog -r -u пользователь

Также вы можете вручную блокировать или разблокировать аккаунты с помощью команды passwd. Чтобы заблокировать используйте:

passwd -l пользователь

А для разблокировки:

passwd -u пользователь

Также желательно проверить есть ли в системе аккаунты с пустыми паролями. Для этого выполните:

awk -F: "($2 == "") {print}" /etc/shadow

Также проверьте нет ли пользователей с группой или идом 0. Такой пользователь должен быть только один, и это root. Проверить можно с помощью такой команды:

awk -F: "($3 == "0") {print}" /etc/passwd

Должна быть только одна строка:

root:x:0:0:root:/root:/bin/bash

Если есть и другие - удалите их. Пользователи, а особенно их слабые пароли - одна из самых уязвимых вещей, которая может нарушить безопасность в linux.

10. Отключите вход для суперпользователя

Чтобы сохранить безопасность системы linux никогда не используйте вход от имени root пользователя. Вы можете воспользоваться sudo, чтобы получить необходимые полномочия и запустить нужную команду от имени суперпользователя. Эта команда позволяет не разглашать пароль суперпользователя другим админам, а также содержит инструменты мониторинга, ограничения и отслеживания действий.

11. Физическая безопасность сервера

Безопасность сервера Linux должна включать физическую безопасность. Вы должны ограничить физический доступ к консоли сервера. Настройте BIOS так, чтобы не поддерживалась загрузка с внешних носителей, таких как DVD, CD, USB. Также установите пароль на BIOS и загрузчик GRUB, чтобы защитить их параметры.

12. Отключите ненужные сервисы

Отключите все неиспользуемые сервисы и демоны. Также не забудьте удалить эти сервисы из автозагрузки. Вы можете посмотреть список всех активных сервисов в системах Red Hat командой:

chkconfig --list | grep "3:on"

Для отключения сервиса используйте:

service сервис stop
$ chkconfig сервис off

Найдите все открытые программами порты:

То же самое можно сделать с помощью сканера nmap:

nmap -sT -O localhost

Используйте iptables, чтобы закрыть все порты, которые не должны быть доступны из сети. Или остановите ненужные сервисы как описано выше.

13. Удалите Х сервер

Х сервер на серверном компьютере - вещь совсем необязательная. Вам не нужно запускать графическое окружение на выделенном Apache или Email сервере. Удалите это программное обеспечение для увеличения безопасности и производительности.

14. Настройте Iptables

iptables - это программа пространства пользователя для настройки встроенного в ядро фаервола Netfilter. Он позволяет фильтровать весь трафик и разрешать только определенные виды трафика. Также используйте TCPWrappers - ACL систему для фильтрации доступа в интернет. Вы можете предотвратить множество типов DOS атак с помощью iptables. Сетевая безопасность в Linux это очень важный момент общей безопасности системы.

15. Настройте ядро

В файле /etc/sysctl.conf хранятся настройки ядра, которые загружаются и применяются во время запуска системы.

Включить защиту от переполнения буфера execshield:

kernel.exec-shield=1
kernel.randomize_va_space=1

Включить защиту от подделывания IP:

net.ipv4.conf.all.rp_filter=1

Отключить перенаправление IP адресов:

net.ipv4.conf.all.accept_source_route=0

Игнорировать широковещательные запросы:

net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

Логгировать все подделанные пакеты:

net.ipv4.conf.all.log_martians = 1

16. Разбейте жесткий диск на разделы

Разделение жесткого диска на разделы в зависимости от назначения файлов улучшает безопасность ос Linux. Рекомендуется делать отдельные разделы для таких директорий:

  • /home
  • /var и /var/tmp

Сделайте отдельные разделы для корневых директорий Apache и FTP серверов. Откройте файл /etc/fstab и выставьте специальные опции для нужных разделов:

  • noexec - не выполнять любые программы или исполняемые файлы на этом разделе, разрешены только скрипты
  • nodev - не разрешать символические или специальные устройства на этом разделе.
  • nosuid - не разрешать SUID / SGID доступ для программ из этого раздела.

17. Используйте ограничение дискового пространства

Ограничивайте доступное дисковое пространство для пользователей. Для этого создайте дисковую квоту в /etc/fstab, перемонтируйте файловые системы и создайте базу данных дисковых квот. Это повысит безопасность в Linux.

18. Отключите IPv6

Протокол интернета нового поколения IPv6 в будущем заменит уже используемый IPv4. Но на данный момент нет инструментов, позволяющих проверить безопасность сети на основе IPv6. Многие дистрибутивы Linux разрешают использование протокола IPv6 по умолчанию. Хакеры могут отправлять нежелательный трафик и администраторы не смогут его отследить. Так что если эта служба вам не нужна отключите ее.

19. Отключите неиспользуемые SUID и SGID бинарники

Все исполняемые файлы, для которых включен флаг SUID или SGID потенциально опасны. Этот флаг означает, что программа будет выполняться с правами суперпользователя. А это означает, что если в программе есть какая-нибудь уязвимость или баг, то локальный или удаленный пользователь сможет использовать этот файл. Найдите все такие файлы с помощью следующей команды:

find / -perm +4000

Найти файлы с установленным SGID флагом:

find / -perm +2000

Или скомбинируем все это в одной команде:

find / \(-perm -4000 -o -perm -2000 \) -print
$ find / -path -prune -o -type f -perm +6000 -ls

Вам придется подробно изучить каждый найденный файл, чтобы понять насколько нужен тот или иной файл.

20. Общедоступные файлы

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

find /dir -xdev -type d \(-perm -0002 -a ! -perm -1000 \) -print

Теперь вам нужно проверить правильно ли выставлены права для группы и владельца этого каждого файла и не несет ли это угрозы безопасности.

Также желательно найти все файлы не принадлежащие никому:

find /dir -xdev \(-nouser -o -nogroup \) -print

21. Используйте централизованную систему аутентификации

Без централизованной системы аутентификации пользовательские данные становятся противоречивыми, что может привести к устареванию учетных данных, и забыванию аккаунтов, которые должны были бы быть уже давно удалены. Централизованная служба позволит поддерживать контроль над учетными записями и аутентификационными данными пользователей на разных системах Linux и Unix. Вы можете синхронизировать данные аутентификации между серверами. Но не используйте службу NIS, лучше посмотрите в сторону Open DAP.

Одной из интересных реализаций такой системы есть Kerberos. Она позволяет выполнять аутентификацию пользователей с помощью секретного ключа, в сетях, где пакеты могут быть перехвачены и модифицированы. Kerberos использует симметрический ключ для шифрования данных и требует для своей работы центр управления ключами. Вы можете настроить удаленный вход, удаленное копирование, защищенное копирование файлов между системами и другие задачи, с высоким уровнем безопасности.

22. Логирование и аудит

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

Вы можете смотреть логи с помощью таких утилит, как logwatch или logcheck. Они очень сильно упрощают чтение логов. Вы можете просматривать не весь файл, а только интересующие вас события, а также отправлять себе уведомление на электронный адрес.

Наблюдайте за системой с помощью службы auditd. Программа записывает на диск все события аудита которые вас интересуют. Все настройки аудита хранятся в файле /etc/audit.rules при запуске системы сервис прочитывает все правила из этого файла. Вы можете его открыть и настроить все как нужно или же воспользоваться отдельной утилитой - auditctl. Можно настроить такие моменты:

  • События запуска и выключения системы
  • Дата и время события
  • Пользовательские события (например доступ к определенному файлу)
  • Тип события (редактирование, доступ, удаление, запись, обновление и т д)
  • Удачность или сбой при выполнении события
  • Запись событий изменения настроек сети
  • Запись изменения пользователей и групп
  • Мониторинг изменений файлов

23. Защитите OpenSSH сервер

Разрешите только использование протокола 2:

Запретите вход от имени суперпользователя:

24. Установите IDS

IDS или система обнаружения вторжений пытается обнаружить подозрительную, вредоносную активность, такую как атака DOS, сканирование портов или даже попытки взломать компьютер путем мониторинга сетевого трафика.

Хорошая практика - развернуть подобное программное обеспечение, перед тем как система станет доступной из интернета. Вы можете установить AIDE, это HIDS (Host based IDS) которая может контролировать все аспекты внутреннего устройства вашей системы.

Snort - это программное обеспечение для обнаружения попыток вторжения из сети. Она способна выполнять анализ и журналирование пакетов и анализировать сетевой трафик в реальном времени.

25. Защитите ваши файлы и каталоги

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

  • Для шифрования и расшифровки файла по паролю используйте GPG
  • Также можно защищать файлы с помощью OpenSSL
  • Шифрование каталогов выполняется с помощью ecryptfs
  • TrueCrypt - свободный инструмент для шифрования дисков в Windows и Linux

Выводы

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

В сегодняшней статье мы познакомим вас с лучшими утилитами аудита безопасности Linux или как говорят наши англоязычные коллеги — Hardening Linux . Итак, тема статьи проверка уровня защищенности Linux-систем и оценка корректности конфигов с точки зрения информационной безопасности. Разумеется, мы не только сделаем обзор программ, но и приведем примеры их использования.

Аудит безопасности Linux собственными силами

Перед системными администраторами, а уж тем более перед аудиторами информационной безопасности часто встают задачи проверить защищенность большого количества хостов за очень короткое время. И конечно, для решения этих задач в Enterprise-сегменте есть специализированные инструменты, к примеру такие, как . Уверен, что все они - от open sources движка OpenVAS до коммерческих продуктов типа Nessus или Nexpose - известны нашему читателю. Но данный софт обычно используется, чтобы искать устаревшее и потому уязвимое программное обеспечение и затем запустить патч-менеджмент . Кроме этого не все сканеры безопасности учитывают определенные специфические особенности встроенных механизмов защиты ОС Linux и других продуктов с открытым исходным кодом. Ну и не в последнюю очередь значение имеет цена вопроса, ведь платные продукты могут позволить себе разве что компании, выделяющие под это дело какие-то бюджеты.

Вот поэтому сегодня речь пойдет о специализированном наборе бесплатных утилит, которые могут диагностировать текущий уровень защищенности системы, оценить потенциальные риски, к примеру «лишние сервисы», торчащие в интернет, или небезопасный конфиг по умолчанию, и в определенных случаях предложить варианты исправления найденных аудитом проблем. Еще одно преимущество использования этих инструментов заключается в возможности тиражировать типовые сценарии проверки фермы из любого количества Linux-систем и создавать документально подтвержденную базу тестов в виде логов и отдельных отчетов.

Практические аспекты аудита безопасности Linux

Если посмотреть глазами аудитора, то подход к тестированию можно разделить на два типа.

Первый - это соответствие так называемым compliance-требованиям , здесь проверяется наличие обязательных элементов защиты, прописанных в каком-либо международном стандарте или «best practice». Классический пример - требования PCI DSS для платежных ИТ-систем, SOX404 , NIST-800 series, .

Второй - это сугубо рациональный подход, основанный на вопросе «А что еще можно сделать, чтобы усилить защищенность?». Тут нет обязательных требований - только твои знания, светлая голова и умелые руки. К примеру, это обновление версии ядра и/или пакетов приложений, включение , форсирование SELinux, настройка файрвола iptables.

Все, что относится ко второму подходу, принято называть специальным термином Linux hardening , что еще можно определить как «действия, направленные на усиление уровня исходной защищенности ОС (или ПО) преимущественно штатными средствами».

Соответствие compliance-требованиям, как правило, проверяют при подготовке к прохождению обязательного аудита типа PCI DSS или другого сертификационного аудита. Мы же больше уделим внимание Hardening-составляющей. Все крупные вендоры предлагают для своих продуктов Hardening Guidelines - руководства, содержащие советы и рекомендации, как усилить защищенность, учитывая штатные механизмы безопасности и специфику ПО. Так, подобные руководства есть у Red Hat , Debian , Oracle , Cisco .

Hardening - это термин из мира информационной безопасности, который обозначает процесс обеспечения безопасности системы (программы) за счет снижения ее уязвимости и, как правило, с использованием исключительно штатных утилит или механизмов защиты.

Кстати, у нас уже когда-то была статья про настройку опций Hardening, но в той статье речь шла именно о настройке. Мы же сначала проверим нашу систему с помощью специализированных утилит, то есть проведем аудит безопасности, оценим текущий уровень защиты, а потом уже накрутим туда security option, если в этом будет необходимость. Ну или еще как вариант: если сервер уже настроен с точки зрения безопасности, наши инструменты смогут это проверить и, возможно, подсказать, что же можно сделать еще.

Инструменты аудита безопасности Linux

Lynis - auditing system hardening testing

Установка на macOS:

Инициализация тестов
Результаты тестов из группы System Tool and Boot & Services
Результаты тестов из группы Kernel and Memory & Process auditing
Результаты тестов из группы User and Group & Authentication

Перед аудитом всегда полезно проверить, доступна ли новая версия Lynis:

Если же вы хотите поместить имя аудитора, запустившего тестирование, просто добавьте параметр -auditor :

sudo lynis audit system - c - auditor Daddy

На любом этапе аудита безопасности Linux процесс проверки может быть продолжен (Enter) или принудительно прекращен (Ctrl+C). Результаты выполненных тестов будут писаться в журнал Lynis в каталог /var/log/lynis.log. Учтите, что лог-файл будет перезаписываться при каждом следующем запуске утилиты.

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

#!/bin/sh

AUDITOR = ”automated ”

DATE = $ (date + % Y % m % d )

HOST = $ (hostname )

LOG_DIR = ”/ var / log / lynis ”

REPORT = ”$ LOG_DIR / report - $ { HOST } . $ { DATE } ”

DATA = ”$ LOG_DIR / report - data - $ { HOST } . $ { DATE } . txt ”

cd / usr / local / lynis

. / lynis - c –auditor “$ { AUDITOR } ”–cronjob > $ { REPORT }

mv / var / log / lynis - report . dat $ { DATA }

# End

Сохраните этот скрипт в каталог /etc/cron.monthly/lynis. И не забудьте добавить пути для сохранения логов (/usr/local/lynis and /var/log/lynis), иначе возможна некорректная работа.

Можно посмотреть список всех доступных для вызова команд:

Краткая инструкция по работе с утилитой:

man lynis

Варианты возможных статусов по результатам проверки ограничиваются следующим списком: NONE, WEAK, DONE, FOUND, NOT_FOUND, OK, WARNING .


Пример вывода статусов
Запуск отдельных тестов в Lynis

На практике бывает необходимо провести лишь некоторые определенные тесты. К примеру, если ваш сервер выполняет только функции Mail Server или Apache. Для этого мы можем использовать параметр -tests. Синтаксис команды выглядит таким образом:

Помимо этого, функциональность Lynis расширяют различные дополнения , которые можно дописывать самостоятельно, а можно подкладывать новые в существующую директорию.

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


Вывод рекомендаций, как устранять найденные проблемы

Профили

Профили, которые управляют аудитом, определяются в файлах с расширением.prf, расположенных в каталоге /etc/lynis. Профиль по умолчанию называется, предсказуемо, default.prf. Разработчики не советуют править его напрямую: любые изменения, которые вы хотите внести в аудит, лучше добавлять в файл custom.prf, находящийся в том же каталоге.

Создаем и редактируем кастомный профиль:

touch / etc / lynis / custom . prf

sudo nano / etc / lynis / custom . prf

В данном файле можно определить список тестов, которые необходимо исключить из аудита Lynis. Например:

  • FILE-6310: проверка разделов;
  • HTTP-6622: тест установки nginx;
  • HTTP-6702: тест установки Apache.

Чтобы исключить какой-то определенный тест, воспользуйтесь директивой skip-test и укажите ID теста. Например, так:

# Is nginx installed?

skip - test = HTTP - 6622

# Is Apache installed?

skip - test = HTTP - 6702

Оценка hardening state

По результатам выполнения всех тестов в конце каждого вывода аудита утилиты (чуть ниже раздела предложений) вы найдете раздел, который будет выглядеть примерно так:

Lynis security scan details :

Hardening index : 57 [ ############.........]

Tests performed : 216

Plugins enabled : 0

Итоговая оценка hardening state

Данный результат, выраженный числом, показывает количество пройденных тестов и индекс безопасности системы, то есть hardening index - конечное число, с помощью которого Lynis дает оценку общего уровня безопасности сервера. И очень важно не забывать, что индекс безопасности изменяется в зависимости от количества исправленных предупреждений и выполненных рекомендаций Lynis. Поэтому после исправлений найденных проблем повторный аудит безопасности может показать совсем другое число!

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

Lunar - a UNIX security auditing tool

Примеры запуска команд из CLI:


Просмотр всех параметров запуска Lunar

Запуск Lunar в режиме аудита безопасности, то есть без внесения изменений в систему :

Перечисление тестов:

Запуск в режиме исправления, то есть с внесением изменений в систему :

Пример запуска тестов для web-сервера Apache

Nix Auditor - a CIS Audit made easier

Nix Auditor - это очередной скрипт для проверки, соответствует ли безопасность Linux-систем требованиям показателя CIS. Ориентирован на RHEL, CentOS и прочие RPM-дистрибутивы.

Разработчики заявляют о таких преимуществах Nix Auditor:

  • скорость сканирования - провести базовую проверку ОС можно менее чем за 120 секунд и тут же получить отчет;
  • точность проверки - работа Nix Auditor проверена на разных версиях дистрибутивов CentOS и Red Hat;
  • настраиваемость - исходники с документацией к программе лежат на GitHub, поэтому код легко настраивается в соответствии с типом ОС и набором элементов системы, которые необходимо проверить;
  • простота использования - достаточно сделать стартовый скрипт исполняемым, и тот уже готов к проверке.

Пример выполнения команд для загрузки утилиты с GitHub-хранилища и последующего запуска скрипта:

git clone https : //github.com/XalfiE/Nix-Auditor.git

cd Nix - Auditor

chmod + x nixauditor

. / nixauditor

Пример вывода информации после запуска Nix Auditor

Loki - Simple IOC and Incident Response Scanner

Утилита Loki - не совсем классический инструмент для проведения аудита Linux, но он отлично подходит для поиска следов взлома, что является , но отчасти можно отнести и к практике аудита.

По заверениям разработчиков, вот такие возможности дает нам Loki - Simple IOC and Incident Response Scanner:

I. Четыре способа выявить взлом:

  • имена файлов (соответствие регулярному выражению полного пути файла);
  • проверка в соответствии с правилами Yara (поиск на соответствие сигнатурам Yara по содержимому файлов и памяти процессов);
  • проверка и анализ хешей (сравнение просканированных файлов с хешами (MD5, SHA-1, SHA-256) известных вредоносных файлов);
  • проверка обратной связи C2 (сравнивает конечные точки технологического соединения с C2 IOC).

II. Дополнительные проверки:

  • проверка файловой системы Regin (через -reginfs);
  • проверка аномалий системных и пользовательских процессов;
  • сканирование распакованных SWF;
  • проверка дампа SAM;
  • проверка DoublePulsar - попытка выявить бэкдор , слушающий порты 445/tcp и 3389/tcp.

Чуть-чуть коснемся того, как программа определяет факт взлома. Типовыми признаками (Indicators of Compromise), свидетельствующими, что компьютер был скомпрометирован (то есть взломан), могут быть:

  • появление на компьютере вредоноса (вирусов, бэкдоров, крипторов, и так далее), а также хакерских утилит (например, для исследования сети, эксплуатации уязвимостей, сбора учетных данных);
  • появление неизвестных новых исполнимых и других файлов, даже если они не детектируются антивирусным движком как malware-код;
  • аномальная сетевая активность (подключение к удаленным хостам, открытие для прослушивания портов неизвестными программами и прочее);
  • аномальная активность на дисковых устройствах (I/O) и повышенное потребление ресурсов системы (CPU, RAM, Swap).

Перед началом инсталляции нужно доустановить несколько зависимых пакетов. Это colorama (дает расцветку строк в консоли), psutil (утилита проверки процессов) и, если еще не установлен, пакет Yara.

Итак, приступаем. Установка в (предварительно должен быть установлен пакет Yara, который по умолчанию уже установлен в Kali Linux):

cd Loki /

python2 loki - upgrader . py

python2 loki . py - h

Установка в Ubuntu/Debian:

sudo apt - get install yara python - yara python - pip python - setuptools python - dev git

sudo pip2 install -- upgrade pip

sudo pip2 install - U setuptools

sudo pip2 install psutil netaddr pylzma colorama

git clone https : //github.com/Neo23x0/Loki

cd / home / download / Loki

python2 loki - upgrader . py

python2 loki . py - h

Установка в BlackArch:

sudo pacman - S yara python2 - pip python2 - yara

sudo pip2 install psutil netaddr pylzma colorama

git clone https : //github.com/Neo23x0/Loki

cd / home / download / Loki

python2 loki - upgrader . py

python2 loki . py - h

Пример использования

Некоторые опции запуска:

optional arguments :

H , -- help show this help message and exit

В этом материале мы познакомимся с основными утилитами для Linux hardening. На русском языке это называется как-то вроде «проверка уровня защищенности Linux-систем и оценка корректности конфигов с точки зрения ИБ». Разумеется, мы не только сделаем обзор программ, но и приведем примеры их использования.

Сам себе аудитор, или безопасность собственными силами

Перед администраторами, а уж тем более перед аудиторами ИБ часто встают задачи проверить защищенность большого количества хостов за очень короткое время. И конечно, для решения этих задач в Enterprise-сегменте существуют специализированные инструменты, к примеру такие, как сетевые сканеры безопасности . Уверен, что все они - от open sources движка OpenVAS до коммерческих продуктов типа Nessus или Nexpose - известны нашему читателю. Однако этот софт обычно используется, чтобы искать устаревшее и потому уязвимое ПО и затем запустить патч-менеджмент . К тому же не все сканеры учитывают некоторые специфические особенности встроенных механизмов защиты Linux и других open sources продуктов. Ну и не в последнюю очередь значение имеет цена вопроса, ведь коммерческие продукты в состоянии позволить себе разве что компании, выделяющие под это дело бюджеты.

Именно поэтому сегодня речь пойдет о специализированном наборе свободно распространяемых утилит, которые могут диагностировать текущий уровень защищенности системы, оценить потенциальные риски, к примеру «лишние сервисы», торчащие в интернет, или небезопасный конфиг по умолчанию, и даже предложить варианты исправления найденных недостатков. Еще одно преимущество использования этих тулз заключается в возможности тиражировать типовые сценарии проверки фермы из любого количества Linux-систем и формировать документально подтвержденную базу тестов в виде логов и отдельных репортов.

Практические аспекты аудита защищенности

Если посмотреть глазами аудитора, то подход к тестированию можно разделить на два типа.

Первый - это соответствие так называемым compliance-требованиям , здесь проверяется наличие обязательных элементов защиты, прописанных в каком-либо международном стандарте или «best practice». Классический пример - требования PCI DSS для платежных ИТ-систем, SOX404 , NIST-800 series , .

Второй - это сугубо рациональный подход, основанный на вопросе «А что еще можно сделать, чтобы усилить защищенность?». Тут нет обязательных требований - только твои знания, светлая голова и умелые руки. К примеру, это обновление версии ядра и/или пакетов приложений, включение , форсирование , настройка файрвола .

Все, что относится ко второму подходу, принято называть специальным термином Hardening , что еще можно определить как «действия, направленные на усиление уровня исходной защищенности операционной системы (или программы) преимущественно штатными средствами».

Соответствие compliance-требованиям, как правило, проверяют при подготовке к прохождению обязательного аудита типа PCI DSS или другого сертификационного аудита. Мы же больше уделим внимание Hardening-составляющей. Все крупные разработчики предлагают для своих продуктов Hardening Guidelines - руководства, содержащие советы и рекомендации, как усилить защищенность, учитывая штатные механизмы безопасности и специфику софта. Так, подобные руководства есть у Red Hat , Debian , Oracle , Cisco .

INFO

Hardening - это термин из мира ИБ, который обозначает процесс обеспечения безопасности системы (программы) за счет снижения ее уязвимости и, как правило, с использованием только штатных утилит или механизмов защиты.

Sudo apt-get update sudo apt-get install lynis

И для RPM-ориентированных дистрибутивов (предварительно добавив соответствующие репозитории):

Yum install linus -y

Установка на macOS:

$ brew search lynis $ brew install lynis

Чтобы запустить Lynis, достаточно указать хотя бы один ключ. К примеру, для запуска всех имеющихся тестов следует указать ключ -c (check all, проверить все):

# Типовой набор тестов sudo lynis audit system # Полный набор тестов sudo lynis audit system -c # Сканирование удаленного хоста audit system remote







Перед аудитом всегда полезно проверить, доступна ли новая версия Lynis:

Lynis update info && lynis update check

У утилиты Lynis, помимо стандартного, существует еще один режим - непривилегированного запуска :

Lynis audit --pentest

Если же ты хочешь поместить имя аудитора, запустившего тестирование, просто добавь параметр -auditor :

Sudo lynis audit system -c -auditor Daddy

На любом этапе аудита процесс проверки может быть продолжен (Enter) либо принудительно прекращен (Ctrl+C). Результаты выполненных тестов будут писаться в журнал Lynis в /var/log/lynis.log . Учти, что журнал будет перезаписываться при каждом следующем запуске утилиты.

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

#!/bin/sh AUDITOR="automated" DATE=$(date +%Y%m%d) HOST=$(hostname) LOG_DIR="/var/log/lynis" REPORT="$LOG_DIR/report-${HOST}.${DATE}" DATA="$LOG_DIR/report-data-${HOST}.${DATE}.txt" cd /usr/local/lynis ./lynis -c –auditor "${AUDITOR}" –cronjob > ${REPORT} mv /var/log/lynis-report.dat ${DATA} # End

Сохрани этот скрипт в каталог /etc/cron.monthly/lynis . И не забудь добавить пути для сохранения логов (/usr/local/lynis и /var/log/lynis), иначе возможна некорректная работа.

Можно посмотреть список всех доступных для вызова команд:

Lynis show commands

Особо любопытные могут глянуть настройки из конфига по умолчанию:

Lynis show settings

Краткий инструктаж по работе с утилитой:

Man lynis

Варианты возможных статусов по результатам проверки ограничиваются следующим списком: NONE, WEAK, DONE, FOUND, NOT_FOUND, OK, WARNING .


Запуск отдельных тестов в Lynis

На практике бывает необходимо провести лишь некоторые тесты. К примеру, если твой сервак выполняет только функции Mail Server или Apache. Для этого мы можем использовать параметр -tests . Синтаксис команды выглядит следующим образом:

Lynis -tests "Test-IDs"

Если тебе сложно разобраться из-за большого количества идентификаторов тестов, то ты можешь использовать групповой параметр -test-category . С помощью данной опции Lynis запускает идентификаторы только тех тестов, которые входят в определенную категорию. Например, мы планируем запустить тесты брандмауэра и ядра:

./lynis -tests-category "firewalls kernel"

Помимо этого, функциональность Lynis расширяют различные плагины , которые можно дописывать самостоятельно, а можно подкладывать новые в существующую директорию.

Предложения по исправлению (Suggestions)

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

Профили

Профили, которые управляют аудитом, определяются в файлах с расширением .prf , расположенных в каталоге /etc/lynis . Профиль по умолчанию называется предсказуемо: default.prf . Разработчики не рекомендуют править его напрямую: любые изменения, которые ты хочешь внести в аудит, лучше добавлять в файл custom.prf , находящийся в том же каталоге.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!



Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!