Поиск по сайту:

Как использовать Tripwire для обнаружения вторжений на сервер Ubuntu VPS


Статус: устарело

В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

  • Обновите Ubuntu до версии 14.04.
  • Обновление Ubuntu 14.04 до Ubuntu 16.04
  • Перенесите данные сервера в поддерживаемую версию.

Причина:

Смотрите вместо этого:

Введение

Безопасность — невероятно сложная проблема при администрировании онлайн-серверов. Хотя можно настроить брандмауэры, политики fail2ban, безопасные службы и заблокировать приложения, трудно точно знать, эффективно ли вы заблокировали каждую атаку.

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

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

В этой статье мы обсудим, как установить и настроить tripwire в Ubuntu 12.04. Из-за характера систем обнаружения вторжений лучше всего просмотреть это руководство вскоре после создания сервера, чтобы убедиться, что файловая система чиста.

Установить Tripwire

К счастью, tripwire можно найти в стандартных репозиториях Ubuntu. Мы можем установить его с помощью apt-get, набрав:

sudo apt-get update
sudo apt-get install tripwire

Эта установка будет выполнять довольно много настроек необходимых пакетов.

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

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

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

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

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

Инициализировать базу данных

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

Во-первых, если вы не выбрали «да» для создания файла политики во время установки, вы можете сделать это сейчас, введя команду:

sudo twadmin --create-polfile /etc/tripwire/twpol.txt

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

Это создает зашифрованный файл политики из обычного текстового файла, который мы указали в каталоге /etc/tripwire/. Этот зашифрованный файл — это то, что tripwire на самом деле читает при проверке.

Теперь мы можем инициализировать базу данных, которую tripwire будет использовать для проверки нашей системы. При этом используется файл политики, который мы только что инициировали, и проверяются точки, указанные в нем.

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

Основной способ инициализации базы данных — запуск:

sudo tripwire --init

Это создаст наш файл базы данных и сообщит о вещах, которые мы должны настроить в конфигурации.

Поскольку мы хотим сохранить результаты для информирования наших решений о конфигурации, мы можем взять любой экземпляр, в котором упоминается файл, и поместить его в файл в каталоге конфигурации tripwire. Мы можем запустить проверку и поместить перечисленные файлы в файл с именем test_results в нашем каталоге конфигурации tripwire:

sudo sh -c 'tripwire --check | grep Filename > test_results'

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

less /etc/tripwire/test_results
Filename: /etc/rc.boot
Filename: /root/mail
Filename: /root/Mail
Filename: /root/.xsession-errors
. . .

Настройте файл политики в соответствии с вашей системой

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

Откройте политику обычного текста в вашем редакторе с привилегиями root:

sudo nano /etc/tripwire/twpol.txt

Выполните поиск каждого из файлов, которые были возвращены в файле test_results. Закомментируйте все строки, которые вы найдете совпадающими.

В разделе «Сценарии загрузки» вы должны закомментировать строку /etc/rc.boot, так как ее нет в системе Ubuntu:

<пред>

В домашнем каталоге /root было много файлов, которые нужно было закомментировать в моей системе. Все, чего нет в вашей системе, должно быть закомментировано:

<пред>

Последней частью моей проверки были жалобы на файловые дескрипторы в файловой системе /proc. Эти файлы постоянно меняются, поэтому если мы оставим конфигурацию как есть, будут регулярно возникать ложные срабатывания.

В разделе «Информация об устройствах и ядре» вы можете увидеть, что файловая система /proc указана для проверки.

(
  rulename = "Devices & Kernel information",
  severity = $(SIG_HI),
)
{
        /dev            -> $(Device) ;
        /proc           -> $(Device) ;
}

Однако это проверит каждый файл под ним. Мы этого особо не хотим. Вместо этого мы удалим эту спецификацию и добавим параметры конфигурации для всех каталогов в /proc, которые мы делаем для проверки:

<пред>

Пока мы находимся в этой части файла, мы также хотим что-то сделать с файловой системой /dev/pts. Tripwire не будет проверять это расположение по умолчанию, потому что ему сказано проверять /dev, а /dev/pts находится в отдельной файловой системе, в которую он не войдет, если не указано иное. Чтобы Tripwire также проверил это, мы можем явно назвать его здесь:

<пред>

Последнее, что мы закомментируем, это строки /var/run и /var/lock, чтобы наша система не помечала нормальные изменения файловой системы службами:

<пред>

Сохраните и закройте файл, когда закончите редактирование.

Теперь, когда наш файл настроен, нам нужно реализовать его, воссоздав зашифрованный файл политики, который фактически читает tripwire:

sudo twadmin -m P /etc/tripwire/twpol.txt

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

sudo tripwire --init
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/tripit.twd
The database was successfully generated.

Все предупреждения, которые вы получали ранее, теперь должны исчезнуть. Если предупреждения все еще есть, продолжайте редактировать файл /etc/tripwire/twpol.txt, пока они не исчезнут.

Проверьте конфигурацию

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

Основной синтаксис для проверки:

sudo tripwire --check

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

Как только это будет завершено, вы можете быть уверены, что ваша конфигурация верна. Мы должны немного очистить наши файлы, чтобы удалить конфиденциальную информацию из нашей системы.

Мы можем удалить созданный нами файл test_results:

sudo rm /etc/tripwire/test_results

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

Все, что нам нужно сделать, чтобы восстановить обычный текстовый файл, — это передать зашифрованный файл в twadmin почти так же, как мы сделали это для создания зашифрованной версии. Мы просто снова передаем его в обычный текстовый файл:

sudo sh -c 'twadmin --print-polfile > /etc/tripwire/twpol.txt'

Проверьте это сейчас, переместив текстовую версию в резервную копию, а затем заново создайте ее:

sudo mv /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
sudo sh -c 'twadmin --print-polfile > /etc/tripwire/twpol.txt'

Если это сработало правильно, теперь вы можете безопасно удалить текстовые файлы:

sudo rm /etc/tripwire/twpol.txt
sudo rm /etc/tripwire/twpol.txt.bak

Настройте уведомления по электронной почте

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

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

Это дает нам прекрасную возможность увидеть, как tripwire реагирует на изменения в системе.

Установите файлы следующим образом:

sudo apt-get install mailutils

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

<пред>

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

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

Мы можем сделать это, набрав:

sudo tripwire --check --interactive

Это запустит те же тесты, что и обычно, но в конце, вместо вывода отчета на экран, он будет скопирован в текстовый файл и открыт в редакторе по умолчанию.

В этом отчете содержится довольно много подробностей о каждом измененном файле. Фактически, на моей машине сгенерированный отчет состоял из 2275 строк. Такой объем информации крайне полезен в случае реальной проблемы с безопасностью, но в нашем случае, наверное, по большей части не слишком интересен.

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

Rule Name: Other binaries (/usr/sbin)
Severity Level: 66
-------------------------------------------------------------------------------

Remove the "x" from the adjacent box to prevent updating the database
with the new values for this object.

Added:
[x] "/usr/sbin/maidag"

Modified:
[x] "/usr/sbin"
. . .

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

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

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

На этом этапе он запросит ваш локальный пароль, чтобы tripwire мог обновить файлы своей базы данных.

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

Автоматизируйте Tripwire с помощью Cron

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

Мы будем использовать crontab root, потому что изменения в системном cronjob могут быть стерты системными обновлениями.

Проверьте, есть ли у root уже crontab, введя эту команду:

sudo crontab -l

Если crontab присутствует, вы должны передать его в файл для резервного копирования:

sudo sh -c 'crontab -l > crontab.bad'

После этого мы можем отредактировать crontab, набрав:

sudo crontab -e

Если вы впервые запускаете crontab, он спросит вас, какой редактор вы хотите использовать. Если у вас нет предпочтений к другому редактору, nano, как правило, является безопасным выбором.

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

Нам нужно использовать формат min hour * * * command. Команда, которую мы хотим использовать, та же самая, которую мы использовали для отправки нашего отчета по почте ранее. Нам не нужно использовать sudo, так как это будет запускаться от имени пользователя root.

Чтобы tripwire запускался каждый день в 3:30, мы можем поместить в наш файл такую строку:

<пред>

Вы можете настроить это по своему усмотрению.

Заключение

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

Джастин Эллингвуд