LINUX.ORG.RU
ФорумTalks

Параноя... Обнаружил у себя на жестком диске логи своей консоли


0

4

grep -a -b 'root@darkstar:~' /dev/<root_fs> | tee /home/suspected-root.log

Попробовал выполнить команду типа такой — то есть греп по постоянной части моего приглашения в консоли.
Логи консоли простого юзера тоже находит

И внезапно находятся логи консоли, причём именно логи с командами и результатами их выполнения... и ладно бы просто так, так ведь! эти блоки не соответсвуют никаким файлам, по крайней мерез debugfs не нашел.

Так как grep выводит оффсет. вот такой командой можно прочитать блок, где был лог: dd if=/dev/sda2 bs=4096 skip=$[<offset>/4096] count=5 > /home/suspected.sector.dd

Попытаться найти в файловой системе блок так:

debugfs /dev/<root_fs> -R «icheck $[<offset>/4096]»

С нормальными файлами вроде работает (попробуйте погрепать по содержимому текстового файла, который вы создали и потом через icheck и ncheck найти имя файла).

Теперь бы ещё узнать, кто их туда записывает.. Я надеюсь, что не руткит. Может быть временный файл от приложения-терминала. Но почему не получается определить файл?

★★★★★

Последнее исправление: Xenius (всего исправлений: 2)

по моему размер этой памяти о введенном выведенном у консоли настраивается (и даже в ноль)

psv1967 ★★★★★
()

Перенёс /tmp в память и почистил пустые блоки:

/etc/fstab

none    /tmp/   tmpfs   mode=1777,uid=root,gid=root,nodev,nosuid,noexec 0      0
затем
# rm /tmp/* -rf
# mount /tmp/
# dd if=/dev/zero of=/secure_baloon bs=4k
# rm /secure_baloon
# mv /var/tmp/* /tmp/
# ln -sf /tmp /var/tmp
# reboot

router ★★★★★
()
Ответ на: комментарий от router

для очистки совести запустил на пару минут

while :; do for ((a=1;a<200;a++)); do echo testlasttest_after_move_tmp_to_ram12344567890  ;done ;sleep 1;done

и греп по диску. Ничего не нашлось. Кроме того, во время выполнения echo было видно как растёт занятое место в tmpfs (df -h /tmp )

Баг жив, но сильно ущемлён в правах :)

router ★★★★★
()
Ответ на: комментарий от anonymous_sama

А вообще и тот же .bash_history удалять шредаром в случае чего вряд ли будут.

Можно просто unset HISTFILE сделать

YAR ★★★★★
()
Ответ на: комментарий от YAR

Можно просто unset HISTFILE сделать

export HISTIGNORE=' *:cd*'

в результате в history не попадают cd и команды, начинающиеся с пробела ;)

router ★★★★★
()
Ответ на: комментарий от router

Открывает файл, тут же удаляет его, чтобы никто не догадался, а по открытому дескриптору спокойно пишет.

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

AndreyKl ★★★★★
()
Ответ на: комментарий от router

Ты прям Америку открыл. Неужели бывают пользователи bash-а, которые не знают об этой опции?

geekless ★★
()
Ответ на: комментарий от router

Самый юмор в том, что с этой «фичей» любая программа без проблем будет шпионить за терминалом, просто поключившись через tail -f к дескриптору в /proc/<pid>/fd/.

Хорошо что во Фре procfs необязательна. ;)

iZEN ★★★★★
()
Ответ на: комментарий от AndreyKl

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

И кто ещё так делает, кроме vte?

Я считаю, что хранить логи консоли в виде файлов неприемлемо, если юзер специально не включил такую опцию.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

И кто ещё так делает, кроме vte?

Я считаю, что хранить логи консоли в виде файлов неприемлемо, если юзер специально не включил такую опцию.

не в этом смысле.

там возникло сомнение по поводу «Открывает файл, тут же удаляет его, чтобы никто не догадался...»

так я поясняю - это не чтобы никто не догадался. «Открыть и сразу удалить» - это стандартная практика для временных файлов в юникс-системах. Чтобы не заморачиваться с закрытием. а то ведь или сигнал придёт, или просто завершиться программа и забудешь удалить..

по поводу логов в файлах - на мой взгляд в общем-то конечно решение спорное: с одной стороны все пароли и прочая в большинстве случаев запрашиваются интерактивно. поэтому вроде как пох. с другой - я не вижу никаких плюсов в ситуации когда кто-то случайно получивший доступ к моей машине (например, потеря/кража ноутбука) легко узнает какие серверы я админю. доступ конечно по ключам, ключи шифрованы и запаролены. но всё же, все же... да и в консоли иногда пароли для баз генерю, они наверняка в этих логах остаюстя.. с одной стороны пойди узнай откуда это пароль.. с другой, сопоставив даты соединения с серверами можно с высокой степенью вероятности угадать с какого сервера пароль.. короче, не смертельно, но неприятно.

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

Чтобы не заморачиваться с закрытием. а то ведь или сигнал придёт, или просто завершиться программа и забудешь удалить..

Я так и подумал вообще-то, но считаю, что это всё-таки не совсем правильно. По-моему программа должна чистить свои временные файлы при старте и завершении. Например, при старте она проверяет lock-файл, если он найден, то проверяет, не запущен ли другой экземпляр программы, если не запущен, удаляет lock-файл и все файлы из своей временной директории. Далее, начинает работу, при необходимости создавая их снова.

Если программа упадёт, значит эти временные файлы могут помочь найти ошибку, то есть они должны остаться.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Если программа упадёт, значит эти временные файлы могут помочь найти ошибку, то есть они должны остаться.

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

личные соображения - если программа наоткрывает временных файлов и упадёт - это вряд ли поможет найти ошибку. скорее это просто дополнительный гемор с удалением файлов, если tmp не в ОЗУ. А tmp зачастую не в ОЗУ.

AndreyKl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.