星号 - 无法验证设备

时间:2014-08-20 14:40:51

标签: exec asterisk

我想将flooder IP地址重定向到“无法验证设备”等消息到我的perl脚本。

我在“chan_sip.c”之后添加:

ast_log(LOG_NOTICE, "Failed to authenticate device %s [IP: %s]\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));

此代码:

execl("/bad-ip.pl", "bad-ip", sip_get_header(req, "From"), ast_sockaddr_stringify(addr), (char *)NULL);

但是如果flooder连接到星号服务器,则会显示消息:

  

与Asterisk服务器断开连接   执行最后一分钟清理

请告知。

1 个答案:

答案 0 :(得分:0)

通过iptable规则检测并记录此类泛滥的正确方法。

使用iptables limit target和LOG target。

将数据包级别速率限制放入应用程序级别(星号)并不是一个好主意。

还有一些合适的工具,如fail2ban.org

这样的东西可以提供帮助(注意,它是防火墙的一部分,还需要进行多项检查,例如检查ssh攻击和友好扫描仪邀请)

# INVITE limit
$IPTABLES -A sipdos -m string --string "INVITE sip:" --algo bm --to $OFFSET -j sipdosinvite

$IPTABLES -A sipdosinvite \
-m hashlimit --hashlimit $IRATE --hashlimit-burst $BURST \
--hashlimit-mode srcip,dstport --hashlimit-name sip_i_limit -j ACCEPT

# REGISTER limit
$IPTABLES -A sipdos -m string --string "REGISTER sip:" --algo bm --to $OFFSET -j sipdosregister

$IPTABLES -A sipdosregister \
-m hashlimit --hashlimit $RRATE --hashlimit-burst $BURST \
--hashlimit-mode srcip,dstport --hashlimit-name sip_r_limit -j ACCEPT

# All other SIP packets...
$IPTABLES -A sipdos -m hashlimit --hashlimit $ORATE --hashlimit-burst $BURST \
  --hashlimit-mode srcip,dstport --hashlimit-name sip_o_limit -j ACCEPT




# Take action on everything else
if [ $LOG ]
then
$IPTABLES -A sipdosregister -j LOG --log-prefix SIP_TO_MANY
$IPTABLES -A sipdosinvite -j LOG --log-prefix SIP_TO_MANY
fi