This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Sshguard

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page Sshguard and the translation is 78% complete.
Resources

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

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

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

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

Установка

Emerge

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

root #emerge --ask app-admin/sshguard

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

root #emerge --ask net-firewall/iptables

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

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

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

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

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

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

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

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

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

Файл /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}"
  1. Space-separated list of log files to monitor. (optional, no default)

FILES="/var/log/messages /var/log/auth.log"

  1. How many problematic attempts trigger a block

THRESHOLD=10

  1. Blocks last at least 24 hours (60480 seconds)

BLOCKTIME=60480

  1. Track IP addresses for 24 hours (60480 seconds)

DETECTION_TIME=60480

  1. IPv6 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 128)

IPV6_SUBNET=64

  1. IPv4 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 32)

IPV4_SUBNET=24

  1. Full path to PID file (optional, no default)

PID_FILE=/run/sshguard.pid }}

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

Сервисы

OpenRC

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

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

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

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

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

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

root #mkdir -p /var/db/sshguard
root #touch /var/db/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/whitelistWhitelisting trusted networks
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}"

THRESHOLD=10 BLOCK_TIME=43200 DETECTION_TIME=604800

IPV4_SUBNET=24 IPV6_SUBNET=64

PID_FILE=/run/sshguard.pid

  1. Add following lines

BLACKLIST_FILE=10:/var/lib/sshguard/blacklist.db WHITELIST_FILE=/etc/sshguard/whitelist }}

Перезапустите 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

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

  • Iptables, информация по установке и настройке iptables в Gentoo

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

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