Вопрос
Как лучше всего настроить протоколирование попыток 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