Asterisk 入侵防禦
讓我首先說我是個菜鳥,到目前為止,我只是通過磕磕絆絆才發現的。我已經在 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 即可獲得大量資訊,因為您的規則將非常簡單,設置起來不應該太複雜