• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Руководство для новичков по скрытию активности и защите данных на сервере Debian

keklick1337

RAID-массив
Пользователь
Регистрация
06.05.2019
Сообщения
80
Реакции
183
Введение
Всем привет пользователи xss.pro, держите небольшое руководство по настройке сервера на базе Debian для максимальной конфиденциальности и защиты данных!
Эта статья предназначена как для новичков, так и для опытных пользователей, которые хотят минимизировать следы своей активности, сделать логи нечитаемыми и защитить данные от восстановления - например, в случае изъятия сервера для судебной экспертизы.
Я объеденил лучшие практики, пошаговые инструкции и примеры, чтобы вы могли шаг за шагом настроить свой сервер. Цель - создать систему, где логи либо не сохраняются, либо недоступны, а данные на диске защищены от анализа инструментами вроде R-Studio.

В этой статье мы разберём, как отключить хранение логов (таких как wtmp, lastlog, journalctl, syslog и auth.log), настроить полное шифрование диска и регулярно очищать данные, чтобы их нельзя было восстановить. Мы также рассмотрим простые методы для новичков и более технические подходы для опытных пользователей.
Если вы новичок, не переживайте - мы объясним всё максимально просто, с примерами команд и пояснениями. Если вы уже знакомы с Linux, то найдёте здесь детализированные инструкции и оценку эффективности каждого метода. В конце вы получите полную картину того, как сделать ваш сервер "немым" для форензики и защищённым от восстановления данных.

Понимание логов на Debian​

Логи - это файлы, в которые система автоматически записывает информацию о происходящих событиях. Они полезны для диагностики, но могут стать проблемой, если вы хотите скрыть свою активность. Вот основные логи, с которыми мы будем работать:
  • wtmp: Фиксирует входы и выходы пользователей. Путь: /var/log/wtmp.
  • lastlog: Хранит данные о последнем входе каждого пользователя. Путь: /var/log/lastlog.
  • journalctl: Журнал systemd, собирающий логи от различных служб. Может храниться на диске или в памяти.
  • syslog: Общие системные сообщения. Путь: /var/log/syslog.
  • auth.log: Логи аутентификации, например, попытки входа через SSH. Путь: /var/log/auth.log.
Эти файлы содержат информацию о том, кто, когда и что делал на сервере. Чтобы сделать их нечитаемыми, мы либо отключим их запись на диск, либо настроим систему так, чтобы они удалялись при перезагрузке. Давайте разберём, как это сделать шаг за шагом.

Как сделать логи нечитаемыми​

Отключение wtmp​

Файл wtmp записывает все входы и выходы пользователей. Чтобы отключить его:

Если файл /etc/tmpfiles.d/var.conf есть​

  1. Откройте файл для редактирования:
    Bash:
    nano /etc/tmpfiles.d/var.conf
  2. Найдите строку, связанную с wtmp (например, f /var/log/wtmp - root utmp 0664) и закомментируйте её, добавив # в начале:
    Код:
    #f /var/log/wtmp - root utmp 0664
  3. Сохраните изменения (Ctrl+O, Enter, Ctrl+X)

Если файла /etc/tmpfiles.d/var.conf нет​

В новых версиях Debian этот файл может отсутствовать. В таком случае используем альтернативный метод:
  1. Отключите службы, которые записывают в wtmp:
    Bash:
    systemctl disable systemd-update-utmp
    systemctl disable systemd-update-utmp-runlevel
    Эти команды предотвратят запуск служб при загрузке системы
  2. Удалите существующий файл wtmp
    Bash:
    rm /var/log/wtmp
  3. Дополнительная мера: Символическая ссылка
    Создайте ссылку на /dev/null, чтобы любые попытки записи в wtmp игнорировались
    Код:
    ln -s /dev/null /var/log/wtmp
Примечание: Некоторые процессы могут ожидать, что wtmp - это обычный файл, а не ссылка, но обычно это не влияет никак не работу системы.
Оценка безопасности: ★★★★★ - Логи не пишутся, но другие источники данных могут остаться.

Отключение lastlog​

Файл lastlog хранит информацию о последнем входе каждого пользователя. Чтобы минимизировать его:
  1. Очистите файл и сделайте его неизменяемым:
    Bash:
    > /var/log/lastlog
    chattr +i /var/log/lastlog
    Первая команда очищает файл, вторая предотвращает его обновление. Очистить файл можно и иначе, используйте любой удобный для вас метод.
  2. Настройте PAM, чтобы lastlog не обновлялся:
    • Откройте файл /etc/pam.d/common-session:
      Bash:
      nano /etc/pam.d/common-session
    • Добавьте или измените строку:
      Код:
      session optional pam_lastlog.so noupdate
    • Сохраните и выйдите
Оценка безопасности: ★★★★★ - Эффективно для lastlog, но другие логи могут содержать данные.

Настройка journalctl для хранения в памяти​

Journalctl - это журнал systemd, который по умолчанию сохраняет логи на диске. Чтобы сделать их временными:
  1. Откройте файл конфигурации
    Bash:
    nano /etc/systemd/journald.conf
  2. Найдите секцию [Journal] и добавьте или измените строку
    Код:
    [Journal]
    Storage=volatile
    Это заставит систему хранить логи только в памяти (в /run/log/journal), и они исчезнут при перезагрузке.
  3. Перезапустите службу
    Bash:
    systemctl restart systemd-journald
Оценка безопасности: ★★★★★ - Логи не сохраняются на диск, что значительно усложняет их анализ.

Отключение syslog и auth.log​

Эти логи управляются службой rsyslog. Чтобы предотвратить их запись на диск:
  1. Откройте файл конфигурации
    Bash:
    nano /etc/rsyslog.conf
  2. Удалите или закоментируйте все строки вида
    Код:
    *.*;auth,authpriv.none        -/var/log/syslog
    auth,authpriv.*            /var/log/auth.log
    cron.*                -/var/log/cron.log
    kern.*                -/var/log/kern.log
    mail.*                -/var/log/mail.log
    user.*                -/var/log/user.log
    *.emerg                :omusrmsg:*
  3. Добавьте в конец строку
    Код:
    *.* /dev/null
    Это перенаправит все логи в "чёрную дыру"
  4. Перезапустите службу
    Bash:
    systemctl restart rsyslog
Альтернатива: Полностью отключите rsyslog
Bash:
systemctl stop rsyslog
systemctl disable rsyslog

Примечание: Это может повлиять на работу некоторых служб, софта итд, так как они могут зависеть от логирования.
Оценка безопасности: ★★★★★ - Логи не пишутся, но проверьте, не создаются ли они другими способами.

Отключение логов в OpenSSH​

Если вы используете OpenSSH, он пишет логи в auth.log. Чтобы уменьшить их объём:
  1. Откройте файл конфигурации SSH
    Bash:
    nano /etc/ssh/sshd_config
  2. Найдите строку LogLevel и измените на QUIET
    Код:
    LogLevel QUIET
  3. Перезапустите службу SSH
    Bash:
    systemctl restart sshd
Оценка безопасности: ★★★★★ - Уменьшает логирование, но не отключает его полностью

Выбор подходящей файловой системы​

Чтобы защитить данные от восстановления, настройте полное шифрование диска (Full Disk Encryption) при установке Debian. Это гарантирует, что все данные на диске будут зашифрованы, и без пароля их не прочитать, даже если сервер физически изымут.

Как настроить шифрование​

  1. Во время установки выберите опцию "Guided - use entire disk and set up encrypted LVM".
  2. Укажите диск для установки.
  3. Выберите шифрование и задайте надёжный пароль.
Примечание для хостинга: Если хостер даёт возможность установить любую ОС с iso на сервер, то вам не составит труда зашифровать диск, но если хостер не предоставляет такой возможности - то создавайте дополнительные шифрованные разделы и работайте на них.

Почему это важно​

Шифрование защищает не только существующие файлы, но и удалённые данные, которые иначе могли бы быть восстановлены. Даже если кто-то получит доступ к диску, без ключа он увидит только случайный набор символов.

Оценка безопасности: ★★★★★ - Максимальная защита, если пароль достаточно сложный.

Альтернативы​

Обычные файловые системы, такие как ext4, Xfs или Btrfs, не предотвращают восстановление удалённых данных. Поэтому шифрование - лучший выбор для параноиков.

Безопасное удаление файлов​

Обычное удаление файлов (команда rm) не стирает данные с диска - их можно восстановить с помощью инструментов вроде R-Studio. Чтобы этого избежать, используйте специальные утилиты для перезаписи данных.

Установка инструментов​

Установите пакеты для безопасного удаления:
Bash:
apt-get install secure-delete wipe -y

Методы удаления​

  1. shred - Перезаписывает файл случайными данными и удаляет:
    Bash:
    shred -u file.txt
  2. srm - Безопасно удаляет файл, перезаписывая его несколько раз
    Bash:
    srm file.txt
  3. wipe - Аналогичный инструмент для перезаписи
    Bash:
    wipe file.txt
  4. dd - Заполняет файл нулями перед удалением
    Bash:
    dd if=/dev/zero of=file.txt
    rm file.txt

Очистка свободного пространства​

Чтобы перезаписать свободное место на диске и предотвратить восстановление старых файлов:
  • Используйте sfill
    Код:
    sfill -f /path/to/directory
  • Или вручную с помощью dd
    Bash:
    dd if=/dev/zero of=/home/zero bs=1M
    rm /tmp/zero
    • Для большей безопасности используйте случайные данные
      Код:
      dd if=/dev/urandom of=/home/random bs=1M
      rm /tmp/random
Оценка безопасности: ★★★★★ - Перезапись делает восстановление практически невозможным

Оценка методов​

Вот сводная таблица с оценкой безопасности каждого метода (от ★★★★ - минимальная защита, до ★★★★★ - максимальная):
МетодОценка безопасностиОписание
Отключение wtmp★★★★Предотвращает запись входов/выходов, но другие логи остаются
Отключение lastlog★★★★★Останавливает обновление данных о входах, но не влияет на другие логи
Journalctl на volatile★★★★Логи только в памяти, исчезают при перезагрузке
Отключение syslog и auth.log★★★★Логи не пишутся на диск, но возможны обходные пути
Отключение логов OpenSSH★★★★★Уменьшает логирование SSH, но не полностью
Полное шифрование диска★★★★★Данные недоступны без ключа, даже при изъятии
Безопасное удаление файлов★★★★★Перезапись предотвращает восстановление
Очистка свободного пространства★★★★★Уничтожает следы старых файлов на диске

Дополнительные советы для новичков​

Почему это важно​

Если вы только начинаете работать с серверами, можете думать: "Зачем мне это?" Представьте, что ваш сервер изъяли для проверки. Без этих мер эксперты легко узнают, что вы делали, какие файлы создавали и когда входили в систему. Отключение логов и шифрование - это ваш щит.

Простые шаги для начала​

  1. Установите Debian с шифрованием (выберите "encrypted LVM" при установке).
  2. Выполните команды для отключения wtmp:
    Bash:
    systemctl disable systemd-update-utmp
    rm /var/log/wtmp
    ln -s /dev/null /var/log/wtmp
  3. Настройте journalctl на volatile
    Bash:
    nano /etc/systemd/journald.conf
    # Добавить: Storage=volatile
    systemctl restart systemd-journald
  4. Установите shred и удаляйте файлы безопасно
    Код:
    shred -u file.txt

Частые ошибки​

  • Слабый пароль для шифрования: Используйте длинный пароль с буквами, цифрами и символами.
  • Пропуск перезагрузки: После настройки journalctl перезагрузите сервер, чтобы убедиться, что логи не сохраняются.
  • Обычное удаление: Не используйте rm без перезаписи - данные останутся на диске.

Заключение​

Теперь у вас есть полное руководство, чтобы сделать ваш сервер Debian безопасным и скрытым от посторонних глаз. Отключение логов (wtmp, lastlog, journalctl, syslog, auth.log), настройка полного шифрования диска и регулярное безопасное удаление файлов помогут защитить вашу активность и данные. Даже если сервер изымут, без пароля и с перезаписанными данными восстановить что-либо будет практически невозможно.
Комбинируйте эти методы для максимальной защиты:
  • Шифруйте диск при установке.
  • Отключите все логи или настройте их хранение в памяти.
  • Используйте shred, srm или sfill для очистки данных.
Если вы новичок, начните с простых шагов и постепенно осваивайте более сложные настройки. Для опытных пользователей эта статья - шпаргалка с проверенными методами. Ваша приватность в ваших руках!
На самом деле методов поиска ваших данных активности достаточно много, в статье я описал только "основные", чтобы у вас было понимание как всё работает.

Статья сделана специально для xss.pro
Автор: keklick1337
 
Вставлю пять копеек:
После модификации, не забывайте откатывать дату редактирования
Код:
touch -r reference_file target_file

Отключать ведение истории оболочкой:
Код:
unset HISTFILE && unset SAVEHIST

И собственно, дропаться из оболчки:
Код:
kill -9 $$

Но это все хорошо известные методы, и они мониторятся.

А вот действительно интересно было бы увидеть удаление своих авторизаций из втмп, с примерами кода, например на баше :)
 
Вставлю пять копеек:
После модификации, не забывайте откатывать дату редактирования
Код:
touch -r reference_file target_file

Отключать ведение истории оболочкой:
Код:
unset HISTFILE && unset SAVEHIST

И собственно, дропаться из оболчки:
Код:
kill -9 $$

Но это все хорошо известные методы, и они мониторятся.

А вот действительно интересно было бы увидеть удаление своих авторизаций из втмп, с примерами кода, например на баше :)
Если найдешь такой код скинь в личку идея хорошая
 
На баше, как оказалось, все уже написано до нас.
А именно - утилита для дампа wtmp/utmp.
Ей же можно и обратно в бинарный формат кодировать.

Вот убогий однострочник:
Код:
utmpdump /var/log/wtmp | grep -vE ".*root.*$(date +%a\ %b\ %e).*00:.*" | utmpdump -r -- > /tmp/test && mv -f /tmp/test /var/log/wtmp

где,
  • root - имя пользователя или событие;
  • date +%a\ %b\ %e текущая дата в локале системы;
  • 00: - часы;
  • /tmp/test - временный фаил, т.к. оригинальный все еще открыт.

Это конечно не так сексуально и удобно как на питоне, и вариант что-то сломать выше.
Пользуйтесь на свое усмотрение.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх