Даже если у тебя стоит fail2ban - иногда проще и быстрее решить задачу силами самого nftables. Минимум зависимостей, максимум контроля.
Пример: бан по 5 неудачным попыткам за 1 минуту
table inet sshguard {
set ssh_blacklist {
type ipv4_addr
flags timeout
timeout 1h
}
map ssh_counter {
type ipv4_addr : counter
}
chain input {
type filter hook input priority 0;
# Разрешаем локалку и уже забаненных
ip saddr @ssh_blacklist drop
tcp dport 22 ct state new add @ssh_counter { ip saddr } counter
tcp dport 22 ct state new ip saddr @ssh_counter { ip saddr } >= 5 add @ssh_blacklist { ip saddr } drop
# Разрешаем SSH по умолчанию (после фильтра)
tcp dport 22 accept
}
}
Как это работает
-
ssh_counter считает подключения по IP.- Если за минуту ≥5 попыток — IP летит в
ssh_blacklist на 1 час.- Всё внутри одного ruleset’а, без демонов.
👉 Подходит для серверов, где хочется минимализма и нет нужды в сложных паттернах от fail2ban.
👉 Но осторожно: банится любой IP, даже если это сканер мониторинга или кривой клиент.
Сохрани, пригодится 😉
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin