Регистрация попыток подключения открытого ключа SSH с помощью nftables

Регистрация попыток подключения открытого ключа SSH с помощью nftables

Вопрос

Как лучше всего настроить протоколирование попыток SSH с аутентификацией по открытому ключу SSH и nftables? Кроме того, как лучше всего это проверить?

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

Описание

Я настроил довольно пустую новую систему для тестирования и изучения сетевых концепций. Система работает под управлением Arch Linux. nftables запущен и работает, и я могу войти в эту систему с аутентификацией по открытому ключу SSH. Тестовая система также использует sshd.socket, если это имеет значение.

Однако я заметил, что одно из правил nftable, похоже, не завершает сеанс, как ожидалось:

log prefix "REJECTED" reject with icmpx type port-unreachable

Это правило находится в конце входной цепочки в моем nftables.conf, поэтому весь отклоненный входящий трафик должен попадать сюда (я думаю).

Возможно, я неправильно это тестирую, но когда я запускаю, journalctl -k | grep "REJECTED"я не вижу никаких записей после попытки входа через другую машину. Однако я вижу запись, когда другая машина с правильным ключом пытается войти более двух раз в минуту.

Также отмечу, что я могу видеть успешные входы по SSH с помощью этого правила nftable (размещенного над правилом отклонения выше):

tcp dport ssh limit rate 2/minute log prefix "SSH connection" accept

Запуск journalctl -k | grep "SSH"показывает эти соединения, как и ожидалось.

решение1

Вы не можете определить (и зарегистрировать) на сетевом уровне, на котором TCP-соединение не удалось войти, и каким методом. Демон SSH определяет, когда вход не удается, и регистрирует это, после чего он либо разрешает повторную попытку, либо закрывает соединение (обычно после определенного количества неудачных попыток).

Неудачные попытки входа сохраняются в auth log in /var/log/auth.log. Там вы можете найти записи журнала как для неудачных, так и для успешных входов.

На сетевом уровне вы можете регистрировать новые соединения с демоном SSH. Следующий пример взят непосредственно из nftablesвики-документация:

tcp dport 22 ct state new log prefix \"New SSH connection: \" accept

Связанный контент