Может ли бот, сканирующий мой сервер, изменить свой исходный IP? Почему я продолжаю получать атаки даже после блокировки IP?

Может ли бот, сканирующий мой сервер, изменить свой исходный IP? Почему я продолжаю получать атаки даже после блокировки IP?

У меня есть АТС (сервер VOIP), к которому подключаются телефоны для совершения звонков. АТС, которую я использую, этоЗвездочка. Этот сервер не используется, и его единственное назначение — анализ атак.

Служба АТС не важна, если у меня будет другая служба, например, MongoDB. Я уверен, что боты в Интернете будут искать уязвимости, чтобы атаковать эту базу данных.

В любом случае я анализирую все пакеты, приходящие на мой сервер через UDP-порт 5060 (именно его слушает asterisk), и приходящие пакеты выглядят следующим образом:

IP (tos 0x0, ttl 113, id 654, offset 0, flags [none], proto UDP (17), length 521)
    43.249.129.89.58255 > 171.21.78.225.5060: SIP, length: 493
        REGISTER sip:54.84.215.2:5060 SIP/2.0
        To: <sip:[email protected]>
        From: <sip:[email protected]>;tag=824e5f4a7221279e4f7a
        Via: SIP/2.0/UDP 10.4.1.117:58255;branch=z9hG4bK183d5a24-59ec-4f05-8325-747389112824;rport
        Call-ID: e5f4a722128024e4f7a824
        CSeq: 1 REGISTER
        Contact: <sip:[email protected]:58255>
        Expires: 3600
        Max-Forwards: 70
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: PolycomSoundPointIP SPIP_550 UA 3.3.2.0413
        Content-Length: 0

Этот пакет от бота, потому что я НЕ отправляю никаких пакетов на свой сервер.

Обратите внимание, что единственная цель этого сервера — понять, как работают боты, и увидеть, как они атакуют мой сервер. Я не использую эту АТС; поэтому любой запрос, который приходит на этот сервер, должен исходить от вредоносного бота. Каждый раз, когда я получаю UDP-пакет, отправленный на порт 5060, я блокирую этот IP-адрес.

Теперь мой вопрос:

Я использую этот сервер уже месяц, и каждую минуту или около того я все еще получаю атаки. Я заблокировал более 15 000 IP-адресов! Сколько ботов в Интернете? Они меняют свой исходный IP-адрес, и поэтому они продолжают заходить на мой сервер? Если они могут менять свой исходный IP-адрес, это потому, что я использую протокол UDP? Должен ли я использовать TCP вместо UDP, чтобы решить эту проблему?

Также забавно, как атаки с разных ip-адресов настолько похожи. Например, они используют тот же пользовательский агент, что и телефон, а атака идет с разных ip-адресов. Как будто у всех ботов одинаковый код.

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

решение1

Теперь я понимаю, почему люди пытаются держать как можно больше портов закрытыми. В моем случае я хотел, чтобы порты были открыты и блокировали атакующих. Я обнаружил, что это бесконечная борьба.

Для решения проблемы я понял, как работает iptables. Мои правила выглядят так:

~# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source        destination
DROP       all  --  0.0.0.0/0     0.0.0.0/0       match-set MyBlackList src
ACCEPT     all  --  0.0.0.0/0     0.0.0.0/0       match-set MyWhiteList src
ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0       tcp dpt:5060
DROP       udp  --  0.0.0.0/0     0.0.0.0/0       multiport dports 1:65535
DROP       tcp  --  0.0.0.0/0     0.0.0.0/0       multiport dports 1:65535

Chain FORWARD (policy ACCEPT)
target     prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source        destination

С помощью этих правил я изначально разрешаю подключения к порту 5060 только по протоколу TCP.

Если телефон попытается неправильно подключиться к этому порту, IP будет добавлен в MyBlackList. В этом случае злоумышленник не сможет делать дальнейшие запросы.

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

После использования этого подхода я редко получаю атаки. Теперь у меня заблокировано всего 10 ip вместо тысяч.

Связанный контент