---
title: "Чек-лист защиты Linux-сервера: первый час после запуска"
description: "Чек-лист усиления защиты Linux-сервера на первый час: обновления, пользователь sudo, SSH-ключи, брандмауэр, fail2ban, синхронизация времени, аудит и резервные копии."
url: https://offshoreserv.com/ru/docs/security/hardening
lang: ru
updated: 2026-09-26
source: HTML page at the url above (canonical); this is its Markdown version
---

База знаний · Безопасность

# Усиление защиты Linux-сервера: первый час

Чек-лист по усилению защиты Linux-серверов на первый час: обновления, пользователь с правами sudo, SSH-ключи, брандмауэр, fail2ban, синхронизация времени, аудит с помощью Lynis, резервное копирование и реагирование на инциденты.

Обновлено 26 сентября 2026 г.7 мин чтения

В этом руководстве

- Прежде всего установите обновления системы и включите автоматическую установку обновлений безопасности.
- Входите под пользователем с правами sudo по SSH-ключу, затем отключите вход под root и вход по паролю.
- Разрешите с помощью ufw или nftables только нужные порты, а попытки подбора паролей пусть блокирует fail2ban.
- Если сервер взломан, изолируйте его, сохраните доказательства, смените все секреты и восстановите сервер с нуля из чистого шаблона.

Безопасность12 разделов

Вскоре после появления в сети на новый сервер начинают поступать автоматические попытки входа. Пройдите этот чек-лист по порядку в течение первого часа. Команды приведены для Debian и Ubuntu, а там, где AlmaLinux и Rocky Linux отличаются, даны примечания. Пока пользователь с правами sudo не создан, выполняйте команды от имени root; замените `alice` на своё имя пользователя, а `SERVER_IP` — на адрес своего сервера.

> Не закрывайте текущий SSH-сеанс, пока не убедитесь, что новый вход работает, и заранее определите запасной способ входа: консоль в личном кабинете для VPS или консоль IPMI для выделенного сервера.

## Установка обновлений и настройка автоматических обновлений безопасности

```
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 установите dnf-automatic, задайте `upgrade_type = security` и `apply_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` используйте команду PowerShell из [руководства по началу работы](https://offshoreserv.com/ru/docs/getting-started#add-ssh-key).

## Отключение входа по паролю и под 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 использует первое прочитанное значение, а файлы из `sshd_config.d` он читает в алфавитном порядке раньше остальной части `sshd_config`. Поэтому ваш файл имеет приоритет над `50-cloud-init.conf` в облачных образах (этот файл может снова включить вход по паролю) и над `01-permitrootlogin.conf` в системах семейства Red Hat. `AllowUsers` запрещает вход всем учётным записям, которых нет в списке. Проверьте синтаксис и значения, которые будут применены, затем перезапустите SSH:

```
sshd -t
sshd -T | grep -Ei 'permitrootlogin|passwordauthentication|kbdinteractive|allowusers'
systemctl restart ssh
```

В AlmaLinux и Rocky Linux служба называется `sshd`. Существующие сеансы остаются открытыми. Из нового терминала убедитесь, что `alice` по-прежнему может войти, а root получает отказ.

## Смена порта SSH (необязательно)

Нестандартный порт избавляет логи от большей части шума, создаваемого ботами, но рубежом защиты не является: сканеры всё равно его находят, в каждой команде ssh, scp и rsync придётся указывать порт, а некоторые сети блокируют необычные порты. При входе только по ключам вполне можно оставить порт 22. Если всё же хотите его сменить, добавьте `Port 2222` в свой файл с настройками усиления защиты, откройте порт и перезапустите SSH:

```
ufw allow 2222/tcp
systemctl restart ssh
```

В Ubuntu 24.04 SSH запускается через сокет systemd, поэтому там вместо перезапуска выполните эти две команды:

```
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` разрешает SSH, но блокирует адрес, который открывает шесть и более подключений в течение 30 секунд. Если вы меняли порт SSH, укажите свой и открывайте только то, что нужно вашим сервисам. Соответствующие правила для IPv6 ufw добавляет автоматически.

### Собственные правила nftables

Для полного контроля напишите собственный набор правил в `/etc/nftables.conf`. Этот набор отбрасывает весь входящий трафик, кроме ответного трафика, loopback-интерфейса, ICMP (без которого не работает IPv6), SSH и HTTPS:

```
#!/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` удаляет в том числе правила, созданные другими программами, поэтому не используйте его на хостах с Docker. В AlmaLinux и Rocky Linux по умолчанию включён firewalld; сервис в нём открывается так:

```
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
```

## Защита от подбора паролей с помощью fail2ban

```
apt install -y fail2ban python3-systemd
```

Создайте `/etc/fail2ban/jail.local`. Укажите свой IP-адрес в `ignoreip`, чтобы не заблокировать самого себя, и задайте в `port` свой порт SSH:

```
[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` читает журнал systemd, поэтому работает и на свежеустановленных системах Debian 12 и 13, где нет файла `/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` сообщает, что 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`. Относитесь к результату как к списку задач, а не как к оценке, которую нужно довести до максимума. В AlmaLinux и Rocky Linux Lynis доступен в EPEL.

## Резервные копии — заранее

Усиление защиты снижает риск, а резервные копии позволяют восстановиться после инцидента. На VPS сделайте снапшот, когда пройдёте этот чек-лист, и настройте зашифрованное резервное копирование на внешнюю площадку с помощью restic или Borg, как описано в руководстве [по снапшотам VPS и резервным копиям на внешней площадке](https://offshoreserv.com/ru/docs/vps/snapshots). Сделайте репозиторий резервных копий доступным только для добавления, чтобы злоумышленник, проникший на сервер, не смог удалить историю копий.

## Замечания для ретрансляторов Tor и VPN-серверов

### Ретрансляторы Tor

- Полная настройка для каждой роли описана в нашем руководстве [по запуску ретранслятора, моста или onion-сервиса Tor](https://offshoreserv.com/ru/docs/vps/tor-relay).
- Ретрансляторы, не являющиеся выходными узлами, и мосты лишь передают зашифрованный трафик внутри сети Tor; явно зафиксируйте это строкой `ExitRelay 0` в `/etc/tor/torrc`.
- С выходными узлами всё иначе: их трафик к сайтам выглядит так, будто исходит с вашего IP-адреса, и на него поступают жалобы на нарушения. Прежде чем запускать выходной узел, прочитайте [правила допустимого использования](https://offshoreserv.com/ru/acceptable-use-policy). Исходящий порт 25 по умолчанию закрыт.
- Устанавливайте tor из репозитория Tor Project и поручите его обновление unattended-upgrades; точные строки источников (origin) для Debian и Ubuntu приведены в [руководстве Tor Project по ретрансляторам](https://community.torproject.org/relay/setup/guard/debian-ubuntu/updates/).
- Открывайте в брандмауэре только ORPort, а ControlPort и порт метрик, если они есть, держите на localhost.
- Трафик безлимитный в рамках принципа добросовестного использования. Если вы ожидаете постоянно высокий трафик, ограничьте его параметрами `RelayBandwidthRate` и `RelayBandwidthBurst` или `AccountingMax` в `torrc`.
- Запускайте ретранслятор на отдельном сервере: адреса ретрансляторов публичны, и многие сервисы их блокируют.

### VPN-серверы WireGuard

Полная настройка — от ключей до клиентов на телефонах — описана в руководстве [о развёртывании собственного VPN с помощью WireGuard](https://offshoreserv.com/ru/docs/vps/wireguard-vpn). Вкратце: откройте порт WireGuard, включите пересылку IP-пакетов, разрешите пересылку только из туннеля на публичный интерфейс (его имя можно узнать командой `ip -br addr`) и сделайте конфигурацию доступной для чтения только root:

```
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-ключи либо наше уведомление о нарушении.

1. **Изолируйте сервер.** Первым делом остановите исходящие атаки: заблокируйте исходящий трафик в брандмауэре или выключите сервер. На атаки из нашей сети мы реагируем незамедлительно согласно положениям о нулевой терпимости из правил допустимого использования, даже если сервер был захвачен злоумышленником.
2. **Сохраните доказательства.** На VPS сделайте снапшот, прежде чем что-либо менять, и скопируйте логи с сервера.
3. **Проведите расследование** с помощью команд ниже: проверьте входы в систему, открытые порты, процессы, задания cron, службы, SSH-ключи root и учётные записи с идентификатором пользователя 0.
4. **Смените все секреты**, которые хранились на сервере: пароли, SSH-ключи (новые создавайте на чистой машине), токены доступа, пароли баз данных и закрытые ключи TLS.
5. **Восстановите сервер с нуля.** [Переустановите систему из чистого шаблона](https://offshoreserv.com/ru/docs/vps/operating-systems#reinstall), восстановите данные из резервной копии, сделанной до взлома, пройдите этот чек-лист и закройте брешь, которой воспользовался злоумышленник, например устаревший плагин, слабый пароль или открытый наружу сервис.
6. **Сообщите нам.** Если у вас выделенный или 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-серверами могут открыть тикет в [личном кабинете](https://offshoreserv.com/ru/account/support), указав IP-адрес сервера и то, что они уже пробовали сделать. Целевой срок первого ответа — менее 12 часов. Для всех остальных серверов используйте действия с сервером на его странице, [руководства](https://offshoreserv.com/ru/docs) и страницу [статуса сети](https://offshoreserv.com/ru/status).

---

OffshoreServ — офшорный хостинг-провайдер: VPS, выделенные серверы, Windows RDP и GPU-серверы в семи юрисдикциях (Исландия, Швейцария, Молдова, Румыния, Нидерланды, Болгария и Малайзия), оплата только криптовалютой (Bitcoin, Ethereum, Monero, Tether (USDT) и Solana), без проверки личности (без KYC).

Prices and plans: https://offshoreserv.com/ru/pricing · Answers: https://offshoreserv.com/ru/faq · Every page: https://offshoreserv.com/llms.txt
