У меня есть АТС (сервер VOIP), к которому подключаются телефоны для совершения телефонных звонков. АТС, которую я использую, Звездочка. Этот сервер не используется и предназначен только для анализа атак.
Служба АТС не важна, если у меня будет другая служба, такая как mongodb. Я уверен, что боты в Интернете будут искать уязвимости для атаки на эту базу данных.
В любом случае, я анализирую все пакеты, которые приходят на мой сервер через UDP-порт 5060 (именно там прослушивается звездочка), и пакеты, которые приходят, выглядят так:
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:824@54.84.215.2>
From: <sip:824@54.84.215.2>;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:824@10.4.1.117: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 ips вместо тысяч.
№ заказа