Fail2Ban не добавляет правила iptables для блокировки злоумышленников. Я использую CentOS 6.5 (32 бит)
Вот что я сделал:
jail.conf
к jail.local
.Я изменил время бана в jail.local на 3600
bantime = 3600
Для iptables у меня есть эти правила, определенные в отношении SSH
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
3 fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Мой jail.local
конфиг для SSH:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure
maxretry = 5
Последние записи журнала:
2014-08-13 10:11:04,481 fail2ban.server : INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.11
2014-08-13 10:11:04,482 fail2ban.jail : INFO Creating new jail 'ssh-iptables'
2014-08-13 10:11:04,514 fail2ban.jail : INFO Jail 'ssh-iptables' uses pyinotify
2014-08-13 10:11:04,533 fail2ban.jail : INFO Initiated 'pyinotify' backend
2014-08-13 10:11:04,536 fail2ban.filter : INFO Added logfile = /var/log/secure
2014-08-13 10:11:04,537 fail2ban.filter : INFO Set maxRetry = 5
2014-08-13 10:11:04,540 fail2ban.filter : INFO Set findtime = 600
2014-08-13 10:11:04,540 fail2ban.actions: INFO Set banTime = 3600
2014-08-13 10:11:04,727 fail2ban.jail : INFO Jail 'ssh-iptables' started
Затем я запускаю fail2ban, но через некоторое время (около часа) проверяю /var/log/secure
и я все еще получаю атаки грубой силы:
Aug 13 10:31:35 webhost sshd[15619]: Invalid user china from 128.199.147.79
Aug 13 10:31:35 webhost sshd[15620]: input_userauth_request: invalid user china
Aug 13 10:31:36 webhost sshd[15620]: Connection closed by 128.199.147.79
Aug 13 10:35:04 webhost sshd[15661]: Invalid user klaudia from 106.187.90.33
Aug 13 10:35:04 webhost sshd[15662]: input_userauth_request: invalid user klaudia
Aug 13 10:35:05 webhost sshd[15662]: Connection closed by 106.187.90.33
Aug 13 10:41:56 webhost sshd[15772]: Invalid user cassandra from 106.187.90.33
Aug 13 10:41:56 webhost sshd[15773]: input_userauth_request: invalid user cassandra
Aug 13 10:41:57 webhost sshd[15773]: Connection closed by 106.187.90.33
Aug 13 10:44:10 webhost sshd[15807]: Invalid user knight from 106.187.90.33
Aug 13 10:44:10 webhost sshd[15808]: input_userauth_request: invalid user knight
Aug 13 10:44:12 webhost sshd[15808]: Connection closed by 106.187.90.33
В iptables не было добавлено никаких новых правил ...
Chain fail2ban-SSH (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Если я попытаюсь устранить проблему с помощью fail2ban-regex
:
fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.conf
Running tests
Use failregex file : /etc/fail2ban/filter.d/sshd.conf
Use log file : /var/log/secure
Results
Failregex: 1374 total
|- #) [# of hits] regular expression
| 5) [1374] ^\s*(<[^.]+\.[^.]+>)?\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)?\s(?:\[ID \d+ \S+\])?\s*[iI](?:llegal|nvalid) user .* from <HOST>\s*$
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [4615] MONTH Day Hour:Minute:Second
`-
Lines: 4615 lines, 0 ignored, 1374 matched, 3241 missed
Missed line(s):: too many to print. Use --print-all-missed to print all 3241 lines
</code>
The missed lines are:
Lines: 4621 lines, 0 ignored, 1376 matched, 3245 missed
|- Missed line(s):
| Aug 10 03:46:30 webhost sshd[12340]: input_userauth_request: invalid user simulator
| Aug 10 03:46:30 webhost sshd[12340]: Connection closed by 106.187.90.33
| Aug 10 03:55:01 webhost sshd[12430]: input_userauth_request: invalid user simulation
| Aug 10 03:55:02 webhost sshd[12430]: Connection closed by 106.187.90.33
| Aug 10 04:01:33 webhost sshd[12505]: Connection closed by 128.199.147.79
| Aug 10 04:02:46 webhost sshd[12539]: reverse mapping checking getaddrinfo for new.jerl.im [128.199.254.179] failed - POSSIBLE BREAK-IN ATTEMPT!
Я недостаточно знаю о fail2ban, чтобы понять, что не так с моим фильтром sshd. Я бы подумал, что конфигурации по умолчанию будет достаточно? Как это исправить?
Я не знаю, в каком журнале вы используете / var / log / secure или /var/log/auth.log, но какой бы он ни был, вам нужно указать fail2ban, из которого он должен читать, также как упоминалось, если вы изменили значение по умолчанию порт для ssh (22), тогда вам снова нужно сообщить fail2ban и открыть его в вашем брандмауэре (iptables и т. д.). Регулярное выражение работает по назначению, оно соответствует важным строкам в журнале, т.е.
Aug 13 10:31:35 webhost sshd[15619]: Invalid user china from 128.199.147.79
Остальные, перечисленные как отсутствующие, не важны для fail2ban, потому что они не предоставляют <HOST>
или <IP>
который fail2ban должен включить бан клиента. Таким образом, fail2ban настроен для ssh правильно, поэтому, если все ваши определения соответствуют настройке вашей системы, он должен быть заблокирован, помните, что вам нужно активировать значения findtime и maxretry, чтобы получить бан. Не забывай '$ fail2ban-client reload'после любых изменений.
Убедитесь, что вы включили тюрьму IPTABLES и фильтр SSH. Также проверьте логи f2b - f2b пытается кого-то забанить?
Судя по моему опыту системного администратора, попробуйте systemd
для бэкэнда и используйте banaction
вместо того action
если вы используете CentOS.
Например,
в твоем jail.local
[ДЕФОЛТ]
bantime = 4640000
banaction = firewalld-custom
backend = systemd
дайте мне знать, если это сработает.
Когда я столкнулся с этой проблемой, это произошло из-за того, что команда «iptables» не работала. Я считаю, что мог бы исправить это, изменив строку
iptables = iptables <lockingopt>
к
iptables = /sbin/iptables <lockingopt>
но, на всякий случай, и поскольку я использовал только iptables-allports.conf, я просто заменил все вхождения на / sbin / iptables в этом файле.
Я заметил, что если ваше имя тюрьмы слишком длинное, оно не будет добавлено в iptables.
Вы можете проверить, что /var/log/fail2ban.log будет содержать предупреждение о том, что имя слишком длинное, что создает ошибку при создании правила iptables.
Это позволит fail2ban обнаруживать и блокировать, однако на самом деле бан не будет, потому что правило не существует в конфигурации iptables (iptables -v -x -n -L)