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

ufw запретить сетевое правило не работает

Кто-то пытается войти на мой сервер Dovecot. Я добавил правило запрета ufw для сети, поскольку он продолжает выбирать разные адреса из одной и той же небольшой сети, но эти правила запрета не имеют никакого эффекта. Правило начинает действовать только тогда, когда я указываю IP-адрес.

Я изменил порт прослушивания сервера dovecot, но он находит новый порт и продолжает попытки войти.

Сеть, которую я хочу отфильтровать, - это 185.211.245.128 - 185.211.245.255.

У меня открыты порты postfix и ssh, но он ориентирован на dovecot.

Это правила, которые я установил в ufw

Anywhere                   DENY        185.211.245.128/25
Anywhere                   DENY        185.211.245.0/24
Anywhere                   DENY        185.211.245.170
996                        DENY        185.211.245.170
996/tcp                    ALLOW       Anywhere

Только последнее опровержение возымело действие. У меня сейчас есть попытки подключения с другого адреса из этой сети.

Я добавил правила запрета сети с помощью следующей команды:

# ufw deny from 185.211.245.128/25

Почему ufw не принимает во внимание эти правила запрета?

Обновление 1: Я перезагрузился и получил час облегчения, но снова получаю попытки подключения. iptables выглядят правильно:

Chain ufw-user-input (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    3   180 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:xxx
   32  1672 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
   19  1092 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
   22  1268 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:587
    7   424 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:465
    0     0 DROP       all  --  *      *       141.98.80.16         0.0.0.0/0           
    0     0 DROP       all  --  *      *       5.79.252.176         0.0.0.0/0           
    0     0 DROP       all  --  *      *       5.53.119.178         0.0.0.0/0           
    5   200 DROP       all  --  *      *       185.211.245.128/25   0.0.0.0/0           
    0     0 DROP       all  --  *      *       185.211.245.0/24     0.0.0.0/0           
    0     0 DROP       all  --  *      *       185.211.245.170      0.0.0.0/0           
    0     0 DROP       tcp  --  *      *       185.211.245.170      0.0.0.0/0            tcp dpt:996
    0     0 DROP       udp  --  *      *       185.211.245.170      0.0.0.0/0            udp dpt:996
    0     0 DROP       all  --  *      *       168.228.151.234      0.0.0.0/0           
    0     0 DROP       all  --  *      *       185.211.245.198      0.0.0.0/0           
   34  2160 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:996

Очевидно, 5 пакетов были отклонены правилом deny 185.211.245.128/25. Но у меня сейчас снова подключения от 185.211.245.170.

Это то, что я вижу в auth.log. Перезагрузился до 12:00.

Feb 18 12:37:28 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 12:37:31 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 12:37:58 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 12:38:00 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 13:11:12 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 13:11:14 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 13:11:33 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170
Feb 18 13:11:36 srv01 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=xxx rhost=185.211.245.170

Похоже, iptables не работает должным образом или его можно обойти.

Процесс dovecot прослушивает 0.0.0.0:996 и ::: 996.

Обновление 2: даже страннее. Заглянув в журнал ufw.log, я вижу, что попытки подключения из моего дома к серверу через порт 996 были отклонены этой ночью. Но вчера вечером мне удалось получить доступ к моему серверу imap через тот же порт. Что-то действительно подозрительное.

Обновление 3: У меня был запущен fail2ban. Поскольку я остановил fail2ban, что привело к удалению правил в iptables, больше не сообщается о неудачных попытках подключения в auth.log. Их мог создать fail2ban, а я думал, что это dovecot. В iptables я вижу медленно увеличивающееся количество отбрасываемых пакетов для правила 185.211.245.128/25. Я этого и ожидал. Похоже, что fail2ban мешает iptables, или просто ведение журнала было неправильным. Но через 4 часа и сразу после публикации этого обновления я получил четыре новых попытки подключения.

Обновление4: Я добился некоторого прогресса. Попытки входа в систему блокируются, когда правила удаления помещаются перед всеми разрешающими правилами. Похоже, что злоумышленник извлекает выгоду из других разрешающих правил, чтобы обойти запрещающее правило. Как это возможно, пока неясно. Если эта интерпретация верна, ufw имеет дыру, которая является проблемой безопасности!

Правила отказа, очевидно, должны быть на первом месте. Я могу убедиться в этом сам, но наивное использование ufw может обнажить хост. Я бы посоветовал ufw всегда вставлять запрещающие правила перед всеми разрешающими правилами в качестве меры предосторожности.

Перезагрузить сервис sudo ufw reload и судо service iptables restart, Не забудьте разрешить ssh, если вы находитесь на сервере.

Во-первых, UFW очень прост, и я считаю его ужасным. Кажется, что это очень легко, но по какой-то причине люди, которые разрабатывают такие вещи, думают, что это легко означает запутать вас и затруднить изучение чего-либо, вместо того, чтобы просто делать то, что вы просите, даже если это иногда означает блокировку себя или блокирование неправильных сетей. Вам, вероятно, стоит использовать что-нибудь получше, например shorewall.

Во-вторых, я предлагаю всякий раз, когда вы используете расплывчатый и ограниченный пользовательский интерфейс UFW, также проверяйте iptables -nvL чтобы получить четкое и полное описание того, что такое текущая конфигурация iptables. Увидев этот вывод, я уверен, что ваша проблема будет ясна (если не для вас, то для меня), но не уверен, сможете ли вы затем найти команду UFW для создания правильных настроек iptables (я никогда не устраняю неполадки UFW так далеко ... Я просто заменяю его на shorewall, если вообще возникнут проблемы).

бегать sudo ufw enable или sudo ufw reload если он уже включен после создания правила (правил)