Як я можу видалити всі заборони fail2ban в Ubuntu? Я спробував усе, але не розумію.
Я просто хочу видалити всі заборони - але я не знаю жодних IP-адрес.
Як я можу видалити всі заборони fail2ban в Ubuntu? Я спробував усе, але не розумію.
Я просто хочу видалити всі заборони - але я не знаю жодних IP-адрес.
Відповіді:
З версії 0.10.0 fail2ban-client
є unban
команда, яку можна використовувати двома способами:
unban --all unbans all IP addresses (in all
jails and database)
unban <IP> ... <IP> unbans <IP> (in all jails and
database)
Крім того, restart <JAIL>
, reload <JAIL>
і reload
команди тепер мають --unban
опцію.
fail2ban використовує iptables
для блокування трафіку. Якщо ви хочете побачити IP-адреси, які наразі заблоковані, введіть
iptables -L -n
і шукайте різні названі ланцюги fail2ban-something
, де something
вказується на в'язницю fail2ban (наприклад, Chain f2b-sshd
відноситься до в'язниці sshd
). Якщо ви хочете видалити блок лише для однієї IP-адреси <IP>
для даної в'язниці <JAIL>
, fail2ban пропонує власного клієнта:
fail2ban-client set <JAIL> unbanip <IP>
Крім того, ви можете використовувати номери рядків. Спочатку перерахуйте iptables
правила з номерами рядків:
iptables -L -n --line-numbers
Далі ви можете використовувати
iptables -D fail2ban-somejail <linenumber>
щоб видалити з таблиці один рядок. Наскільки я знаю, немає вибору діапазону номерів рядків, тому я думаю, вам доведеться загортати цю команду в циклі for:
for lin in {200..1}; do
iptables -D fail2ban-somejail $lin
done
Тут я зробив число 200. Перевірте свій власний вихід команди --line-numbers
та зауважте, що останній рядок (з RETURN
) повинен залишатися. Дивіться коментар @ roaima нижче щодо міркувань відліку.
echo {5..1}
призведе до 5 4 3 2 1
.
Найкращий спосіб скасувати всі IP-адреси - це встановити тривалість часу на 1 секунду, тоді весь IP буде звільнений відразу.
fail2ban-client set JailName bantime 1
Після цього ви можете встановити потрібний час заборони назад.
Краще дозволити fail2ban зробити для вас unban. Не вручну редагуйте iptables самостійно.
fail2ban-client status
Останній fail2ban-client
(0,10) має unban -all
команду. Тюрма також можна індивідуально "перезапустити", ефективно очистивши заборони.
Якщо у вас є старіша версія, цей фокус може працювати для автоматичних тимчасових заборон: видаліть в'язницю, яка містить заборону, після чого перезапустіть fail2ban, щоб (тепер пуста) в'язниця була відтворена.
$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban
Збережіть iptable config у файл
$ iptables-save > iptables.conf
Відредагуйте його за допомогою будь-якого редактора, який вам подобається, ніж завантажуйте конфігурацію назад до iptables
$ iptables-restore < iptables.conf
Не забудьте зберегти конфігурацію всередині iptables, щоб вона була вибрана при перезавантаженні
$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
ось простий oneliner, щоб розблокувати всю тюрму fail2ban належним чином:
iptables -L f2b-recidive -n | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 0.0.0.0 | xargs -n 1 fail2ban-client set recidive unbanip
ПРИМІТКА: Команда iptables приймає префікс "f2b-" перед іменем в'язниці, тоді як "fail2ban-client" справжнє ім'я в'язниці
Через те, як fail2ban
працює, є лише два можливі рішення:
fail2ban
тюрми та перезапустіть брандмауер.Це сценарій, який я використовую для заборони всіх IP-адрес у в'язниці ssh (просто замініть sshd-скрипт на ім'я в'язниці, яке вам потрібно ... наприклад, mysqld-auth)
#!/bin/bash
j=$(iptables -L f2b-sshd | grep -c 'REJECT')
for ((i=1;i<=j;i++))
do
fail2ban-client set sshd unbanip $(fail2ban-client status sshd | grep 'Banned IP list:' | cut -c23-)
done