Есть несколько вариантов, которые лучше комбинировать1) ACL до нужных SIP-серверов и их медиапроксикластеров (уточнять у провайдеров перечень IP) и хоть что угодно пробрасывайте себе, но суть в том, что телефон сейчас не обязан смотреть в интернет напрямую.
Если там вдали какой-то SIP-сервер не релеит траффик и не пишет разговоры, а соединяет напрямую, то белый список ACL не поможет, потому что медиа-соединение пойдет напрямую вообще на другие IP клиентов. Вот если бы заранее знать перечень возможных IP... Для таких задач и нужен SIP-сервер/SBC, чтобы разрешать оперативно.
2) Самый простой способ для обычного телефона в 2021-ом году, когда SIP-сервер в публичном интернете - это NAT любого рода, кроме Fullcone при выключенном UPnP вообще без DST-NAT.
SIP его обойдет, а роутер не даст установить входящее соединение. На сервере и на телефоне при этом может быть просто rport ну или накрайняк STUN/TURN. Если удаленный сервер пишет разговоры, то даже STUN не надо, потому что траффик и тай пойдет через него как через relay. Так работают АТС-ки построенные поверх B2BUA вроде asterisk.
3) Не пользоваться старым китайским телефоном, который принимает анонимные звонки.
Телефония это не сам SIP. Телефония строится поверх SIP. В ней есть понятие DID (Direct Inward Dial) и диалплана. Самые дешевые китайские телефоны могут не иметь поддержки диалплана вовсе. В идеале при поступлении входящего звонка он должен поступить на корректную "учетку", под которую в диалплане телефона появится DID. Это защита на уровне телефона. Благо, анонимных телефонов сейчас не так много.
В зависимости от возможностей/подконтрольности роутера можно выбрать любую комбинацию. Вообще защиты там должно быть всегда 2. Одна на фаерволе, а вторая по смыслу сессий. В случае с телефонией лучше не брать телефоны, которые всегда зазвонят если позвонить на IP:порт. Это отключать надо по-возможности, что опять же не спасет тех у кого номер телефона 101. В зависимости от реализации есть некий endpoint, которому должен предназначаться звонок. Если его нет, то и звонок такой телефон должен отсечь.
Если страшно сидеть с такой динамикой можно поставить B2BUA, прицепить телефон к нему, а его к вышестоящему SIP-серверу. Вообще, если мы говорим о серверах к которым прицепляются телефоны с неизвестно каких публичных сетей, то нужно поднять Fail2Ban... как всегда. Если DPI-скриптиком не обойтись, ставьте Kamailio желательно на отдельном IP и проверяйте на нем входящие пакеты. Он на себя может и регистрацию взять сильно разгрузив внутрикорпоративные АТСки. Кстати, DPI-скриптик с телефоном, когда сервер во вне не прокатит.
Астериски, кстати, лучше защищать через ACL, потому что они вообще не очень умеют в защиту от DoS. Это разнопротокольная АТС-ка, она даже не полноценный SIP-сервер. Дальше B2BUA она не умеет... да ей и не надо. Опять же, перед ней нужно ставить Kamailio с конфигами собственного приготовления или любую SBC по вкусу, если нужно выставить её напрямую в интернет. Вообще когда-то во FreePBX ваяли фаервол с автобаном, но помнится потом в очередном PHP-модуле нашлась очередная уязвимость и всех поломали. Астериск и безопасность в одном предложении трудно располагать из-за его технических ограничений. Он же SIP до конца не поддерживает и не стремится. Узкоспециализированное ПО.
А ну и да, пароли на 16 символов минимум, а лучше с TLS, если можете себе позволить =)
SIP для аутентификации использует Digest, а это, мягко говоря, устаревший метод аутентификации.