Как настроить локальную установку OSSEC в Debian 8

Вступление

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

OSSEC может быть установлен для мониторинга только того сервера, на котором он установлен, что является local установкой на языке OSSEC, или может быть установлен как server для мониторинга одного или нескольких agents. В этом руководстве вы узнаете, как установить OSSEC для мониторинга сервера Debian 8, на котором он установлен, то есть установки local OSSEC.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Дроплет Debian 8 с некорневым пользователем sudo и ключами SSH, которые вы можете настроить, следуя this учебник .

Шаг 1 - Установка необходимых пакетов

На этом этапе мы установим пакеты, необходимые для OSSEC. Сначала обновите базу данных пакетов.

sudo apt-get update

Затем установите доступные обновления.

sudo apt-get -y upgrade

Наконец, установите зависимости OSSEC (+ build-essential + и + inotify-toops +) и + ntp +, который является службой протокола сетевого времени.

sudo apt-get install build-essential inotify-tools ntp

Наконец, включите службу NTP. Это помогает серверу автоматически сохранять точное время.

sudo systemctl start ntp

Шаг 2 - Включение брандмауэра

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

Самый простой способ сделать это - установить пакет + iptables-persistent +, используя:

sudo apt-get install -y iptables-persistent

После аутентификации вам будет предложено сохранить правила брандмауэра IPv4 и IPv6 в отдельных файлах. Нажмите * ENTER * в обоих запросах, чтобы принять местоположения по умолчанию, которые являются + / etc / iptables / rules.v4 + и + / etc / iptables / rules.v6 +.

По умолчанию в этих файлах нет правил, поэтому нам нужно создать их, чтобы обеспечить защиту сервера и открытое соединение SSH. Нас интересуют только правила IPv4, поэтому мы изменим только файл правил + rules.v4 +.

Откройте файл правил + rules.v4 +, используя + nano + или ваш любимый текстовый редактор.

sudo nano /etc/iptables/rules.v4

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

Оригинал /etc/iptables/rules.v4

# Generated by iptables-save v1.4.21 on Sat May  9 01:27:00 2015
*filter
:INPUT ACCEPT [5722:416593]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4372:503060]
COMMIT
# Completed on Sat May  9 01:27:00 2015

Следующего набора правил по умолчанию будет достаточно для защиты сервера и подключения SSH, поэтому скопируйте и вставьте его только между *: OUTPUT ACCEPT [4372: 503060] * и * COMMIT *. Эти правила были взяты из official документации Debian; Вы можете увидеть, что каждое правило делает, встроенными комментариями.

#  Allow all loopback traffic. Drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic
-A OUTPUT -j ACCEPT

#  Uncomment the next two lines to allow HTTP and HTTPS connections
#-A INPUT -p tcp --dport 80 -j ACCEPT
#-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections. If you changed your SSH port, do same here.
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP

Сохраните и закройте файл. Затем, чтобы применить новый набор правил, перезапустите + iptables-persistent +.

sudo systemctl restart netfilter-persistent

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

sudo iptables -L

Ваш вывод будет выглядеть так:

вывод iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable

. . .

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Шаг 3 - Загрузка и проверка OSSEC

OSSEC поставляется в виде сжатого тарбола. На этом шаге вы загрузите его и файл контрольной суммы, который используется для проверки того, что тарбол не был подделан. Вы можете проверить project веб-сайт для получения последней версии. На момент написания этой статьи OSSEC 2.8.1 является последней стабильной версией.

Чтобы скачать архив, введите:

wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz

Затем загрузите файл контрольной суммы, используя

wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt

После загрузки обоих файлов проверьте md5sum сжатого архива.

md5sum -c ossec-hids-2.8.1-checksum.txt

Выход должен быть:

вывод md5sum

ossec-hids-2.8.1.tar.gz: OK
md5sum: WARNING: 1 line is improperly formatted

Затем выполните проверку контрольной суммы SHA1.

sha1sum -c ossec-hids-2.8.1-checksum.txt

Его вывод должен быть:

вывод sha1sum

ossec-hids-2.8.1.tar.gz: OK
sha1sum: WARNING: 1 line is improperly formatted

В каждом случае игнорируйте строку * WARNING *. Строка * OK * подтверждает, что файл исправен.

Шаг 4 - Установка OSSEC

На этом этапе мы установим OSSEC. Для начала распакуйте его.

tar xf ossec-hids-2.8.1.tar.gz

Он будет распакован в каталог с именем + ossec-hids-2.8.1 +. Перейдите в этот каталог.

cd ossec-hids-2.8.1

Чтобы исправить ошибку + / etc / hosts.deny +, откройте файл + host-deny.sh + в каталоге + / var / ossec / active-response + после извлечения OSSEC из загруженного архива.

nano active-response/host-deny.sh

В конце файла найдите две строки в коде, как показано ниже, которые начинаются с + TMP_FILE = +, под комментарием + # Удаление из hosts.deny +. Отредактируйте обе строки, чтобы убрать пробелы с обеих сторон знака + = +, чтобы блок кода выглядел следующим образом.

Модифицированный кодовый блок host-deny.sh

# Deleting from hosts.deny
elif [ "x${ACTION}" = "xdelete" ]; then
  lock;

  if [ "X${TMP_FILE}" = "X" ]; then
    # Cheap fake tmpfile, but should be harder then no random data

  fi

Сохраните и закройте файл. Это завершает исправление ошибки.

Далее начните установку.

sudo ./install.sh

На протяжении всего процесса установки вам будет предложено ввести некоторые данные. Сначала вам будет предложено выбрать язык установки, который по умолчанию является английским (en). Нажмите * ENTER *, если вы предпочитаете этот язык. В противном случае сначала введите 2 буквы из списка поддерживаемых языков. Затем нажмите * ENTER * еще раз, чтобы начать установку.

Вопрос 1 спросит * Какой тип установки вы хотите (сервер, агент, локальный, гибридный или справочный)? *. Введите * local * и нажмите * ENTER *.

Для всех следующих вопросов нажмите * ENTER *, чтобы принять значение по умолчанию, но учтите, что в вопросе 3.1 вам будет предложен ваш адрес электронной почты. Введите его, и установщик будет использовать его для автоматического поиска соответствующего SMTP-сервера.

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

Успешная установка OSSEC

- Configuration finished properly.

- To start OSSEC HIDS:
               /var/ossec/bin/ossec-control start

- To stop OSSEC HIDS:
               /var/ossec/bin/ossec-control stop

- The configuration can be viewed or modified at /var/ossec/etc/ossec.conf

. . .

Шаг 4 - Настройка параметров электронной почты OSSEC

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

Настройки электронной почты находятся в основном файле конфигурации OSSEC - + ossec.conf +, который находится в каталоге `` + / var / ossec / etc + `. Чтобы получить доступ к любому файлу OSSEC и изменить его, сначала необходимо переключиться на пользователя root.

sudo su

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

cd /var/ossec/etc

Затем сделайте резервную копию файла конфигурации.

cp ossec.conf ossec.conf.00

Откройте исходный файл с помощью текстового редактора + nano + или предпочитаемого вами текстового редактора.

nano ossec.conf

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

/var/ossec/etc/ossec.conf

<global>
   <email_notification>yes</email_notification>
   <email_to></email_to>
   <smtp_server></smtp_server>
   <email_from></email_from>
</global>
  • <email_to> * - это электронное письмо, которое вы указали при установке. Оповещения будут отправляться на этот адрес электронной почты, а * <smtp_server> * - это SMTP-сервер, автоматически обнаруживаемый сценарием установки. Вам не нужно менять эти значения.

  • <email_from> * - это адрес электронной почты, с которого, по-видимому, приходят оповещения OSSEC. По умолчанию он создается на основе учетной записи пользователя почты OSSEC и имени хоста сервера. Вам следует изменить это значение на действительный адрес электронной почты, чтобы уменьшить вероятность того, что ваши письма будут помечены как спам SMTP-сервером вашего провайдера электронной почты. Обратите внимание, что * <email_to> * и * <email_from> * могут совпадать, если на принимающем SMTP-сервере нет строгой политики защиты от спама.

После изменения настроек электронной почты сохраните и закройте файл. Затем запустите OSSEC.

/var/ossec/bin/ossec-control start

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

Шаг 6 - Добавление оповещений

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

Сначала откройте + ossec.conf +.

nano ossec.conf

Прокрутите вниз до раздела * <syscheck> *. Прямо под тегом + <частота> + добавьте + <alert \ _new \ _files> yes </ alert \ _new \ _files> +.

<syscheck>

   <frequency>79200</frequency>

Пока у вас по-прежнему открыт + ossec.conf +, взгляните на список системных каталогов, которые отслеживает OSSEC, который находится под последней измененной строкой. Добавьте + report_changes =" yes "realtime =" yes "+ к обоим тегам каталога.

<directories  check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories  check_all="yes">/bin,/sbin</directories>

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

<directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
</directories><^>

Теперь сохраните и закройте + ossec.conf +.

Следующий изменяемый файл находится в каталоге + / var / ossec / rules +, поэтому перейдите в этот каталог.

cd /var/ossec/rules

Каталог + / var / ossec / rules + содержит множество файлов XML, включая + ossec_rules.xml +, который содержит определения правил по умолчанию OSSEC, и + local_rules.xml +, где вы можете добавлять собственные правила.

В + ossec ruleset.xml правилом, которое срабатывает при добавлении файла в отслеживаемый каталог, является правило 554. По умолчанию OSSEC не отправляет оповещения при срабатывании этого правила, поэтому задача здесь состоит в том, чтобы изменить это поведение. Вот как правило 554 выглядит по умолчанию:

Правило 554 из /var/ossec/rules/ossec_rules.xml

<rule id="554" level="0">
<category>ossec</category>
<decoded_as>syscheck_new_entry</decoded_as>
<description>File added to the system.</description>
<group>syscheck,</group>
</rule>

OSSEC не отправляет предупреждение, если для правила установлено значение 0, поэтому мы скопируем это правило в local__rules.xml и изменим его, чтобы вызвать предупреждение. Для этого откройте local_rules.xml.

nano local_rules.xml

Добавьте следующее в конец файла перед строкой с тегом </ group>.

</group>

Сохраните и закройте файл, затем перезапустите OSSEC, чтобы применить изменения.

/var/ossec/bin/ossec-control restart

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

Шаг 6 (необязательно) - остановка предупреждений IPTables, отклоненных

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

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

Чтобы удалить эти оповещения, нам нужно настроить правило 1002. Это правило находится в + / var / ossec / rules / syslog ruleset.xml и выглядит так:

Правило 1002 в /var/ossec/rules/syslog_rules.xml

<rule id="1002" level="2">
   <match>$BAD_WORDS</match>
   <options>alert_by_email</options>
   <description>Unknown problem somewhere in the system.</description>
</rule>

Откройте + syslog ruleset.xml для редактирования.

nano /var/ossec/rules/syslog_rules.xml

Найдите переменную + BAD_WORDS +, которая определена в верхней части этого файла и содержит несколько ключевых слов. Это выглядит так:

Определение BAD_WORDS в /var/ossec/rules/syslog_rules.xml

<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>

Ниже определения + BAD_WORDS + скопируйте и вставьте эту новую переменную, + IGNORED_WORD +. Переменная содержит только одно ключевое слово.

<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>

Затем мы будем использовать новую переменную + IGNORED_WORD + в настроенной версии правила 1002, которую мы назовем правилом 100031. Полное правило показано ниже. Скопируйте и вставьте его в конец файла, перед строкой с тегом группы.

</group>

Сохраните и закройте файл. С измененным и настроенным правилом перезапустите OSSEC.

/var/ossec/bin/ossec-control restart

При этом OSSEC должен прекратить отправку предупреждений о сообщениях об отказе в IPTables.

Заключение

Это все, что нужно для установки и настройки локального OSSEC на сервере Debian 8. Существует множество дополнительных настроек, которые вы можете найти в проектах official документация.

Related