time=$(expr `/bin/date +%H%M` / 1)
if [ $time -eq 1015 ]; then
echo "Table 56 contents IP:"
echo "====================="
/sbin/ipfw table 56 list
echo "====================="
/sbin/ipfw table 56 flush
echo "Table 56 flushed"
fi
if [ $time -eq 0 ]; then
rm -rf `/bin/date -v-180d +'/var/log/asterisk/%Y/%m/'`
# echo "Deleted dir " `/bin/date -v-180d +'/var/log/asterisk/%Y/%m/'`
mkdir -p `/bin/date +'/var/log/asterisk/%Y/%m/'`
# echo "Created dir " `/bin/date +'/var/log/asterisk/%Y/%m/'`
fi
/usr/local/sbin/asterisk -rx 'logger rotate'
/bin/sleep 2
/usr/bin/grep -E ' chan_sip.c: Registration from .* No matching peer found$' /var/log/asterisk/messages.0 | \
awk -F "'" '{ ips[$4]++ } END { for (a in ips){ if (ips[a]> 10 ){ cmd=sprintf("/sbin/ipfw table 56 add %s/32 5060 >/dev/null 2>&1",a); system(cmd); printf ("asterisk: Wrong peers repeated [%d] times: IP [%s] blocked\n",ips[a],a); } } }'
/usr/bin/grep -E ' chan_sip.c: Registration from .* Wrong password$' /var/log/asterisk/messages.0 | \
awk -F "'" '{ ips[$4]++ } END { for (a in ips){ if (ips[a]> 20 ){ cmd=sprintf("/sbin/ipfw table 56 add %s/32 5061 >/dev/null 2>&1",a); system(cmd); printf ("asterisk: Wrong passwords repeated [%d] times: IP [%s] blocked\n",ips[a],a); } } }'
mesdst=`/bin/date +'/var/log/asterisk/%Y/%m/mes_%Y%m%d.log'`
evtdst=`/bin/date +'/var/log/asterisk/%Y/%m/evt_%Y%m%d.log'`
quedst=`/bin/date +'/var/log/asterisk/%Y/%m/que_%Y%m%d.log'`
cat /var/log/asterisk/messages.0 >> $mesdst
rm /var/log/asterisk/messages.0
cat /var/log/asterisk/event_log.0 >> $evtdst
rm /var/log/asterisk/event_log.0
cat /var/log/asterisk/queue_log.0 >> $quedst
rm /var/log/asterisk/queue_log.0
среда, 12 октября 2011 г.
Простейший скрипт для защиты Asterisk
Так же мы можем скриптом анализировать логи Asterisk сервера и всех уродов, подбирающих пароль, банить фаирволом (ipfw) сервера.
Одна из версий скрипта:
Инсталляция скрипта:
1. Сохраните код скрипта на своем сервере
2. Переименуйте файл в protect_aster.sh
3. Сделайте скрипт исполняемым:
chmod a+x protect_aster.sh
4. Добавте в ваш firewall ipfw правило:
ipfw add XXX reject ip from «table(56)» to me
где ХХХ это номер правила.
Будьте внимательны размещая данное правило, не забаньте сами себя ! Обеспечьте allow правила для своих IP-адресов выше этого правила, чтобы избежать неожиданностей.
5. Добавте скрипт на исполнение по crontab, отредактируйте /etc/crontab:
*/5 * * * * root /full/path/to/script/protect_aster.sh
Забаненый IP-адрес попадает в таблицу ровно на сутки, через сутки он автоматически будет удален из таблицы.
Надеемся, что эти не хитрые приемы помогут вам остаться при деньгах и сэкономить ваши нервы.
Спасибо, Панфилову Алексею и Николаеву Дмитрию!
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий