Я использую Fail2Ban на сервере, и мне интересно, как правильно разблокировать IP.
Я знаю, что могу работать с IPTables напрямую: iptables -D fail2ban-ssh <number>
Но разве нельзя сделать это с помощью fail2ban-client
?
В руководствах говорится примерно так: fail2ban-client get ssh actionunban <IP>
. Но это не работает.
Кроме того, я не хочу /etc/init.d/fail2ban restart
так как это потеряло бы все запреты в списке.
С Fail2Ban до версии 0.8.8:
fail2ban-client get YOURJAILNAMEHERE actionunban IPADDRESSHERE
С Fail2Ban v0.8.8 и новее:
fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
Сложнее всего найти подходящую тюрьму:
iptables -L -n
найти название правила ...fail2ban-client status
чтобы получить настоящие названия тюрем. Название правила и название тюрьмы могут не совпадать, но должно быть ясно, какое из них связано с каким.Начиная с v0.8.8 есть unbanip
вариант (actionunban
не для этой цели) Это может быть вызвано set
команда, если вы посмотрите на список опций, вы увидите, что синтаксис. Так будет (наизусть, проверьте пожалуйста):
fail2ban-client set ssh-iptables unbanip IPADDRESSHERE
более общий:
fail2ban-client set JAILNAMEHERE unbanip IPADDRESSHERE
работает для меня
Пример SSH в интерактивном режиме.
введите bash:
fail2ban-client -i
затем в интерактивном режиме введите статус тюрьмы:
status sshd
ты получишь:
Status for the jail: ssh
|- Filter
| |- Currently failed: 0
| |- Total failed: 6
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 2
`- Banned IP list: 203.113.167.162
затем введите в интерактивном режиме fail2ban:
set sshd unbanip 203.113.167.162
ты получишь:
203.113.167.162
это значит больше не 203.113.167.162
в запретном списке.
Ответ Укода неверен:
Вызов fail2ban-client
без параметров, и вы увидите список возможных команд:
get JAIL actionunban ACT
Это получает команду unban для действия ACT для JAIL.
Посмотрите на параметр действия определенной вами тюрьмы, у вас, вероятно, есть действие iptables и, возможно, что-то вроде sendmail, whois или что-то еще. поэтому, если ваше действие было iptables, оно будет выглядеть так:
fail2ban-client get JAIL actionunban iptables
и ответ будет:
iptables -D fail2ban-NAME -s IP -j DROP
Он только покажет вам, что вам нужно написать для разблокировки. Сама по себе команда разблокировки не существует.
Если 192.168.2.1 забанен
sudo iptables -L
Проверьте, в какой цепочке он запрещен, например
Цепочка fail2ban-sasl (1 ссылка)
DROP all - 192.168.2.1 где угодно
Затем:
# to view the proper command for un-banning
sudo fail2ban-client get sasl actionunban
# actual command
iptables -D fail2ban-sasl -s 192.168.2.1 -j DROP
Сначала вам нужно узнать название тюрьмы. Вы можете получить список (в большинстве случаев это будет только ssh jail):
fail2ban-client status
Получив имя тюрьмы, вы можете проверить, какие IP-адреса игнорируются.
fail2ban-client get ssh ignoreip
Если ваш IP-адрес находится в списке игнорирования, вы можете удалить его:
fail2ban-client set ssh delignoreip your_ip_address
vi /etc/hosts.deny
Удалите запись вашего хоста:
fail2ban-client reload
Используя fail2ban v.0.8.6:
$ sudo fail2ban-client status # to reveal your JAIL name (mine is ssh)
$ sudo fail2ban-client set ssh delignoreip your_ip_address
$ sudo nano /etc/hosts.deny # delete your ip address
$ sudo fail2ban-client reload
к сожалению, с версией 0.8.2 fail2ban-client команда:
fail2ban-client get jail actionunban ipaddress
не запускается. Чтобы решить проблему, лучше всего обновить fail2ban до последней версии и использовать новую опцию:
unbanip
fail2ban-client set sshd unbanip ip_here
должно сработать.
Если IP-адрес находится в нескольких тюрьмах, это становится проблемой.
однострочный, чтобы удалить 192.168.1.2 из всех тюрем:
for jail in $(fail2ban-client status | grep 'Jail list:' | sed 's/.*Jail list://' | sed 's/,//g'); do fail2ban-client set $jail unbanip 192.168.1.2; done
сценарий, чтобы сделать то же самое https://gist.github.com/yolabingo/c810db6fe7f8bfcb9eb4f6ffc531e474
Вы можете использовать мой простой скрипт: D
echo "Display all service"
#Edit and Add/Del your service
sudo fail2ban-client status phpmyadmin-syslog
sudo fail2ban-client status apache-fakegooglebot
sudo fail2ban-client status apache-noscript
sudo fail2ban-client status apache-overflows
sudo fail2ban-client status apache-auth
sudo fail2ban-client status apache-badbots
sudo fail2ban-client status mysqld-auth
sudo fail2ban-client status proftpd
sudo fail2ban-client status sshd
echo "Choose service to unban"
read service
echo "Status of Service"
sudo fail2ban-client status $service
echo "Enter ip to be unban"
read ip
sudo fail2ban-client set $service unbanip $ip
echo "Status of service after unban"
sudo fail2ban-client status $service
Сохраните и введите sh yourfilename.sh.
Необязательно, если вы хотите получить результат по почте, вы можете использовать это :)
#Empty file log
echo "" > /home/pi/Scripts/log/ban.log
#Add Date to log
date >> /home/pi/Scripts/log/ban.log
#Add status service on log
sudo fail2ban-client status phpmyadmin-syslog >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status apache-fakegooglebot >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status apache-noscript >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status apache-overflows >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status apache-auth >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status apache-badbots >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status mysqld-auth >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status proftpd >> /home/pi/Scripts/log/ban.log
sudo fail2ban-client status sshd >> /home/pi/Scripts/log/ban.log
#Send mail
mutt -b "yourname@gmail.com" -s "Sujet: Log Fail2Ban" < /home/pi/Scripts/log/ban.log ```
Начиная с версии 0.8.8 это может быть удобный сценарий для вас - его можно легко настроить, чтобы разблокировать из всех тюрем.
Я просто называю это "getf2bstatus.sh
"
Пример использования ./getf2bstatus.sh 1.2.3.4
#!/bin/bash
echo "Jails where $1 is locked up:"
JAILS=`fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'`
for JAIL in $JAILS
do
currentjail=`fail2ban-client status $JAIL | grep -B 8 $1 | grep Status | awk '{printf $5}'`
if [[ ${#currentjail} -gt a ]] ; then
echo $currentjail
fi
done
echo
echo "To unban $1 use the following commands:"
for JAIL in $JAILS
do
currentjail=`fail2ban-client status $JAIL | grep -B 8 $1 | grep Status | awk '{printf $5}'`
if [[ ${#currentjail} -gt a ]] ; then
echo "fail2ban-client set $currentjail unbanip $1"
fi
done
Вывод?
Jails where 1.2.3.4 is locked up:
ssh
To unban 1.2.3.4 use the following commands:
fail2ban-client set ssh unbanip 1.2.3.4
Если вы используете версию v0.10.2:
sudo fail2ban-client разблокировать YOUR_IP_ADDRESS
Это из справки:
unban <IP> ... <IP> unbans <IP> (in all jails and database)
Подтверждено, что работает в моем случае, когда меня, скорее всего, забанили из-за того, что ssh-клиент неоднократно входил в систему с неправильным паролем.