Видаліть усі заборони fail2ban в Ubuntu Linux


16

Як я можу видалити всі заборони fail2ban в Ubuntu? Я спробував усе, але не розумію.

Я просто хочу видалити всі заборони - але я не знаю жодних IP-адрес.


1
Заборони зазвичай виконуються на IP-адресах через брандмауер, тож слід переглянути правила брандмауера.
Джулі Пелтьє,

так, я знаю. але я хочу зняти всі заборони, не повідомляючи про IP-адресу
Патрік

Відповіді:


26

Оновлена ​​відповідь

З версії 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 нижче щодо міркувань відліку.


Дякую @roaima! Відповідь я оновлю відповідно.
ph0t0nix

1
@roaima Так, це (принаймні, в zsh і bash): echo {5..1}призведе до 5 4 3 2 1.
ph0t0nix

Ти врятував мене. Дуже дякую. Будь ласка, додайте повну команду, тому що я повинен був зрозуміти, що мені потрібен fail2ban-client у відповідь на вашу команду. (Тому що я
sebastian.roibu

Стара відповідь все ще кеширована на DuckDuckGo, прийшла сказати те саме, що і @roaima - snipboard.io/0oZkXy.jpg
Арі

15

Найкращий спосіб скасувати всі IP-адреси - це встановити тривалість часу на 1 секунду, тоді весь IP буде звільнений відразу.

fail2ban-client set JailName bantime 1

Після цього ви можете встановити потрібний час заборони назад.

Краще дозволити fail2ban зробити для вас unban. Не вручну редагуйте iptables самостійно.


1
Тут є єдиною правильною відповіддю. Fail2ban підтримує власну базу даних заборон, яку необхідно очистити незалежно. Кожна відповідь про видалення правил iptables ігнорує, що в момент запуску fail2ban резервна копія знову додасть правила, які ви тільки що видалили, до iptables. Крім того, не кожна конфігурація fail2ban використовує iptables для реалізації заборон.
Кліфф Армстронг

3
знайти усі тюрми зfail2ban-client status
Фліон

Я щойно видав цю команду і спостерігаю, як кількість IP-адрес у в'язниці зменшиться до нуля, коли fail2ban обробляє в'язницю. Це відбувається не дуже швидко, але все гаразд, у в'язниці було понад п’ять тисяч. Гарна відповідь!
Ерік М

5

Останній fail2ban-client(0,10) має unban -allкоманду. Тюрма також можна індивідуально "перезапустити", ефективно очистивши заборони.

Якщо у вас є старіша версія, цей фокус може працювати для автоматичних тимчасових заборон: видаліть в'язницю, яка містить заборону, після чого перезапустіть fail2ban, щоб (тепер пуста) в'язниця була відтворена.

$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban

1
-всi чи –всi? Або - все?
Wildcard

3

Збережіть iptable config у файл

$ iptables-save > iptables.conf

Відредагуйте його за допомогою будь-якого редактора, який вам подобається, ніж завантажуйте конфігурацію назад до iptables

$ iptables-restore < iptables.conf

Не забудьте зберегти конфігурацію всередині iptables, щоб вона була вибрана при перезавантаженні

$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Це один із способів зробити це. Дякую.
User9102d82

3

1. Якщо зупинити послугу, ви очистите всі правила, додані fail2ban

service fail2ban stop

2. якщо у вас немає жодних інших правил iptables, ви можете їх пропустити

iptables -F

будьте обережні: це видалить будь-які інші правила у ваших iptables.


3

ось простий 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 нижче 0.10. Ви можете піти далі, створивши псевдонім у .bashrc, як fail2ban-purge з одним параметром, щоб очистити цілу тюрму. Просто замініть речитативне слово вище на $ 1 і використовуйте псевдонім як fail2ban-purge <JAIL_NAME>.
ADDISON74

2

Через те, як fail2banпрацює, є лише два можливі рішення:

  • Створіть сценарій конфігурації брандмауера, який включає в себе fail2banтюрми та перезапустіть брандмауер.
  • Видаліть правила брандмауера, що блокує IP-адреси, які ви хочете скасувати.

2

Це сценарій, який я використовую для заборони всіх 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.