Perl для системного администрирования



              

Обращайте внимание на подозрительную активность - часть 7


и частичное совпадение9

renirn If (1ndOvC$ $п;гИ -- IV

и проверка 3-го случая, го есть. явлй^:.;ч ,-;,, :-с„отоокоп

# сохраненные данные

if (index($un. $_.) > -1){

return:

}

# в противном случае это новый домен, добавляем его в список

push @{$userinfo{$user}}, $dn:

}

Конструкция @{$userinfo{$user}} возвращает список доменов, сохраненных для этого пользователя. Мы обходим в цикле все элементы из этого списка, проверяя, можно ли найти среди них $dn. Если можно, то

мы выходим из подпрограммы, т. к. эквивалентная подстрока уже сохранена.

Если эта проверка пройдена, то можно перейти к пункту 3. Мы проверяем каждую запись из списка, чтобы выяснить, встречается ли она в текущем домене. Мы заменяем запись из списка на текущий домен, если совпадение найдено, тем самым сохраняя более длинную из двух строк.

Поскольку это не вредит, замена производится и при точном совпадении. Мы переписываем запись, используя специальное свойство операторов fо г и fо reach в Perl. Присваивая значение переменной $_ в середине цикла for, Perl в действительности присваивает значение текущему элементу списка. Переменная цикла становится псевдонимом для переменной списка. После того как мы поменяли местами значения, можно выходить из подпрограммы. Если были пройдены все три проверки, то

в последней строке к списку доменов для пользователя добавляется рассматриваемое имя домена.

Это все, что касается «кровавых» деталей просмотра файла и создания структуры данных. Чтобы завершить эту программу, рассмотрим всех найденных пользователей и проверим, со скольких доменов они регистрировались (т. е. выясним длину сохраненного для каждого из них списка). По тем записям, для которых найдено больше доменов, чем можно, мы выводим полный список:

for (sort keys %usermfo){

if ($#{$jsenr-fo{$J} > $."iaxaora:"s)!

}

РГЩГ "V:' Протокол SNMH

Что ж, программу вы видели и вас, вероятно, интересует, действительно ли работает этот метод. Вот реальный отрывок вывода этой программы для пользователя, чей пароль был украден:

38.254.131

bj.edu

ccs.neu.ed

dac.neu.ed

hials.no

ipt. a

tntl.bosl

tntl.bost

tntl. dia

tnt2.bos

tntS.bos

tnt4.bo

toronto4.di

Некоторые из этих записей выглядят нормально для пользователя, живущего в Бостоне. Однако запись toronto4.di выглядит несколько подозрительной, а сайт hials.no вообще находится в Норвегии. Схвачены с поличным!

Программу можно усовершенствовать, добавив проверку времени или сравнение с другими журналами, например, полученных при помощи tcpwrappers. Но как видите, поиск шаблонов часто важен сам по себе.




Содержание  Назад  Вперед