Биллинговая система Nodeny

Главная категория => Общий раздел => Тема начата: Rico-X от 31 Января 2011, 18:45:15



Название: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 31 Января 2011, 18:45:15
Всем доброго времени суток, возникла нештатная ситуация и необходимо вести логи по дням какой из пользователей с серым IP каким белым адресом натился и в какое время, есть ли такая возможность и может кто знает как такое реализовать?


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: poxy. от 31 Января 2011, 18:50:38
У меня нат на микротике, создал перед каждым ната (pcc) - правилом еще одно, которое добавляет серый ип юзера в адрес лист. Адрес лист обновляется раз в два дня.
Сорри что не про пф но может кому пригодится.


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 31 Января 2011, 19:10:47
Ну у меня микротика нет. Нужно что-то типа таблички за день кто из серых каким белым натился. Думал делать выборку из pfctl -ss но представил размер и ужаснулся. Нат идет по правилам типа
nat pass on $ext_if inet from 10.0.0.0/8 to ! <no_nat> -> 194.28.38.128/25 source-hash
Может как-то можно от хеша оттолкнуться типа создавать директорию за дату в которой будет куча текстовиков с именами белых ипов, в которых будет список серых адресов  которые натились этим белым и время. Ну или какой-то вменяемый вариант для вычисления нехороших людей которые гадят из-за ната.


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: VitalVas от 31 Января 2011, 19:40:54
а не проще ли с колектора снимать инфу?


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 31 Января 2011, 19:47:07
а не проще ли с колектора снимать инфу?
Для этого надо включать подробное логирование? Грубо говоря задача узнать кто неделю назад скажем в 12 дня натился белым ипом таким-то ну может не один человек будет а даже штук 10, не страшно, но я чего-то или на вечер туплю или не знаю как это получить?


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: VitalVas от 31 Января 2011, 20:13:37
ниче не нужно включать....
только немного переделать ipcad.pl под себя (если у тебя ipcad)....
запусти в терминале такую команду (если у тебя ipcad) rsh -t 20 -n 127.0.0.1 sh ip acco


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 31 Января 2011, 20:26:14
Спасибо, уже близко к тому что надо. Вывод есть минуя белые через которые натилось, ну тоже норм. Тогда вопрос как это все логировать скажем по дням и часам? Скажем мне надо хранить эти логи за 2 месяца. Чтоб когда к нам заявится сотрудник в форме и скажет что такого-то числа с вашего белого ипа на адрес Васи Пупкина была произведена атака я мог быстро найти лог за нужное число, отсортировать все обращения по grep на адрес этого самого Васи и выдать вменяемую информацию по тем пользователям которые туда в указанное время ломились, а не разводить руками с демонстрацией глупой улыбки.


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: VitalVas от 31 Января 2011, 20:54:21
переделай ipcad.pl(или кто-то сделает за вознаграждения) для записи в бд перед обнулением статистики....
но предупреждаю, это сильно нагрузит базу...


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 31 Января 2011, 21:11:21
Да я бы базу совсем грузить не хотел, мне бы в файл все сбрасывать можно и по крону. То есть чтоб в логах была папочка в ней файлик скажем 31.01.2011.log а в нем все записи за это число. Ну и пусть себе хранится таких файлов 60 штук с автоудалением более старых, мне места на винте не жалко, а вот хочется поменьше систему нагружать. То есть например скриптик который в начале каждого часа заносит всю статистику за час в фаил с простановкой времени в начале.
Вижу что-то типа rsh -t 20 -n 127.0.0.1 sh ip acco >> {date}.log && date "+TIME: %H:%M:%S" >> {date}.log в кроне но в ключах rsh не силен, может подскажете?


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: VitalVas от 31 Января 2011, 21:38:05
ну можно и у файл...
но прикол в тому, что по крону не пройдет....
так как скрипт который собирает статистику по трафику удаляет статистику из колектора после того как снимет
смотри файл ipcad.pl, он как-раз так и пишет.....
там всего-то 20 строк, которые обработают колектор и пишет в файлы 


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 01 Февраля 2011, 07:09:30
Спасибо за помощь, теперь понял принцип работы, буду реализовывать.


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 01 Февраля 2011, 10:17:32
Начал ковырять ipcad.pl и возник вопрос знатокам перла. Как я понял за запись в фаил отвечает блок
Код:
$temp_name=$file_name.'_temp';
if( open F,">$temp_name" )
{
   print F $rez;
   close(F);
}
rename $temp_name,$file_name;
А что в него нужно добавить чтоб все данные дописывались еще и в {date}.log Пробовал несколько вариантов, переставала считаться статистика вообще, если кому не сложно помогите с кодом.


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: 0xbad0c0d3 от 01 Февраля 2011, 19:29:48
Код:
$temp_name1=$file_name.'_temp1';
if( open F,">$temp_name1" )
{
   print F $rez;
   close(F);
}
Не?


Название: Re: Как вести лог какой юзер каким адресом был
Отправлено: VitalVas от 01 Февраля 2011, 21:39:01
создаем папку iplog
перед exit; пишем такое
Код:
use Time::localtime;
$t=localtime();
$mon=$t->mon;
$year=$t->year;
$day=$t->mday;
$hour=$t->hour;
$min=$t->min;
$sec=$t->sec;
$curtime="\n\n# $hour:$min:$sec\n\n";
$mon_now=$mon+1;
$year_now=$year+1900;
if( open F,">>iplog/$day.$mon_now.$year_now.log" )
{
   print F $curtime;
   print F $rez;
   close(F);
}


Название: Re: Как вести лог какой юзер каким адресом был заNATчен (pf)?
Отправлено: Rico-X от 02 Февраля 2011, 09:32:42
Спасибо, все работает.