Не хочется велосипед изобретать...
|
24.08.2006 02:22:01
Может кто знает уже готовый парсер для чистки логов Апача по конкретным запросам/хостам?
Не хочется велосипед изобретать...
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
|
|
|
|
|
24.08.2006 09:10:03
grep -v "твой ip" access_log (или error_log) > tmp; mv tmp access_log
|
|
|
|
|
|
24.08.2006 14:49:00
А как насчот времени модификации фаила? через touch?
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
|
|
|
|
|
25.08.2006 02:33:31
Это немного туповато!!! |
|||
|
|
|
|
25.08.2006 17:05:39
to logos:
После такой 'чистки' Apache больше ничего не будет писать в access_log до своего рестарта. To Shanker:
В Unix есть три типа атрибутов времени, которые характеризуют файл: Дата последнего изменения метаданных файла (ctime). Её можно увидеть с помощью ls -lc filename). Для многих редкоизменяемых файлов ctime обычно указывает на дату их создания. Дата последней модификации содержимого файла (mtime). Её можно увидеть с помощью ls -l filename). Дата последнего доступа к файлу (atime). В современных условиях это уже малоактуальный атрибут и его использование часто отключается администраторами путём добавления соответсвующей опции (noatime) при монтировании файловой системы. Для того чтобы пользовательские приложения могли изменять вышеперечисленные атрибуты, ядро предоставляет несколько *utime-подобных системных вызовов (которые и используются утилитой touch). Однако, есть одно "НО". Дело в том, что эти системные вызовы позволяют изменять только mtime и atime атрибуты, а вот ctime изменяется только самим ядром. Например, если атакующий заменил какой-нибудь бинарный executable файл, а затем через touch (или подобную утилиту) "подогнал" его mtime+atime атрибуты под те же значения, которые были ранее у файла-оригинала, то факт подмены файла очень просто обнаруживается при помощи команд ls -lc и ls -l. Простро сравните даты. Если mtime является более ранней датой чем ctime, то это наталкивает на определённые подозрения. Особенно если метаданные анализируемого файла в нормальной ситуации не должны были измениться (а в большинстве ситуаций метаданные бинарных executable файлов очень редко изменяются с момента их создания). Короче, для полноценного и чистого исправления *time атрибутов файла необходимо обязательно изменять и ctime. Это можно сделать путём "отката" системного времени перед внесением изменений в файл (хотя это и ОЧЕНЬ КОРЯВЫЙ метод, но он и самый простой), либо путём прямого исправления файловой системы (этот метод по-сложнее, т.к. он не всегда может быть выполнен штатными средствами). Второй метод можно раскрыть следующим примером: Допустим, у нас имеется корневая файловая система ext2 на /dev/hda2 и нам необходимо изменить ctime атрибут файла /etc/passwd. Воспользуемся штатной утилитой debugfs из пакета e2fsprogs. bash# debugfs -w /dev/hda2 debugfs: 1.39 (29-May-2006) debugfs: show_inode_info /etc/passwd .......skip..... ctime: 0x44eed0fe -- Fri Aug 25 10:29:18 2006 .......skip..... debugfs: set_inode_field /etc/passwd ctime 20060102030405 debugfs: show_inode_info /etc/passwd .......skip..... ctime: 0x43b89825 -- Mon Jan 02 03:04:05 2006 .......skip..... debugfs: quit bash# P.S. Здесь специально не упоминаются системы хранения и проверки контрольных сумм/хешей файлов, т.к. это выходит за рамки поднятых вопросов. Удачи.
------
Don't learn to hack - hack to learn!
|
|||||
|
|
|
|
26.08.2006 02:54:10
Не свосем: апач постоянно обращается к этому файлу, поэтому вообще не даёт его перезаписывать! ![]()
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
|||
|
|
|
|
26.08.2006 05:05:58
Я имел ввиду, что если использовать тот способ, который предложил г-н logos, то система журналирования апача нарушится (из-за того что изменяется inode number access_log файла).
------
Don't learn to hack - hack to learn!
|
|
|
|
|
|
26.08.2006 12:34:08
ClosedGL, дык апач вообще не даёт перезаписывать этот файл! Поэтому совет logos'а не подходит. Верней, подходит, если убить апач, выполнить те самые манипуляции с лог-файлами и снова запустить его.
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
|
|
|
|
|
26.08.2006 12:59:08
А какую ошибку выдаёт если не убивать апач и пытаться манипулировать с логами ?
------
Don't learn to hack - hack to learn!
|
|
|
|
|
|
26.08.2006 16:30:38
2 Shanker
наверно апач в Windows системе не дает перезаписать файл. Что вполне возможно. В юниксе рут конечно может удалить файл и перезаписаь его. чтоб апач писал после перезаписи файла, его надо рестартануть killall -1 httpd
Я такой толстый, потому что завтрак я съедаю сам, обедом со мной делится друг, а враг отдает мне свой ужин...
|
|
|
|
|
|
26.08.2006 21:54:15
У меня не рутовкие права. Просто не даёт перезаписать файл: ошибка записи. Тем не менее вопрос остаётся открытым: есть ли возможность модификации логов БЕЗ рестарта апача? Или это невозможно даже теоритически?
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
|||
|
|
|
|
27.08.2006 01:48:51
Да можно конечно. хоть обычным grep'ом Только root привилегии нужны. Обычно apache открывает логфайлы из главного процесса, который работает с привилегиями суперпользователя. А его потомки просто наследуют дескрипторы и пишут туда без проблем. Но сам логфайл принадлежит пользователю root, и поумолчанию он лишь root'у и доступен для изменения.
------
Don't learn to hack - hack to learn!
|
|||
|
|
|
|
27.08.2006 14:21:13
То ли явное противоречие толи я что-то не догоняю ![]()
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
|||||
|
|
|
|
27.08.2006 14:52:48
To Shanker:
grep отлично подходит для "чистки" логов прямо в realtime. Просто нужно правильно его использовать. Внимательно посмотри на первоначальную команду:
Здесь grep создаёт временный файл tmp. Далее команда 'mv tmp access_log' УДАЛЯЕТ старый access_log файл, а вместо него помещаеет переменованный tmp. Именно в этом УДАЛЕНИИ вся проблема. Новый файл имеет другой inode и Apache о нём ничего не знает. Apache пытается работать со старым access_log, который уже удалён. Таким образом журналирование в access_log нарушается и не будет производиться до рестарта Apache. Правильнее будет использовать следующую команду: grep -v "твой ip" access_log > tmp; cat tmp > access_log; rm -f tmp Смысл её примерно тот же, но метод работы с файлами другой. В этом случае старый access_log не будет удалён, а заменится лишь его содержимое и система журналирования повреждена не будет. Удачи.
------
Don't learn to hack - hack to learn!
|
|||||
|
|
|
|
27.08.2006 18:43:34
Теперь всё понял
ClosedGL logos Спасибо, +1
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
|
||||
|
|
|
|||
Правительство Санкт-Петербурга договорилось с руководством Microsoft о продлении на 2011 год права и ...
Школам дешевле пользоваться лицензионным софтом, нежели свободным программным обеспечением (СПО). Та ...
Депутаты Московской городской думы предлагают установить штрафы за незаконное скачивание фильмов из ...
Оперативники отдела "К" и УБЭП ГУВД Москвы ликвидировали преступную группу программистов, ...
Представители МВД обнаружили пиратское программное обеспечение в российском представительстве LG.
Депутат Мосгордумы Александр Милявский предлагает штрафовать граждан на 2000-5000 руб. за размещение ...
Полковника армии США Лоренса Селлина уволили за критику программы PowerPoint.
Специалисты компании Symantec сообщили об обнаружении нового трояна, с помощью которого злоумышленни ...
Сегодня ночью около двух часов не работал поисковый ресурс Google.
Глава украинского МВД Анатолий Могилев причислил "В Контакте" к сайтам – распространителям ...
"Аэрофлот" подал иск в Арбитражный суд Москвы к банку "ВТБ 24" на 194 ...
Проблема находилась в связке "ядро - графический X-сервер". За счет использования определе ...