Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Наступна ревізія | Попередня ревізія | ||
debian:fail2ban [05/03/2022 00:17] – створено Method | debian:fail2ban [06/12/2024 22:34] (поточний) – [SSH] Method | ||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
====== Fail2Ban ====== | ====== Fail2Ban ====== | ||
+ | Встановимо fail2ban | ||
apt install fail2ban -y | apt install fail2ban -y | ||
- | sudo cp / | + | |
- | sudo nano / | + | Збережемо оригінальні налашування (на всякий випадок) |
- | | + | |
- | | + | |
+ | |||
+ | Додамо виправлення до '/ | ||
+ | |||
+ | <code bash> | ||
+ | cat <<EOF > / | ||
+ | [DEFAULT] | ||
+ | # Destination email for action that send you an email | ||
+ | destemail = fail2ban@mydomain.example | ||
+ | |||
+ | # Sender email. Warning: not all actions take this into account. Make sure to test if you rely on this | ||
+ | sender | ||
+ | |||
+ | # Specify chain where jumps would need to be added in ban-actions expecting parameter chain | ||
+ | chain = input | ||
+ | |||
+ | # configure nftables | ||
+ | banaction = nftables-multiport | ||
+ | banaction_allports = nftables-allports | ||
+ | |||
+ | # Default action. Will block user and send you an email with whois content and log lines. | ||
+ | ## action | ||
+ | action | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | Додамо виправлення до / | ||
+ | |||
+ | <code bash> | ||
+ | cat <<EOF > / | ||
+ | [Definition] | ||
+ | allowipv6 = auto | ||
+ | #allowipv6 = yes | ||
+ | EOF | ||
+ | </ | ||
systemctl enable fail2ban | systemctl enable fail2ban | ||
+ | fail2ban-client reload | ||
+ | fail2ban-client status | ||
+ | |||
+ | Створюємо каталог для конфігурації fail2ban для файрвола | ||
+ | mkdir -p / | ||
+ | |||
+ | <code bash> | ||
+ | cat <<EOF > / | ||
+ | # | ||
+ | |||
+ | # Use ip as fail2ban doesn' | ||
+ | table inet fail2ban { | ||
+ | chain input { | ||
+ | # Assign a high priority to reject as fast as possible and avoid more complex rule evaluation | ||
+ | type filter hook input priority 100; | ||
+ | } | ||
+ | } | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | Додамо створений файл в оновну конфігурацію файрвола | ||
+ | echo " | ||
+ | |||
+ | Також підвантажимо його в роботу | ||
+ | nft -f / | ||
+ | |||
+ | ===== Налаштування Fail2Ban для запуску/ | ||
+ | |||
+ | Ми намагаємося досягти наступного: | ||
+ | * під час завантаження сервер запускає спочатку nftables.service, | ||
+ | * якщо ми запускаємо nftables.service, | ||
+ | * якщо ми зупинимо nftables.service, | ||
+ | * якщо ми перезапустимо nftables.service, | ||
+ | * якщо ми запускаємо fail2ban.service, | ||
+ | * зупинка та перезапуск дій на fail2ban.service не повинні впливати на nftables.service. | ||
+ | |||
+ | Ми можемо зробити все це, створивши файл перевизначення для fail2ban, вказавши йому, що він залежить від nftables, а потім nftables хоче, щоб він запустився: | ||
+ | |||
+ | mkdir -p / | ||
+ | |||
+ | <code bash> | ||
+ | cat <<EOF > / | ||
+ | [Unit] | ||
+ | Requires=nftables.service | ||
+ | PartOf=nftables.service | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target nftables.service | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | Оскільки ми змінили розділ [Install], нам потрібно повторно ввімкнути відповідну службу, | ||
+ | # systemctl enable nftables.service | ||
+ | Created symlink / | ||
+ | # systemctl enable fail2ban.service | ||
+ | Created symlink / | ||
+ | # systemctl daemon-reload | ||
+ | |||
+ | ==== Як саме це працює? | ||
+ | |||
+ | У нашому файлі заміни або повному файлі конфігурації (див. нижче) ми включаємо такі параметри: | ||
+ | |||
+ | <code bash> | ||
+ | [Unit] | ||
+ | Requires=nftables.service " | ||
+ | PartOf=nftables.service " | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target nftables.service " | ||
+ | </ | ||
+ | Як бачите, | ||
+ | |||
+ | ===== Блокувальники ===== | ||
+ | |||
+ | Після додавання або видалення блокувальниуів необхідно перезавантажити fail2ban | ||
+ | |||
+ | fail2ban-client reload | ||
+ | |||
+ | Також можна переглянути статус fail2ban | ||
+ | |||
+ | fail2ban-client status | ||
+ | |||
+ | ==== Рецедив ==== | ||
+ | |||
+ | Повторно блокує по всіх портах іп адреси які раніше вже блокувались по іншим блокувальникам | ||
+ | |||
+ | <code bash> | ||
+ | cat <<EOF > / | ||
+ | # Jail for more extended banning of persistent abusers | ||
+ | # !!! WARNINGS !!! | ||
+ | # 1. Make sure that your loglevel specified in fail2ban.conf/ | ||
+ | # is not at DEBUG level -- which might then cause fail2ban to fall into | ||
+ | # an infinite loop constantly feeding itself with non-informative lines | ||
+ | # 2. If you increase bantime, you must increase value of dbpurgeage | ||
+ | # to maintain entries for failed logins for sufficient amount of time. | ||
+ | # The default is defined in fail2ban.conf and you can override it in fail2ban.local | ||
+ | # | ||
+ | # Manages the fail2ban history for hosts repeatedly banned by Fail2Ban and bans them | ||
+ | # according to the settings defined | ||
+ | # | ||
+ | |||
+ | [recidive] | ||
+ | enabled | ||
+ | logpath | ||
+ | banaction = nftables-allports | ||
+ | backend | ||
+ | bantime | ||
+ | findtime | ||
+ | maxretry | ||
+ | protocol | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | ==== SSH ==== | ||
+ | |||
+ | Вмикаємо блокувальник ssh. Оскільки всі значення стандартні то файл простий | ||
+ | |||
+ | <code bash> | ||
+ | cat <<EOF > / | ||
+ | [sshd] | ||
+ | enabled | ||
+ | backend | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | |||