Когда я запускаю эту команду fail2ban-client status sshd
Получил вот что:
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 81
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 8
`- Banned IP list: 218.65.30.61 116.31.116.7
Он показывает только два IP-адреса в списке запрещенных IP-адресов вместо 8, как говорит Total Banned.
Пока я делаю tail -f /var/log/auth.log
Получил вот что:
Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61 user=root
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:08:44 DBSERVER sshd[29165]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61 user=root
Mar 29 11:08:46 DBSERVER sshd[29165]: Failed password for root from 218.65.30.61 port 11857 ssh2
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:01 DBSERVER CRON[29226]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:10:02 DBSERVER CRON[29226]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:18 DBSERVER sshd[29238]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185 user=root
Mar 29 11:10:20 DBSERVER sshd[29238]: Failed password for root from 113.122.43.185 port 46017 ssh2
Mar 29 11:10:33 DBSERVER sshd[29238]: message repeated 5 times: [ Failed password for root from 113.122.43.185 port 46017 ssh2]
Mar 29 11:10:33 DBSERVER sshd[29238]: error: maximum authentication attempts exceeded for root from 113.122.43.185 port 46017 ssh2 [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185 user=root
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:11:36 DBSERVER sshd[29245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7 user=root
Mar 29 11:11:38 DBSERVER sshd[29245]: Failed password for root from 116.31.116.7 port 24892 ssh2
Mar 29 11:11:43 DBSERVER sshd[29245]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 24892 ssh2]
Mar 29 11:11:43 DBSERVER sshd[29245]: Received disconnect from 116.31.116.7 port 24892:11: [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: Disconnected from 116.31.116.7 port 24892 [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7 user=root
Mar 29 11:12:39 DBSERVER sshd[29247]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7 user=root
Mar 29 11:12:41 DBSERVER sshd[29247]: Failed password for root from 116.31.116.7 port 26739 ssh2
Mar 29 11:12:45 DBSERVER sshd[29247]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 26739 ssh2]
Mar 29 11:12:45 DBSERVER sshd[29247]: Received disconnect from 116.31.116.7 port 26739:11: [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: Disconnected from 116.31.116.7 port 26739 [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7 user=root
Mar 29 11:13:41 DBSERVER sshd[29249]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7 user=root
Mar 29 11:13:43 DBSERVER sshd[29249]: Failed password for root from 116.31.116.7 port 27040 ssh2
забанил IP все еще пытаюсь.
Однако когда я проверяю sudo iptables -L INPUT -v -n
Получил вот что:
Chain INPUT (policy ACCEPT 228 packets, 18000 bytes)
pkts bytes target prot opt in out source destination
6050 435K f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Что я здесь делаю не так?
Как я могу показать весь список заблокированных IP-адресов?
Заранее спасибо.
Имейте в виду, что запрет fail2ban для IP-адресов носит временный характер.
Лучший способ просмотреть полный список заблокированных IP-адресов - это проверить файл журнала:
sudo zgrep 'Ban:' /var/log/fail2ban.log*
Следующая команда также может предоставить вам чистый список правил ввода:
sudo iptables -L INPUT -v -n | less
Похожий на NA AE выше с квааВключены комментарии, здесь перечислены все IP-адреса:
sudo zgrep 'Ban' /var/log/fail2ban.log*
но в этом выводе так много строк. Это подсчитывает строки всех зарегистрированных заблокированных (и, вероятно, небанированных) IP-адресов:
sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l
Вывод приведенной выше команды (со счетчиком строк) должен соответствовать счетчику Total Banned в выводе состояния fail2ban:
fail2ban-client status sshd
протестирован в Ubuntu 18.04.1 LTS.
Мой вывод из строки 'wc -l':
7244
И из статуса fail2ban проверяется тот же номер 7244:
Status for the jail: sshd
|- Filter
| |- Currently failed: 7
| |- Total failed: 49457
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 9
|- Total banned: 7244
`- Banned IP list: [...]
Чтобы просмотреть полную линейку iptables:
sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'
Чтобы просмотреть только IP-адрес:
sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0" {print $4}'
Вы можете изменить "REJECT" на "DROP", в зависимости от вашего случая.
Просто к вашему сведению:
Надеюсь, это поможет.
Если вы хотите увидеть список заблокированных IP-адресов с указанием их тайм-аута (истекает таймаут, они удаляются из заблокированного пула), вы можете использовать:
ipset list
Это покажет, что в настоящее время заблокировано (REJECT) в части цепочки fail2ban-ssh iptables.
sudo iptables -L fail2ban-ssh -v -n
Чтобы добавить более общий ответ:
Обратите внимание, что iptables может быть неправильным ответом и может вообще не дать вам релевантной информации (для оригинального плаката это так). Это зависит от того, какое значение banaction = [действие] вы используете DEFAULT или конкретное определение тюрьмы.
У меня много небольших компьютеров под управлением ARM, работающих под Linux, но в ядре нет всех соответствующих модулей iptables, поэтому iptables в этом случае работать не будет.
* BSD может вообще не иметь iptables и использовать что-то вроде pf вместо.
На своих ящиках ARM я использую маршрут для блокировки. Он добавляет недопустимый маршрут для заблокированных IP-адресов, поэтому возвращаемые пакеты не могут быть доставлены, а IP-адрес по существу заблокирован. Работает очень хорошо. В этом случае вы можете проверить заблокированные IP-адреса, используя:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
# normal routing entries
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
# banned IPs (no gateway, no iface)
223.96.95.85 - 255.255.255.255 !H 0 - 0 -
У вас есть много вариантов бана. И поэтому много вариантов проверить список запретов. Какой из них использовать, зависит от вашей платформы и предпочтений. В /etc/fail2ban/action.d/ есть много предварительно настроенных файлов конфигурации на выбор.
посмотреть базу данных
/var/lib/fail2ban/fail2ban.sqlite3
Ты можешь использовать sqlite3
команда для сбора статистики.
Показать все уникальные IP-адреса:
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bans"
Показать все уникальные IP-адреса в sshd
тюрьма:
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bans where jail='sshd'"
Показать 20 самых заблокированных IP-адресов в sshd
тюрьма:
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select jail,ip,count(*) as count from bans where jail='sshd' group by ip order by count desc limit 20"
Ты можешь использовать DB Browser For Sqlite
чтобы увидеть структуру и данные этого файла.