Биллинговая система Nodeny
26 Ноября 2024, 00:11:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Как вести лог какой юзер каким адресом был заNATчен (pf)?  (Прочитано 8294 раз)
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« : 31 Января 2011, 18:45:15 »

Всем доброго времени суток, возникла нештатная ситуация и необходимо вести логи по дням какой из пользователей с серым IP каким белым адресом натился и в какое время, есть ли такая возможность и может кто знает как такое реализовать?
Записан
poxy.
NoDeny
Спец
*

Карма: 10
Offline Offline

Сообщений: 844



Просмотр профиля
« Ответ #1 : 31 Января 2011, 18:50:38 »

У меня нат на микротике, создал перед каждым ната (pcc) - правилом еще одно, которое добавляет серый ип юзера в адрес лист. Адрес лист обновляется раз в два дня.
Сорри что не про пф но может кому пригодится.
« Последнее редактирование: 31 Января 2011, 18:52:35 от marcus7 » Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #2 : 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
Может как-то можно от хеша оттолкнуться типа создавать директорию за дату в которой будет куча текстовиков с именами белых ипов, в которых будет список серых адресов  которые натились этим белым и время. Ну или какой-то вменяемый вариант для вычисления нехороших людей которые гадят из-за ната.
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #3 : 31 Января 2011, 19:40:54 »

а не проще ли с колектора снимать инфу?
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #4 : 31 Января 2011, 19:47:07 »

а не проще ли с колектора снимать инфу?
Для этого надо включать подробное логирование? Грубо говоря задача узнать кто неделю назад скажем в 12 дня натился белым ипом таким-то ну может не один человек будет а даже штук 10, не страшно, но я чего-то или на вечер туплю или не знаю как это получить?
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #5 : 31 Января 2011, 20:13:37 »

ниче не нужно включать....
только немного переделать ipcad.pl под себя (если у тебя ipcad)....
запусти в терминале такую команду (если у тебя ipcad) rsh -t 20 -n 127.0.0.1 sh ip acco
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #6 : 31 Января 2011, 20:26:14 »

Спасибо, уже близко к тому что надо. Вывод есть минуя белые через которые натилось, ну тоже норм. Тогда вопрос как это все логировать скажем по дням и часам? Скажем мне надо хранить эти логи за 2 месяца. Чтоб когда к нам заявится сотрудник в форме и скажет что такого-то числа с вашего белого ипа на адрес Васи Пупкина была произведена атака я мог быстро найти лог за нужное число, отсортировать все обращения по grep на адрес этого самого Васи и выдать вменяемую информацию по тем пользователям которые туда в указанное время ломились, а не разводить руками с демонстрацией глупой улыбки.
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #7 : 31 Января 2011, 20:54:21 »

переделай ipcad.pl(или кто-то сделает за вознаграждения) для записи в бд перед обнулением статистики....
но предупреждаю, это сильно нагрузит базу...
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #8 : 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 не силен, может подскажете?
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #9 : 31 Января 2011, 21:38:05 »

ну можно и у файл...
но прикол в тому, что по крону не пройдет....
так как скрипт который собирает статистику по трафику удаляет статистику из колектора после того как снимет
смотри файл ipcad.pl, он как-раз так и пишет.....
там всего-то 20 строк, которые обработают колектор и пишет в файлы 
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #10 : 01 Февраля 2011, 07:09:30 »

Спасибо за помощь, теперь понял принцип работы, буду реализовывать.
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #11 : 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 Пробовал несколько вариантов, переставала считаться статистика вообще, если кому не сложно помогите с кодом.
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #12 : 01 Февраля 2011, 19:29:48 »

Код:
$temp_name1=$file_name.'_temp1';
if( open F,">$temp_name1" )
{
   print F $rez;
   close(F);
}
Не?
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #13 : 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);
}
« Последнее редактирование: 02 Февраля 2011, 00:13:34 от VitalVas » Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 349


Просмотр профиля
« Ответ #14 : 02 Февраля 2011, 09:32:42 »

Спасибо, все работает.
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!