Я просматриваю с помощью tcpdump пользовательские агенты, которые попадают на мой телефонный сервер.
Получаю интересные результаты. Я добавляю их в список, который защищает многие из моих серверов.
Это хорошо работает. Проблема в том, что я получаю пустые или пустые пользовательские агенты. как мне заблокировать это?
вот мое сканирование tcpdump и результаты с пустыми пользовательскими агентами
tcpdump -i eth0 port sip -l -A | egrep -i 'User-Agent'
Fri May 18 09:37:50 EDT 2018
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
User-Agent: friendly-scanner
User-Agent: UK Dialer
User-Agent: UK Dialer
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent: Asterisk PBX 1.6.5
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent: friendly-scanner
User-Agent:
User-Agent:
User-Agent:
User-Agent:
User-Agent: friendly-scanner
User-Agent: friendly-scanner
Вот что я использую для блокировки
iptables INPUT -p udp -m udp --dport 5060 -m string --string "friendly-scanner" --algo bm --to 65535 -j DROP
Вы можете использовать более длинное совпадение, включать разделители записей и использовать шестнадцатеричные числа для непечатаемых. Тогда ваше правило может стать:
iptables -A INPUT -p udp -m udp --dport 5060 -m string --icase --hex-string '|a|User-Agent: |0d0a|' --algo bm --to 65535 -j DROP
который будет печатать обратно (используя iptables-save
) так как:
iptables -A INPUT -p udp -m udp --dport 5060 -m string --icase --hex-string '|0a557365722d4167656e743a200d0a|' --algo bm --to 65535 -j DROP
Теперь вы должны знать о синтаксисе пробелов в Формат поля заголовка SIP. Поскольку совпадений с регулярными выражениями нет, есть почти бесконечные возможности (даже если поощряется только одна), поэтому вам следует регулярно проверять свой «спам» с помощью Wireshark вместо tcpdump, чтобы иметь точное содержимое. Вот Пример SIP-звонка захват из Примеры снимков Wireshark.
Заголовки также нечувствительны к регистру, но для проверки --icase
работает с содержимым --hex-string
таким образом, это также будет соответствовать USER-AGENT:
.