LINUX.ORG.RU

Как настроить «белый» список для fail2ban для Asterisk

 , , ,


1

2

Есть asterisk 13 + freepbx 13 на Centos 7.

При открытии астериска в инет, через 2 часа его начинают стучать боты со всего мира (порты-то стандартные, пока нужны такие).

Установила iptables+fail2ban, начались баны, всё работает. Но список постоянно пополняется.

Я принимаю звонки только со своего города от трех абонентов. У них динамические адреса, но диапазоны постоянны. В описаниях к fail2ban’у нашла только черные списки, блокировка geoip и т.д.

Как разрешить только белые списки IP в fail2ban’е для звонков на астериск, а лучше ещё и по MAC’у.

А причем тут fail2ban?

for i in $(cat ips.txt); do iptables -t filter -A INPUT -s "$i" -j ACCEPT; done
steemandlinux ★★★★★ ()
Последнее исправление: steemandlinux (всего исправлений: 1)

У них динамические адреса, но диапазоны постоянны.

Тебе ipset подойдет лучше

Deleted ()
Последнее исправление: log4tmp (всего исправлений: 1)

Попробуй собрать рабочую связку iptables + ipset + geoip for iptables.

тогда одним скриптом отправишь всех, кроме родной страны в бан лист, а с остальными справится fail2ban.

Nurmukh ★★ ()
Ответ на: комментарий от steemandlinux

Да, согласна с вами, fail2ban действительно тут не причем. Решать нужно iptables.

Сейчас у меня открыты порты 5060, 5061, 10000-10100.

Создала файл ips.txt, добавила два локальных ip (192.168.1.105 и 192.168.1.106), команда добавила правила в iptables (тестирую на компах их локалки):

0     0 ACCEPT     all  --  *      *       192.168.1.105        0.0.0.0/0
0     0 ACCEPT     all  --  *      *       192.168.1.106        0.0.0.0/0

В iptables удалила правило, разрешающее локальную сеть, сохранила правила, перезапустила iptables. Политика для INPUT - DROP.

Однако софтфон с 192.168.1.107 отлично коннектится к астериску, как и 105-ый, и 106-й. Переписала правила, сначала разрешающие для IP, потом для 5060, 5061, 10000-10100. Софтфон на 192.168.1.107 всё равно логинится… Вывод команды iptables -L -n

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x3F
ACCEPT     tcp  --  192.168.1.0/24       0.0.0.0/0            tcp dpt:22
ACCEPT     all  --  192.168.1.105        0.0.0.0/0
ACCEPT     all  --  192.168.1.106        0.0.0.0/0
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5060
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5061
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5060
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5061
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpts:10000:10100

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Где-то оставила лазейку для 192.168.1.107 или я чего-то в упор не вижу?

manik207 ()
Ответ на: комментарий от Deleted

Спасибо за ответ.

Изучила тему ipset, под белые списки подходит.

Установила пакет, добавила список из одного адреса (в браузере стоит аддон с прокси, вписала именно его IP), проверила, что этот ip в списке ipset, добавила правило со списком

iptables -I INPUT 6 -m set --match-set wh2 src -j ACCEPT

после этого правила внесла правило, разрешающее 80 порт. Проверяю на freepbx, не могу зайти ни с локального, ни с проксированного IP.

При выводе команды

iptables -L -n -v --line-numbers
видно, что в iptables на 80 порт стучали
   
 11   660 ACCEPT tcp  --  *   *  0.0.0.0/0  0.0.0.0/0 tcp dpt:80
Параметр bytes, который сейчас равен 660, увеличивается после каждого моего обновления браузера. Логи смотрела в nano /var/log/messages, там только астериск...

Нашла, что сам iptables логи не вёдет...

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

manik207 ()
Ответ на: комментарий от manik207

У тебя политика - DROP, зачем еще раз делать DROP?

Удали это:

ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5060
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5061
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5060
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5061
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpts:10000:10100

И не нужен SIP`у tcp.

steemandlinux ★★★★★ ()
Ответ на: комментарий от steemandlinux

Спасибо за подсказку про tcp для SIP, теперь буду знать.

Убрала лишние строки, сохранила настройки, перезагрузила машину с астериском целиком, теперь вывод iptables -L -n такой:

iptables -L -n 
Chain INPUT (policy DROP)
target     prot opt source               destination
f2b-asterisk-udp  udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5060,5061
f2b-asterisk-tcp  tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5060,5061
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     tcp  --  192.168.1.0/24       0.0.0.0/0            tcp dpt:23456
ACCEPT     all  --  192.168.1.105        0.0.0.0/0
ACCEPT     all  --  192.168.1.106        0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain f2b-asterisk-tcp (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain f2b-asterisk-udp (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

К астериску коннектятся все машины. К freepbx - ни одна (но, если правильно поняла, это правильно, порт 80-то закрыт).

Открыла 80 порт следующим правилом, freepbx недоступен со 105. А должен ведь быть доступен?

manik207 ()
Ответ на: комментарий от manik207

У вас fail2ban порты открыл.

f2b-asterisk-udp  udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5060,5061
f2b-asterisk-tcp  tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5060,5061
steemandlinux ★★★★★ ()
Ответ на: Спасибо за ответ. от manik207

iptables -I INPUT 6 -m set --match-set wh2 src -j ACCEPT
после этого правила внесла правило, разрешающее 80 порт.

не правильно, проще так сделать:

iptables -I INPUT 6 -m set --match-set wh2 src -p tcp --dport 80 -j ACCEPT

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.