sshguard

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Sshguard and the translation is 75% complete.

Outdated translations are marked like this.
Other languages:
English • ‎español • ‎italiano • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
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/sshguard.conf:

Файл /etc/sshguard.confConfiguring sshguard to read /var/log/messages and /var/log/auth.log
# Full path to backend executable (required, no default)
BACKEND="/usr/libexec/sshg-fw-iptables" 

# Space-separated list of log files to monitor. (optional, no default)
FILES="/var/log/messages /var/log/auth.log" 

# How many problematic attempts trigger a block
THRESHOLD=10
# Blocks last at least 24 hours (60480 seconds)
BLOCKTIME=60480
# Track IP addresses for 24 hours (60480 seconds)
DETECTION_TIME=60480

# IPv6 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 128)
IPV6_SUBNET=64
# IPv4 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 32)
IPV4_SUBNET=24

# 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)

With the blacklisting option after a number of abuses the IP address of the attacker or a IP subnet will be blocked permanently. The blacklist will be loaded at each startup and extended with new entries during operation. sshguard inserts a new address after it exceeded a threshold of abuses.

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

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

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.

Add the BLACKLIST_FILE and WHITELIST_FILE file to the configuration:

Файл /etc/conf.d/sshguardConfiguring sshguard to blacklist abusers
BACKEND="/usr/libexec/sshg-fw-iptables"
FILES="/var/log/auth.log"

THRESHOLD=10
BLOCK_TIME=43200
DETECTION_TIME=604800

IPV4_SUBNET=24
IPV6_SUBNET=64

PID_FILE=/run/sshguard.pid

# 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 дает всю необходимую информацию для дальнейшей настройки приложения.