VPS без логов: настройка no-logs сервера для своего VPN

Сложность: Средний 8 мин чтения Обновлено: 18.07.2026 17
VPS без логов: настройка no-logs сервера для своего VPN
Когда вы запускаете собственный VPN, выигрыш в приватности в том, что ни одна компания не логирует ваш трафик. Но стандартный Linux-сервер всё равно ведёт собственные записи - системные логи, историю входов по SSH, историю оболочки. Этот гайд пошагово урезает VPS до по-настоящему no-logs конфигурации и честно говорит о пределах.

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

Привлекательность собственного VPN проста: между вами и интернетом не сидит компания, которая записывает, что вы делаете. Но обычный Linux-сервер всё равно ведёт собственные записи, и если вам нужна по-настоящему безлоговая конфигурация, надо понимать, какие именно:

  • Сам WireGuard не ведёт лог трафика. По умолчанию он ничего не пишет на диск о ваших соединениях. Он держит в памяти только время последнего рукопожатия и ваш текущий endpoint, которые видно через wg show - и всё это стирается при перезагрузке. Так что уровень VPN уже чист.
  • Шумит именно операционная система. Журнал systemd (journald) записывает события служб. Если установлен rsyslog, он вдобавок пишет текстовые файлы вроде /var/log/syslog и /var/log/auth.log - а auth.log фиксирует каждый вход по SSH. Отдельные файлы (wtmp, btmp, lastlog) отслеживают, кто и когда входил, а ваша оболочка хранит ~/.bash_history.
  • И ещё несколько тихих путей на диск. Если на сервере включён swap, ядро может сбросить страницы RAM - вместе с ключами - на диск. Аварийно завершившаяся программа может оставить core dump своей памяти. А менеджер пакетов пишет логи обновлений в /var/log/apt. Основательная настройка закрывает и это.
Этот гайд предполагает свежий сервер Ubuntu 22.04 или 24.04 и что вы уже настроили WireGuard (см. наш гайд Как настроить собственный VPN на WireGuard на VPS). Всё, что ниже, выполняйте от root.

Честный предел: что безлоговость может и чего не может

Прежде чем что-либо трогать, ясно поймите, что вы на самом деле покупаете. Отключение логов не даёт вашему собственному серверу вести записи - так что если диск когда-нибудь изымут, снимут образ или прочитают тем, кто получил доступ, найти удастся куда меньше. Это реальная и стоящая выгода.

Чего это не делает - так это не прячет вас от компании, которая сдаёт вам сервер. Ваш VPS-провайдер всегда знает, что по этому IP существует машина, видит, сколько трафика она гоняет, и в принципе может наблюдать трафик на уровне сети или гипервизора - никакая настройка внутри вашего сервера это не изменит. Безлоговость - про минимизацию собственного следа, а не про то, чтобы стать невидимым для хостера. Выбирайте провайдера, которому вы доверяете, и относитесь к шагам ниже как к снижению риска, а не к его стиранию.

Безлоговость не гарантирует анонимности. Два предела, которые не изменит никакая настройка сервера:

  • Провайдер видит подключающиеся IP. Содержимое зашифровано, но он видит, что ваш домашний IP обращался к порту WireGuard, и когда.
  • Провайдер может снять снимок RAM. VPS - это виртуальная машина; хостер управляет гипервизором и может захватить живую память (активные ключи WireGuard и подключённых пиров) и может быть обязан передать её полиции по законному запросу.

Итог: вы владеете софтом, но не машиной. Безлоговость снижает ваш риск, но не стирает его.

А что насчёт выделенного (bare-metal) сервера? Он убирает гипервизор, так что тихого дампа памяти одной командой уже не будет - это реальное улучшение. Но и это не гарантия: провайдер владеет физической машиной и сетью. Он по-прежнему видит подключающиеся IP, и, поскольку у него есть физический доступ плюс внеполосное управление (IPMI / BMC, отдельный контроллер со своим сетевым каналом), до работающей RAM всё равно можно добраться - например, через cold-boot или DMA-атаку. Выделенный сервер повышает трудозатраты, но не отменяет необходимости доверять хостеру.

Шаг 1: Перенесите журнал systemd в RAM

Сначала скажите journald хранить журнал только в памяти, чтобы он никогда не попадал на диск и исчезал при каждой перезагрузке. Откройте его конфиг:

nano /etc/systemd/journald.conf

В секции [Journal] задайте эти две строки (уберите ведущий #, если он есть):

[Journal]
Storage=volatile
RuntimeMaxUse=16M

Примените - и теперь журнал живёт в /run (RAM), ограничен 16 МБ и исчезает при перезагрузке:

systemctl restart systemd-journald

Шаг 2: Поместите весь /var/log в RAM

Журнал теперь в памяти, но несколько инструментов всё ещё роняют текстовые файлы в /var/log - rsyslog, тот самый auth.log, который фиксирует входы по SSH, логи обновлений apt и записи входов wtmp/btmp/lastlog (которые переписываются при каждом входе, так что простое удаление ничего не даёт). Чистое универсальное решение - смонтировать весь каталог /var/log как tmpfs - файловую систему в RAM, которая стирается при каждой перезагрузке. Добавьте одну строку в /etc/fstab:

echo "tmpfs /var/log tmpfs defaults,noatime,nosuid,nodev,mode=0755,size=50M 0 0" >> /etc/fstab

Теперь всё в /var/log живёт в памяти и очищается при каждой перезагрузке. Перезагрузитесь один раз, чтобы работающие службы заново открыли свои лог-файлы внутри нового RAM-диска:

reboot
Одна оговорка: поскольку /var/log стирается при перезагрузке, любому софту, который вы добавите позже и который ждёт собственную подпапку для логов (например, веб-сервер), может понадобиться пересоздание этой папки. Для машины, которая гоняет только ваш VPN, это не проблема.

Шаг 3: Отключите swap

Если на сервере включён swap, ядро может при нехватке памяти вытолкнуть страницы RAM - возможно, включая живые ключи - на диск. На безлоговой машине вы хотите, чтобы память оставалась в памяти. Отключите swap сейчас и держите его выключенным при перезагрузках:

swapoff -a
sed -i.bak '/\sswap\s/s/^/#/' /etc/fstab

Многие небольшие VPS поставляются вообще без swap - в этом случае swapoff -a просто ничего не делает, и это нормально.

Шаг 4: Отключите core dumps

Если программа аварийно завершается, systemd-coredump может записать core dump - снимок памяти этой программы - на диск в /var/lib/systemd/coredump/. Отключите это:

mkdir -p /etc/systemd/coredump.conf.d
printf '[Coredump]Storage=none' > /etc/systemd/coredump.conf.d/99-nolog.conf
systemctl daemon-reload

Шаг 5: Отключите историю оболочки и редакторов

Ваша оболочка сохраняет каждую команду в ~/.bash_history, а редакторы оставляют свои следы (~/.viminfo, ~/.lesshst). Направьте их все в /dev/null, чтобы ничего никогда не записывалось. Для текущего пользователя:

ln -sf /dev/null ~/.bash_history
ln -sf /dev/null ~/.viminfo
ln -sf /dev/null ~/.lesshst

Затем запретите bash хранить файл истории для каждой login-оболочки в системе, чтобы охватить и другие учётные записи:

printf 'unset HISTFILEexport HISTSIZE=0' > /etc/profile.d/00-nohistory.sh

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

Шаг 6: Оставьте защиту от вторжений включённой - вы не слепы

Распространённый миф - что отключение логов оставляет вас беззащитным. Это вовсе не обязательно. fail2ban - инструмент, который банит IP после серии неудачных входов - может читать прямо из журнала systemd, который теперь живёт в RAM. Так вы сохраняете автоматическую защиту от перебора, при этом ничего не записывая на диск. Установите его:

apt install fail2ban -y

Направьте его на журнал, создав /etc/fail2ban/jail.local с содержимым:

[DEFAULT]
backend = systemd

Затем перезапустите его и вдобавок закройте очевидные двери:

systemctl restart fail2ban
  • Только SSH-ключи. Отключите вход по паролю в /etc/ssh/sshd_config (PasswordAuthentication no) и перезапустите ssh. Ключ нельзя угадать так, как пароль.
  • Файрвол закрыт по умолчанию. Держите ufw так, чтобы он пропускал только SSH и ваш порт WireGuard (51820/udp), всё остальное запрещено.
  • Автоматические обновления безопасности. Установите unattended-upgrades; его логи теперь живут в размещённом в RAM /var/log, так что они тоже исчезают при перезагрузке.
Порядок важен: добейтесь работы входа по ключу и проверьте его во втором терминале до того, как что-либо закручивать. Если вы заблокируете себе доступ, логов для отладки у вас теперь очень мало.

Шаг 7: Проверьте, что ничего не сохраняется

Перезагрузитесь ещё раз, войдите снова и проверьте четыре вещи, которые вы изменили:

mount | grep /var/log
swapon --show
journalctl --no-pager | wc -l
ls -lh /var/log

Вы должны увидеть /var/log, смонтированный как tmpfs, отсутствие активного swap, почти пустой журнал и свежий, почти пустой /var/log. С этого момента сервер практически ничего не хранит на диске о том, что через него проходит.

Когда стоит оставить часть логов

Безлоговость подходит не всем автоматически. Если сервер делает больше, чем гоняет ваш личный VPN - хостит сайт, обрабатывает чужой трафик - вам может понадобиться немного истории, чтобы замечать проблемы. Хорошая новость: настройка выше и так держит краткосрочные логи в RAM (в журнале и в tmpfs /var/log), так что вы получаете видимость в рамках сессии, при этом ничего не записывая на диск постоянно. Если нужно больше - увеличьте RuntimeMaxUse в Шаге 1 или size у tmpfs в Шаге 2. Настраивайте агрессивность под то, как вы на самом деле используете машину.

Теги: vps no logs privacy hardening self-hosted wireguard linux anonymity