Назад | Перейти на главную страницу

Fail2Ban не добавляет правила iptables

Fail2Ban не добавляет правила iptables для блокировки злоумышленников. Я использую CentOS 6.5 (32 бит)

Вот что я сделал:

Для 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)