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

Проблема с сетью с сервером asterisk

Я заменил автомат IVR для входящего звонка после того, как вышел из строя. На убунуту 10.04 запущена звездочка 1.4.23. Я решил разместить сервер за iptables, потому что мой сервер подвергся атаке методом грубой силы. eth0 - моя личная карта, а eth1 - публичная.

Вот мои правила:

# only allow PING on PRIVATE NET
iptables -A INPUT -p icmp -i eth0 -j ACCEPT
# allow all the lo traffic on loopback.
iptables -A INPUT -i lo -j ACCEPT
# START OPEN PORTS
#=================
#SSH (22)
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
#iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
#SAMBA: netbios (139) , microsoft-ds (445) -- only on internal
iptables -A INPUT -p tcp -i eth0 --dport 139 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 445 -j ACCEPT
#ASTERISK
  # SIP (UDP 5060)
      #Port 5060 must be open for SIP.
      #Ports 1024 - 64000 should be open for Media.
  #iptables -A INPUT -p tcp -m tcp -i eth1 --dport 5060 -j ACCEPT
  #iptables -A INPUT -p udp -m udp -i eth1 --dport 1024:64000 -j ACCEPT

      iptables -A INPUT -p udp -m udp -i eth1 --dport 10000:20000 -j ACCEPT
      #iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT

      iptables -A INPUT -p udp -m udp -i eth1 -s xxx.xx.xx.xx --dport 5060 -j ACCEPT
      iptables -A INPUT -p udp -m udp -i eth1 -s xx.xx.xx.xxx --dport 5060 -j ACCEPT

      iptables -A INPUT -p tcp -m tcp -i eth1 -s xxx.xx.xx.xx --dport 5060 -j ACCEPT
      iptables -A INPUT -p tcp -m tcp -i eth1 -s xx.xx.xx.xxx --dport 5060 -j ACCEPT      
#END ASTERISK

# END OPEN PORTS
#Deny everything else
iptables -A INPUT -p all -i eth1 -j DROP

xxx.xx.xx.xx и xx.xx.xx.xxx - это IP-адреса моих SIP-провайдеров, я проверил SIP-домены

Наш клиент получает сигнал "занято" при наборе номера, я проверил журналы и увидел различные предупреждения. Вот некоторые проблемы, которые я заметил в журналах:

[Jan 24 05:02:00] WARNING[939] chan_sip.c: Maximum retries exceeded on transmission 245102dwdw45f4f51f5df5s3@xx.xx.xx.xxx for seqno 102 (Critical Response) -- See doc/sip-retransmit.txt.
[Jan 24 05:02:00] WARNING[939] chan_sip.c: Hanging up call 245102dwdw45f4f51f5df5s3@xx.xx.xx.xxx - no reply to our critical packet (see doc/sip-retransmit.txt).
[Jan 24 06:29:37] WARNING[939] chan_sip.c: Got 200 OK on REGISTER, but there isn't a registry entry for 'mpdhbf867' (we probably already got the OK)
[Jan 24 06:34:07] WARNING[939] chan_sip.c: Got 200 OK on REGISTER, but there isn't a registry entry for 'mpdhbf867' (we probably already got the OK)
[Jan 24 17:00:32] NOTICE[939] chan_sip.c:    -- Registration for 'mpdhbf867@provider-domain.com' timed out, trying again (Attempt #1)

Когда я выключаю iptables, все возвращается в нормальное состояние, и телефонный звонок никогда не прерывается и не звонит. Это трудный компромисс, потому что я не хочу оставлять свой сервер открытым для публичного доступа в Интернет. Я открыт для изменения

Вам не хватает правила для приема трафика на основе существующего трафика (правила, которое делает iptables отслеживающим состояние). Это должно быть вашим самым первым правилом:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Пока вы это делаете, вам также следует убедиться, что у вас есть правильные IP-адреса для ожидаемого входящего SIP-трафика. Если вышестоящий провайдер когда-либо их изменит, у вас проблемы.