# Управление брандмауэром облачного сервера и безопасностью

Source: https://support.kapsulehost.com/ru-ru/cloud-servers-firewall

Каждый сервер KapsuleHost поставляется с управляемым брандмауэром, который по умолчанию отклоняет входящий трафик, а также защитой от перебора паролей, веб-приложением брандмауэра и автоматическим патчингом безопасности, всем управляется с одной страницы в KPanel.

Значения по умолчанию выбраны так, чтобы новый сервер был в безопасности до того, как вы его касались. То, что вы добавляете, обычно это только порты, которые нужны вашему приложению. Это руководство описывает всю страницу **Управление сервером**, поскольку брандмауэр это одна из её частей, а остальные разделы это то, что избавляет вас от необходимости использовать брандмауэр в первую очередь.

## Открытие страницы управления

1. Войдите в [KPanel](https://kpanel.kapsulehost.com).
2. Нажмите **Облачные серверы** на левой боковой панели, затем нажмите на ваш сервер.
3. Нажмите **Management** в кнопках действий в верхней части страницы.

Прямой адрес это `/cloud-servers/<server-id>/management`. На странице описано: "Брандмауэр, патчи ОС, fail2ban и ModSecurity. Изменения применяются через SSH в течение секунд."

![Страница управления сервером для облачного сервера в KPanel](https://support.kapsulehost.com/help/screenshots/cloud-servers-firewall.d05a26ce.webp)

> **Note:** Если баннер гласит "Прямое применение недоступно. Изменения будут сохранены при следующем запуске подготовки, но не вступят в силу немедленно", панель не может достичь сервер прямо сейчас. Ваши параметры всё ещё сохранены, они просто ещё не применены. Проверьте, что сервер работает и доступен.

## Политика брандмауэра по умолчанию

В разделе **Брандмауэр (UFW)** политика указана в одной строке: "Default-deny inbound. SSH (22) is always open. App-stack ports open automatically. Add custom rules below."

На практике это означает:

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

Без пользовательских правил этот раздел показывает "No custom rules. Defaults: SSH + app-stack ports." Это здоровое состояние, а не отсутствующая конфигурация.

## Добавление пользовательского правила

Добавьте правило, когда вы запускаете что-то на порте, который политика по умолчанию не охватывает: приложение Node на 3000, базу данных, к которой вам нужен прямой доступ на 5432, игровой или медиа-сервер на UDP-порту.

1. Откройте раздел **Брандмауэр (UFW)**.
2. Введите номер **Port** в первое поле. Допустимые значения от 1 до 65535.
3. Выберите **TCP** или **UDP**.
4. Выберите **Allow** или **Deny**.
5. Нажмите **Add**.

Правило появляется в списке с значком **ALLOW** или **DENY**, портом и протоколом, например `3000/tcp`. Оно отправляется на сервер через соединение управления в течение секунд.

Чтобы удалить правило, нажмите **X** в конце его строки. Удаление правила **Allow** немедленно закрывает этот порт.

> **Warning:** Открытие порта базы данных всему интернету это один из самых распространённых способов компрометации сервера. Перед тем как разрешить 3306, 5432, 6379 или 27017, спросите себя, может ли то, что подключается, достичь базу данных через петлевой интерфейс собственного сервера или приватную сеть. Если это действительно должно быть доступно снаружи, убедитесь, что сам сервис требует надёжную аутентификацию и шифрование.

> **Tip:** Добавьте правило сначала, затем запустите сервис. Сервис, который запускается за закрытым портом, выглядит сломанным точно так же, как сервис, который не запустился, и вы можете потратить много времени на отладку неправильного уровня.

## Стеки приложений

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

Распознаваемые стеки это WordPress, WooCommerce, Ghost, Nextcloud, GitLab, Mattermost, Generic web и No app stack. В разделе это объясняется как: "The hardening preset is tuned to your app. Installing an app from the marketplace auto-sets this."

Стек влияет на то, какие порты открываются автоматически и как настраиваются другие защиты, наиболее заметно в fail2ban.

## fail2ban

fail2ban следит за попытками аутентификации и блокирует адреса, которые продолжают не удаваться. Он включён по умолчанию, и на странице описано как: "Bans IPs that brute-force SSH. For WordPress sites, adds wp-login.php protection too."

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

## ModSecurity, веб-приложение брандмауэра

ModSecurity проверяет HTTP-запросы против OWASP Core Rule Set и отмечает те, которые выглядят как атаки. На сервере KapsuleHost он начинает в режиме обнаружения только: "OWASP Core Rule Set in DetectionOnly mode by default. Logs suspicious traffic without blocking; flip to active mode in your server once tuned."

Обнаружение только это правильная отправная точка. Core Rule Set это подробный, и на реальном приложении некоторые законные запросы будут соответствовать правилу. Запустите его в режиме обнаружения в течение некоторого времени, прочитайте журналы, выясните, какие правила срабатывают ваш трафик, и только затем переключитесь на блокировку на сервере.

> **Warning:** Включение блокировки без предварительной настройки может сломать ваш сайт. Отправка форм с насыщенным текстом, загрузка файлов и API-клиенты с необычными полезными нагрузками это обычные жертвы. Проверьте ваши журналы перед переключением.

## Автопатчинг ОС

Обновления безопасности применяются для вас. В разделе описана защита: "Security updates applied automatically. Snapshot-protected: a server snapshot is taken before each run, with automatic rollback if the server becomes unreachable after reboot."

Два параметра находятся под переключателем:

- **Allow automatic reboot when a kernel update needs it (only during quiet hours below).** Обновления ядра вступают в силу только после перезагрузки. Если вы оставите это выключённым, патчи ядра устанавливаются, но не активны, пока вы не перезагрузитесь сами.
- **Quiet window (UTC)**, начальный и конечный час. Перезагрузки происходят только внутри него. Установите его на самые тихие часы для вашей аудитории, и помните, что поле находится в UTC, а не в вашем местном времени.

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

### История патчинга и запуск патчинга сейчас

Раздел **История патчинга** перечисляет каждый запуск со статусом RUNNING, SUCCESS, ROLLED_BACK, FAILED или SKIPPED, количество обновленных пакетов, была ли перезагрузка сервера и время его запуска.

Чтобы применить патчинг немедленно вместо ожидания расписания, нажмите **Запустить патчинг сейчас**. Подтверждение гласит: "A snapshot is created first. The server stays online except for a brief reboot if a kernel update needs it."

Запись ROLLED_BACK означает, что защита сработала: сервер не вернулся в нормальное состояние после перезагрузки, поэтому снимок перед патчингом был восстановлен. Смотрите [Снимки облачного сервера](https://support.kapsulehost.com/ru-ru/cloud-servers-snapshots) для того, как работают эти снимки.

## Разумная базовая конфигурация

Для большинства серверов это вся конфигурация безопасности:

| Параметр | Рекомендуемое |
|---|---|
| Брандмауэр | Включён, правила по умолчанию, плюс только порты, которые нужны вашему приложению |
| fail2ban | Включён |
| ModSecurity | Включён, обнаружение только, пока вы не прочитаете журналы |
| Автопатчинг ОС | Включён, с разрешением перезагрузок в тихом окне |
| Аутентификация SSH | Ключи, не пароли |

Последняя строка не на этой странице, но имеет значение больше, чем остальное вместе взятое. Смотрите [Подключение к облачному серверу с помощью SSH](https://support.kapsulehost.com/ru-ru/cloud-servers-ssh-connect).

## Устранение неполадок

**"Could not load management config."** Панель не смогла прочитать параметры для этого сервера. Обновите и проверьте, что сервер существует и подготовлен.

**"Port must be 1-65535."** Поле порта принимает целое число в этом диапазоне. Диапазоны и имена сервисов здесь не принимаются.

**Мое правило сохранилось, но ничего не изменилось.** Ищите баннер "Live apply unavailable". Если он отображается, изменение сохранено, но ещё не отправлено на сервер.

**Я могу достичь мой сервис из одной сети, но не из другой.** Это обычно ваш собственный исходящий брандмауэр, а не сервер. Протестируйте из другого соединения перед изменением правил здесь.

**Запуск патчинга показывает FAILED.** Прочитайте сообщение об ошибке на строке. Полный диск это наиболее распространённая причина. Освободите место и нажмите **Запустить патчинг сейчас**.

**Законный трафик начал блокироваться.** Если вы переключили ModSecurity в режим блокировки, верните его в режим обнаружения только, прочитайте журналы и определите правило перед повторной попыткой.

Если правило брандмауэра отказывается применяться или вы заблокированы в сервисе, который вы разрешили, отправьте письмо на [support@kapsulehost.com](mailto:support@kapsulehost.com) с названием сервера, портом и тем, что вы ожидаете достичь.
