Security

Asterisk 入侵防禦

  • February 16, 2015

讓我首先說我是個菜鳥,到目前為止,我只是通過磕磕絆絆才發現的。我已經在 Google 上搜尋過,解決方案可能已經存在,但可能完全超出我的想像,因此請在您的解決方案中包含盡可能多的細節。

我有一個為自動電話系統執行 Asterisk 的 Ubuntu 10.04 伺服器。它的唯一目的是來電,它從不連接到一個人。這是一個電話許可系統,因此他們輸入有關他們產品的資訊,我們輸出一個解鎖碼供他們輸入程序。當接到呼叫時,它會執行一個帶有 AGI 的 Perl 腳本,該腳本是一系列提示,然後是解鎖程式碼的輸出。

所有這一切都很好。但是,它似乎有時會停止工作。我查看了 Asterisk 日誌,發現了大量這樣的條目:

[May 22 10:51:27] NOTICE[10663] chan_sip.c: Registration from '"guest12345"<sip:guest12345@xx.xx.xx.xx>' failed for 'yy.yy.yy.yy' - No matching peer found

這些顯然是入侵企圖。xx.xx.xx.xx 是我伺服器的 IP 地址,yy.yy.yy.yy 大概是入侵者的 IP 地址。

我在 Google 上進行了一些研究,並通過設置 Fail2Ban 找到了解決方案,這似乎有效。今天早上,經過 5 次不成功的入侵嘗試,到目前為止,它已經禁止了兩個 IP 地址。

我相當有信心沒有人能在 5 次嘗試內進入,但這似乎仍然沒有我想要的安全。

我的理解是,在我的伺服器上執行的 Asterisk 服務每隔一段時間就會停止並向我的 VoIP 提供商註冊,告訴它它仍然處於連接狀態並準備好接聽電話。據我所知,這是唯一必要的“註冊”,那麼我有沒有辦法阻止所有外部註冊嘗試?

也許我對此有誤,但在我看來,他們似乎在嘗試向我的伺服器註冊,就好像我的伺服器是 VoIP 提供商一樣。也許這就是您獲得一部真正的電話來連接 Asterisk 伺服器的方式?由於我端沒有實際的電話(僅來電,從未轉移給某人),有沒有辦法讓我完全禁用這部分?


編輯:

來自 sip.conf:

registerattempts=0      ; Number of registration attempts before we give up
               ; 0 = continue forever, hammering the other server
               ; until it accepts the registration
               ; Default is 0 tries, continue forever
register => 1111111:password:1111111@sip.inphonex.com:5060/700
[inphonex]
type=peer
username=1111111
fromuser=1111111
secret=password ; password used to login their website (same as in register =>)
host=sip.inphonex.com
fromdomain=sip.inphonex.com
nat=yes ; my asterisk is behind nat
canreinvite=yes
qualify=yes
context=inbound-inphonex; context to be used in extensions.conf for inbound calls from inphonex
disallow=all
allow=ulaw
allow=alaw
allow=gsm
insecure=port,invite

你是對的,“這就是你獲得一部真正的電話來連接 Asterisk 伺服器的方式”。電話在用於向提供商註冊的同一埠上註冊到伺服器。

如果您僅使用 SIP 與提供商交談,則只需設置防火牆以僅允許來自提供商的 SIP。

Fail2Ban 是一種解決方案,但給了對手 5 次機會,而他們本應該一無所獲。

您可以使用 iptables 防火牆阻止來自中繼提供商使用的 IP 的除 SIP 之外的所有入站連接。

iptables 與例如 AsteriskNow 一起提供,但也可以單獨下載和安裝。

我不是 iptables 專家,因此不會嘗試向您提供有關如何配置它的完整詳細資訊,以防萬一我弄錯了,但是只需點擊 google 即可獲得大量資訊,因為您的規則將非常簡單,設置起來不應該太複雜

引用自:https://serverfault.com/questions/273162