sshguard

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Sshguard and the translation is 62% complete.
Outdated translations are marked like this.
Resources

sshguard — это система предотвращения вторжений, которая разбирает логи сервера, определяет подозрительную активность и затем использует системный межсетевой экран, чтобы блокировать IP-адреса злонамеренных подключений. sshguard написан на C, поэтому он не нагружает систему.

Как это работает

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

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

Установка

Emerge

Установите app-admin/sshguard:

root #emerge --ask app-admin/sshguard

Additional software

Depending on the init system and the desired firewall backend to be used by sshguard, additional software may be required to be emerged in order for sshguard to block malicious actors.

More information on various supported backends can be found by reading the setup manpage:

root #man 7 sshguard-setup

iptables

Также удостоверьтесь, что пакет net-firewall/iptables установлен и используется в качестве системного межсетевого экрана. Во время написания данной статьи, sshguard еще не поддерживал net-firewall/nftables.

root #emerge --ask net-firewall/iptables

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

nftables

When nftables are being used as the system firewall:

root #emerge --ask net-firewall/nftables

Конфигурация

iptables backend

Подготовка межсетевого экрана

Когда sshguard блокирует какого-либо злонамеренного пользователя (блокируя его IP-адрес), он будет использовать цепочку sshguard.

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

root #iptables -N sshguard
root #iptables -A INPUT -j sshguard

Then verify that the appropriate path to the iptables backend library is set in /etc/sshguard.conf:

ФАЙЛ /etc/sshguard.confSet iptables library for BACKEND
# Full path to backend executable (required, no default)
BACKEND="/usr/libexec/sshg-fw-iptables"

Просмотр лог-файлов

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

В Gentoo параметры лучше всего определять в файле /etc/sshguard.conf:

ФАЙЛ /etc/conf.d/sshguardНастраиваем sshguard на чтение /var/log/messages
PARDONTIME="3600" # Блокировать на 1 час (3600 секунд)
WATCHTIME="360"   # Отслеживать IP-адрес в течение 5 минут (360 секунд)
THRESHOLD="10"    # Сколько нужно неудачных попыток для срабатывания блокировки
  
LOGFILES="-l /var/log/messages"                      # Следить за этим файлом...
LOGFILES="${LOGFILES} -l /var/log/auth.log"          # И за этим тоже
  
SSHGUARD_OPTS="-p ${PARDONTIME} -s ${WATCHTIME} -a ${THRESHOLD} ${LOGFILES}"

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

Сервисы

OpenRC

Чтобы sshguard запускался при старте системы, добавьте его в уровень запуска default, после чего запустите его:

root #rc-update add sshguard default
root #rc-service sshguard start

systemd

Use systemd's conventional way to enable it, and then start it:

root #systemctl enable sshguard
root #systemctl restart sshguard

Занесение хостов в черный список (blacklist)

Когда используется черный список, после серии неудачных попыток IP-адрес атакующего будет заблокирован перманентно. Черный список подгружается после каждой загрузки, а также будет расширятся новыми записями в процессе работы. sshguard добавляет туда новые адреса, после превышения порога "злоупотребления".

Адреса из черного списка никогда не выходят из него (не разрешаются) снова.

Чтобы задействовать черный список, создайте соответствующий каталог и файл:

root #mkdir -p /var/lib/sshguard
root #touch /var/lib/sshguard/blacklist.db

While defining a blacklist it is important to exclude trusted IP networks and hosts in a whitelist.

To enable whitelisting, create an appropriate directory and file:

root #mkdir -p /etc/sshguard
root #touch /etc/sshguard/whitelist

The whitelist has to include the loopback interface, and should have at least 1 IP trusted network f.e. 192.0.2.0/24.

ФАЙЛ /etc/sshguard/whitelistДобавление в белый список доверенных сетей
127.0.0.0/8
::1/128
192.0.2.0/24
Заметка
The 192.0.2.0/24 entry has to be adjusted to fit the own needs.

Добавьте файл blacklist в конфигурацию и измените переменную SSHGUARD_OPTS:

ФАЙЛ /etc/conf.d/sshguardНастраиваем sshguard для использования blacklist
PARDONTIME="3600" # Блокировать на 1 час (3600 секунд)
WATCHTIME="360"   # Отслеживать IP-адрес в течение 5 минут (360 секунд)
THRESHOLD="10"    # Сколько нужно неудачных попыток для срабатывания блокировки

BLACKLIST="/var/db/sshguard/blacklist.db"            # Заблокированные адреса попадают в этот файл  
LOGFILES="-l /var/log/messages"                      # Следить за этим файлом...
LOGFILES="${LOGFILES} -l /var/log/auth.log"          # И за этим тоже
  
SSHGUARD_OPTS="-b 50:${BLACKLIST} -p ${PARDONTIME} -s ${WATCHTIME} -a ${THRESHOLD} ${LOGFILES}"

Перезапустите sshguard, чтобы изменения вступили в силу:

root #/etc/init.d/sshguard restart

Устранение проблем

File '/var/log/auth.log' vanished while adding!

При запуске, sshguard показывает следующую ошибку:

КОД Сообщение об ошибке при попытке добавить монитор для /var/log/auth.log
Sep 23 03:39:11 foo.bar.com sshguard[64933]: File '/var/log/auth.log' vanished while adding!

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

На системах с OpenRC и syslog-ng, следующего дополнения к syslog-ng.conf может хватить:

ФАЙЛ /etc/syslog-ng/syslog-ng.confсоздание файла auth.log
log { source(src); destination(messages); };
log { source(src); destination(console_all); };
 
destination authlog {file("/var/log/auth.log"); };
filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
log { source(src);  filter(f_authpriv);  destination(authlog);  };

Перезагрузите конфигурацию, чтобы изменения вступили в силу:

root #rc-service syslog-ng reload

Смотрите также

Внешние ресурсы

Документация по sshguard дает всю необходимую информацию для дальнейшей настройки приложения.