Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
debian:fail2ban [14/09/2023 11:27] – Method | debian:fail2ban [06/12/2024 22:34] (поточний) – [SSH] Method | ||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
====== Fail2Ban ====== | ====== Fail2Ban ====== | ||
+ | Встановимо fail2ban | ||
apt install fail2ban -y | apt install fail2ban -y | ||
- | | + | |
- | | + | Збережемо оригінальні налашування (на всякий випадок) |
- | + | ||
+ | | ||
+ | |||
+ | Додамо виправлення до '/ | ||
<code bash> | <code bash> | ||
+ | cat <<EOF > / | ||
[DEFAULT] | [DEFAULT] | ||
# Destination email for action that send you an email | # Destination email for action that send you an email | ||
Рядок 13: | Рядок 19: | ||
sender | sender | ||
- | # Default action. Will block user and send you an email with whois content and log lines. | + | # Specify chain where jumps would need to be added in ban-actions expecting parameter chain |
- | ## | + | chain = input |
- | action | + | |
# configure nftables | # configure nftables | ||
banaction = nftables-multiport | banaction = nftables-multiport | ||
banaction_allports = nftables-allports | banaction_allports = nftables-allports | ||
- | chain = input | + | |
+ | # Default action. Will block user and send you an email with whois content and log lines. | ||
+ | ## action | ||
+ | action | ||
+ | EOF | ||
</ | </ | ||
+ | |||
+ | Додамо виправлення до / | ||
<code bash> | <code bash> | ||
- | tee / | + | cat <<EOF > / |
[Definition] | [Definition] | ||
allowipv6 = auto | allowipv6 = auto | ||
Рядок 30: | Рядок 41: | ||
EOF | EOF | ||
</ | </ | ||
- | | + | |
+ | systemctl enable fail2ban | ||
fail2ban-client reload | fail2ban-client reload | ||
- | fail2ban-client status | + | fail2ban-client status |
- | systemctl enable fail2ban | + | |
- | + | ||
- | nano / | + | Створюємо каталог для конфігурації fail2ban для файрвола |
+ | mkdir -p / | ||
<code bash> | <code bash> | ||
+ | cat <<EOF > / | ||
# | # | ||
# Use ip as fail2ban doesn' | # Use ip as fail2ban doesn' | ||
- | table ip fail2ban { | + | table inet fail2ban { |
chain input { | chain input { | ||
# Assign a high priority to reject as fast as possible and avoid more complex rule evaluation | # Assign a high priority to reject as fast as possible and avoid more complex rule evaluation | ||
Рядок 49: | Рядок 60: | ||
} | } | ||
} | } | ||
+ | EOF | ||
</ | </ | ||
- | Then add line include "/ | + | Додамо створений файл в оновну конфігурацію файрвола |
+ | echo "include | ||
- | Finally activate your rule in nftables | + | Також підвантажимо його в роботу |
nft -f / | nft -f / | ||
- | <code bash> | + | ===== Налаштування Fail2Ban для запуску/ |
- | </ | + | |
- | + | ||
- | + | ||
- | <code bash> | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | <code bash> | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | ====== Налаштування Fail2Ban для запуску/ | + | |
Ми намагаємося досягти наступного: | Ми намагаємося досягти наступного: | ||
- | |||
* під час завантаження сервер запускає спочатку nftables.service, | * під час завантаження сервер запускає спочатку nftables.service, | ||
* якщо ми запускаємо nftables.service, | * якщо ми запускаємо nftables.service, | ||
Рядок 83: | Рядок 82: | ||
mkdir -p / | mkdir -p / | ||
- | nano / | ||
- | | + | <code bash> |
- | Requires=nftables.service | + | cat <<EOF > / |
- | PartOf=nftables.service | + | [Unit] |
- | + | Requires=nftables.service | |
- | [Install] | + | PartOf=nftables.service |
- | WantedBy=multi-user.target nftables.service | + | |
+ | [Install] | ||
+ | WantedBy=multi-user.target nftables.service | ||
+ | EOF | ||
+ | </ | ||
Оскільки ми змінили розділ [Install], нам потрібно повторно ввімкнути відповідну службу, | Оскільки ми змінили розділ [Install], нам потрібно повторно ввімкнути відповідну службу, | ||
Рядок 99: | Рядок 101: | ||
# systemctl daemon-reload | # systemctl daemon-reload | ||
- | ===== Як саме це працює? | + | ==== Як саме це працює? |
У нашому файлі заміни або повному файлі конфігурації (див. нижче) ми включаємо такі параметри: | У нашому файлі заміни або повному файлі конфігурації (див. нижче) ми включаємо такі параметри: | ||
Рядок 111: | Рядок 113: | ||
WantedBy=multi-user.target nftables.service " | 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 | ||
+ | </ | ||
+ | |||