Все руководства
Начало работы
VPS
- Операционные системы для VPS
- Снапшоты VPS и резервные копии на внешней площадке
- Как развернуть собственный VPN на VPS с помощью WireGuard
- Как запустить ретранслятор, мост или onion-сервис Tor на VPS
- Как самостоятельно развернуть BTCPay Server на VPS
- Как запустить узел Bitcoin или Monero на VPS
Выделенные серверы
Windows RDP
Windows Server 2019 , 2022 или 2025 противWindows 10 и 11 для RDP- Как подключиться к серверу Windows RDP с любого устройства
GPU-серверы
Безопасность
На этой странице
- Установка обновлений и настройка автоматических обновлений безопасности
- Создание пользователя с правами sudo
- Вход по SSH-ключу
- Отключение входа по паролю и под root
- Смена порта SSH (необязательно)
- Настройка брандмауэра
- Защита от подбора паролей с помощью fail2ban
- Синхронизация времени
- Аудит с помощью Lynis
- Резервные копии — заранее
- Замечания для ретрансляторов Tor и VPN-серверов
- Если сервер взломан
Вскоре после появления в сети на новый сервер начинают поступать автоматические попытки входа. Пройдите этот чек-лист по порядку в течение первого часа. Команды приведены для Debian и Ubuntu, а там, где AlmaLinux и Rocky Linux отличаются, даны примечания. Пока пользователь с правами sudo не создан, выполняйте команды от имени root; замените aliceSERVER_IP
Установка обновлений и настройка автоматических обновлений безопасности
apt update
apt full-upgrade -y
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
В диалоговом окне ответьте утвердительно. Будет создан файл /etc/apt/apt.conf.d/20auto-upgrades, после чего обновления безопасности будут устанавливаться ежедневно. Чтобы сервер автоматически перезагружался, когда этого требует обновление, например при установке нового ядра, задайте в /etc/apt/apt.conf.d/50unattended-upgrades следующие строки:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
В AlmaLinux и Rocky Linux установите upgrade_type = securityapply_updates = yes/etc/dnf/automatic.conf
dnf upgrade --refresh -y
dnf install -y dnf-automatic
systemctl enable --now dnf-automatic.timer
Если ядро было обновлено, перезагрузите сервер.
Создание пользователя с правами sudo
При работе под root любая опечатка превращается в изменение всей системы, к тому же root — первая учётная запись, которую пробуют злоумышленники. Создайте личную учётную запись с правами sudo:
apt install -y sudo
adduser alice
usermod -aG sudo alice
В AlmaLinux и Rocky Linux группа администраторов называется wheel
useradd -m -G wheel alice
passwd alice
Вход по SSH-ключу
На своём компьютере создайте пару ключей, защищённую парольной фразой, скопируйте открытый ключ в новую учётную запись, затем войдите с его помощью и проверьте, что sudo работает:
ssh-keygen -t ed25519 -C "alice laptop"
ssh-copy-id alice@SERVER_IP
ssh alice@SERVER_IP
sudo -v
В Windows вместо ssh-copy-id
Отключение входа по паролю и под root
Продолжайте, только когда вход по ключу и sudo заработают для нового пользователя. Создайте файл /etc/ssh/sshd_config.d/00-hardening.conf со следующими строками:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
X11Forwarding no
AllowUsers alice
Префикс 00-sshd_config.dsshd_config50-cloud-init.conf01-permitrootlogin.confAllowUsers
sshd -t
sshd -T | grep -Ei 'permitrootlogin|passwordauthentication|kbdinteractive|allowusers'
systemctl restart ssh
В AlmaLinux и Rocky Linux служба называется sshdalice
Смена порта SSH (необязательно)
Нестандартный порт избавляет логи от большей части шума, создаваемого ботами, но рубежом защиты не является: сканеры всё равно его находят, в каждой команде ssh, scp и rsync придётся указывать порт, а некоторые сети блокируют необычные порты. При входе только по ключам вполне можно оставить порт 22. Если всё же хотите его сменить, добавьте Port 2222
ufw allow 2222/tcp
systemctl restart ssh
В
systemctl daemon-reload
systemctl restart ssh.socket
В AlmaLinux и Rocky Linux новый порт нужно также разрешить в SELinux и firewalld:
dnf install -y policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 2222
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
systemctl restart sshd
Прежде чем удалять правило для порта 22, проверьте новый порт из нового терминала:
ssh -p 2222 alice@SERVER_IP
Настройка брандмауэра
ufw в Debian и Ubuntu
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw limit 22/tcp
ufw allow 443/tcp
ufw enable
ufw status verbose
limit
Собственные правила nftables
Для полного контроля напишите собственный набор правил в /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
iif "lo" accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport { 22, 443 } accept
}
}
Проверьте файл, затем примените правила сразу и включите их загрузку при каждом старте системы:
nft -c -f /etc/nftables.conf
systemctl enable --now nftables
Используйте либо ufw, либо собственный файл nftables, но не оба сразу. flush ruleset
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Защита от подбора паролей с помощью fail2ban
apt install -y fail2ban python3-systemd
Создайте /etc/fail2ban/jail.localignoreipport
[DEFAULT]
backend = systemd
bantime = 1h
ignoreip = 127.0.0.1/8 ::1 YOUR_IP
[sshd]
enabled = true
port = 22
systemctl enable fail2ban
systemctl restart fail2ban
fail2ban-client status sshd
Бэкенд systemd/var/log/auth.log
fail2ban-client set sshd unbanip IP_ADDRESS
В AlmaLinux и Rocky Linux fail2ban устанавливается из EPEL:
dnf install -y epel-release
dnf install -y fail2ban
Если SSH принимает только ключи, fail2ban в основном уменьшает шум в логах; важнее он для сервисов, которые принимают пароли.
Синхронизация времени
timedatectl set-ntp true
timedatectl set-timezone UTC
timedatectl
Найдите строку System clock synchronized: yes. Если set-ntp
apt install -y systemd-timesyncd
В AlmaLinux и Rocky Linux chrony включён по умолчанию. Точное время важно для TLS, одноразовых паролей, сопоставления логов и Tor; при UTC логи нескольких серверов легко сравнивать между собой.
Аудит с помощью Lynis
apt install -y lynis
lynis audit system
Lynis проверяет сотни настроек и выводит предупреждения, рекомендации и индекс защищённости (hardening index). Подробности записываются в /var/log/lynis.log/var/log/lynis-report.dat
Резервные копии — заранее
Усиление защиты снижает риск, а резервные копии позволяют восстановиться после инцидента. На VPS сделайте снапшот, когда пройдёте этот чек-лист, и настройте зашифрованное резервное копирование на внешнюю площадку с помощью restic или Borg, как описано в руководстве по снапшотам VPS и резервным копиям на внешней площадке. Сделайте репозиторий резервных копий доступным только для добавления, чтобы злоумышленник, проникший на сервер, не смог удалить историю копий.
Замечания для ретрансляторов Tor и VPN-серверов
Ретрансляторы Tor
- Полная настройка для каждой роли описана в нашем руководстве по запуску ретранслятора, моста или onion-сервиса Tor.
- Ретрансляторы, не являющиеся выходными узлами, и мосты лишь передают зашифрованный трафик внутри сети Tor; явно зафиксируйте это строкой
вExitRelay 0 ./etc/tor/torrc - С выходными узлами всё иначе: их трафик к сайтам выглядит так, будто исходит с вашего IP-адреса, и на него поступают жалобы на нарушения. Прежде чем запускать выходной узел, прочитайте правила допустимого использования. Исходящий порт 25 по умолчанию закрыт.
- Устанавливайте tor из репозитория Tor Project и поручите его обновление unattended-upgrades; точные строки источников (origin) для Debian и Ubuntu приведены в руководстве Tor Project по ретрансляторам.
- Открывайте в брандмауэре только ORPort, а ControlPort и порт метрик, если они есть, держите на localhost.
- Трафик безлимитный в рамках принципа добросовестного использования. Если вы ожидаете постоянно высокий трафик, ограничьте его параметрами
иRelayBandwidthRate илиRelayBandwidthBurst вAccountingMax .torrc - Запускайте ретранслятор на отдельном сервере: адреса ретрансляторов публичны, и многие сервисы их блокируют.
VPN-серверы WireGuard
Полная настройка — от ключей до клиентов на телефонах — описана в руководстве о развёртывании собственного VPN с помощью WireGuard. Вкратце: откройте порт WireGuard, включите пересылку IP-пакетов, разрешите пересылку только из туннеля на публичный интерфейс (его имя можно узнать командой ip -br addr
ufw allow 51820/udp
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf
sysctl --system
ufw route allow in on wg0 out on eth0
chmod 600 /etc/wireguard/wg0.conf
- Добавьте NAT для диапазона адресов туннеля, а если вы маршрутизируете IPv6, включите также пересылку IPv6.
- Трафик пользователей вашего VPN выходит в интернет с IP-адреса вашего сервера. По правилам допустимого использования спам, сканирование и атаки с их стороны считаются исходящими с вашего сервера, поэтому давайте доступ только тем, кому доверяете.
- Сам WireGuard не ведёт логов подключений. Если вы обещаете пользователям отсутствие логов, проверьте также journald и журналирование брандмауэра.
Если сервер взломан
Типичные признаки: неизвестные процессы, нагружающие CPU, неожиданный исходящий трафик, новые учётные записи или SSH-ключи либо наше уведомление о нарушении.
- Изолируйте сервер. Первым делом остановите исходящие атаки: заблокируйте исходящий трафик в брандмауэре или выключите сервер. На атаки из нашей сети мы реагируем незамедлительно согласно положениям о нулевой терпимости из правил допустимого использования, даже если сервер был захвачен злоумышленником.
- Сохраните доказательства. На VPS сделайте снапшот, прежде чем что-либо менять, и скопируйте логи с сервера.
- Проведите расследование с помощью команд ниже: проверьте входы в систему, открытые порты, процессы, задания cron, службы, SSH-ключи root и учётные записи с идентификатором пользователя 0.
- Смените все секреты, которые хранились на сервере: пароли, SSH-ключи (новые создавайте на чистой машине), токены доступа, пароли баз данных и закрытые ключи TLS.
- Восстановите сервер с нуля. Переустановите систему из чистого шаблона, восстановите данные из резервной копии, сделанной до взлома, пройдите этот чек-лист и закройте брешь, которой воспользовался злоумышленник, например устаревший плагин, слабый пароль или открытый наружу сервис.
- Сообщите нам. Если у вас выделенный или GPU-сервер, ответьте в тикете на наше уведомление о нарушении: расскажите, что вы обнаружили и исправили, или попросите о помощи.
last -a
ss -tulpn
ps auxf
ls -la /etc/cron.d /var/spool/cron
systemctl list-units --type=service --state=running
cat /root/.ssh/authorized_keys
awk -F: '$3 == 0' /etc/passwd
Клиенты с выделенными и GPU-серверами могут открыть тикет в личном кабинете, указав IP-адрес сервера и то, что они уже пробовали сделать. Целевой срок первого ответа — менее 12 часов. Для всех остальных серверов используйте действия с сервером на его странице, руководства и страницу статуса сети.