MAATRIX / Блог / Nextcloud: предупреждения безопасности — причины и решение

Nextcloud: предупреждения безопасности — причины и решение

Nextcloud: предупреждения безопасности — причины и решение

MAATRIX

Заходите в админку Nextcloud, а раздел «Обзор» пестрит жёлтыми и красными предупреждениями: нет заголовков безопасности, не настроен HSTS, не работают .well-known-ссылки, отсутствует регион по умолчанию. Nextcloud предупреждения безопасности выглядят пугающе, но почти все они — про недонастроенный веб-сервер, а не про реальную дыру. Разберём каждое типичное предупреждение и закроем их правильными настройками nginx и occ, чтобы «Обзор» стал зелёным.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Как читать раздел проверки безопасности

Nextcloud проверяет своё окружение и делит замечания на уровни: красные — важные, жёлтые — рекомендации. Большинство касается заголовков HTTP и настроек прокси, то есть решается в конфиге веб-сервера. Прежде чем править, посмотрите полный список замечаний и текущую конфигурацию.

sudo -u www-data php occ setupchecks
sudo -u www-data php occ config:list system

Полезно понимать: предупреждение — это не «вас взломали», а «здесь стоит усилить защиту» или «эта настройка мешает Nextcloud работать корректно». Многие замечания появляются сразу после установки за обратным прокси и уходят одной-двумя правками. Ниже — самые частые предупреждения и точные шаги для каждого. Проходите их по списку из вашей админки, применяя ровно то, что относится к вашему случаю.

Стоит различать замечания по природе, потому что чинятся они в разных местах. Одни относятся к веб-серверу и правятся в конфиге nginx — это всё, что про заголовки HTTP и служебные пути. Другие относятся к самому Nextcloud и правятся через occ или config.php — регион, доверенные прокси, миграции базы. Третьи касаются окружения в целом — версия PHP, доступное обновление. Если держать в голове эту тройку, список перестаёт пугать: вы сразу понимаете, куда идти за каждой конкретной правкой, и не ищете настройку заголовков внутри Nextcloud или наоборот.

Заголовки безопасности HTTP

Частое замечание — отсутствие рекомендуемых заголовков: Strict-Transport-Security, X-Content-Type-Options, Referrer-Policy и других. Их задаёт веб-сервер, и Nextcloud проверяет их наличие. Добавьте заголовки в конфиг nginx для сервера Nextcloud.

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Robots-Tag "noindex, nofollow" always;

Ключевой нюанс — параметр always: без него заголовки не добавляются к ответам с ошибками, и Nextcloud продолжает жаловаться. HSTS (Strict-Transport-Security) заслуживает отдельного внимания: он заставляет браузер всегда ходить только по HTTPS, но включать его стоит, лишь когда HTTPS настроен надёжно и вы не планируете возвращаться на HTTP, — откат потом затруднён. После добавления заголовков перезагрузите nginx и обновите проверку.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под Nextcloud

Ссылки .well-known (CalDAV, CardDAV, webfinger)

Предупреждение про .well-known/caldav, .well-known/carddav, nodeinfo или webfinger означает, что эти служебные пути не отдают правильный редирект. Они нужны для автонастройки календарей, контактов и федерации. Лечится это location-блоками в nginx, которые перенаправляют служебные пути в нужные обработчики Nextcloud.

location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav  { return 301 /remote.php/dav/; }
location = /.well-known/webfinger  { return 301 /index.php/.well-known/webfinger; }
location = /.well-known/nodeinfo   { return 301 /index.php/.well-known/nodeinfo; }

Официальный пример конфигурации nginx для Nextcloud уже содержит эти правила — если вы настраивали сервер по нему, предупреждение не появится. Оно почти всегда возникает у тех, кто писал конфиг сам и упустил блоки .well-known. Добавьте их, перезагрузите nginx — замечание исчезнет, а клиенты календарей и контактов начнут автоматически находить настройки.

Регион телефонов и дефолтный регион

Жёлтое замечание «default phone region not set» означает, что не задан регион по умолчанию для распознавания телефонных номеров без международного префикса. Без него Nextcloud не может корректно обрабатывать локальные номера в контактах. Это простая правка через occ.

sudo -u www-data php occ config:system:set default_phone_region --value RU

Укажите ISO-код вашей страны (RU, GB, US и т.д.). Аналогично стоит проверить настройки локали и часового пояса, чтобы даты и время отображались корректно. Эти замечания не про безопасность в прямом смысле, но Nextcloud выносит их в общий список проверки окружения, и убрать их — минутное дело. После установки значения обновите страницу «Обзор».

Работа за обратным прокси и HTTPS

Если Nextcloud стоит за обратным прокси или балансировщиком, часто всплывают замечания про неверный протокол (Nextcloud думает, что работает по HTTP, хотя снаружи HTTPS) или про недоверенный прокси. Из-за этого могут генерироваться ссылки с http:// и ломаться проверки. Нужно объяснить Nextcloud, что он за прокси и что снаружи HTTPS.

'overwriteprotocol' => 'https',
'overwrite.cli.url' => 'https://cloud.example.com',
'trusted_proxies' => ['127.0.0.1', '10.0.0.1'],

Параметр overwriteprotocol заставляет Nextcloud формировать ссылки по HTTPS; trusted_proxies перечисляет адреса вашего прокси, чтобы Nextcloud доверял заголовкам X-Forwarded-* от него. Без этого он видит IP прокси вместо реального клиента и протокол HTTP вместо HTTPS. На прокси при этом должны передаваться заголовки X-Forwarded-Proto и X-Forwarded-For. Эта связка убирает сразу несколько предупреждений и чинит генерацию корректных ссылок.

Обслуживание, обновления и последнее

Отдельная группа замечаний — про версии и обслуживание: устаревшая версия PHP, доступное обновление Nextcloud, не выполненные миграции базы, отсутствие индексов. Их лечит регулярное обслуживание.

sudo -u www-data php occ db:add-missing-indices
sudo -u www-data php occ maintenance:repair --include-expensive
sudo -u www-data php occ upgrade

Держите Nextcloud и PHP в актуальных поддерживаемых версиях — устаревшее ПО это уже реальный риск, а не косметика. Выполняйте db:add-missing-indices после крупных обновлений. И помните про базовую гигиену сервера, которая шире панели Nextcloud: HTTPS с валидным сертификатом, закрытые лишние порты, вход по SSH-ключу, регулярные бэкапы. Nextcloud проверяет своё окружение, но безопасность сервера в целом — на вас. На аккуратно настроенном сервере с актуальным ПО и правильными заголовками раздел проверки становится полностью зелёным и остаётся таким.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под Nextcloud

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Предупреждения безопасности означают, что меня взломали?

Нет. В подавляющем большинстве это рекомендации по усилению защиты или замечания о недонастроенном веб-сервере (заголовки, прокси, .well-known). Они решаются правкой конфигурации, а не свидетельствуют о взломе.

Как убрать замечание об отсутствии заголовков безопасности?

Добавьте в конфиг nginx заголовки Strict-Transport-Security, X-Content-Type-Options, Referrer-Policy и другие с параметром always, затем перезагрузите nginx. Без always заголовки не попадают в ответы с ошибками, и предупреждение остаётся.

Почему появляются замечания про .well-known?

Служебные пути CalDAV/CardDAV/webfinger не отдают нужный редирект, потому что в конфиге nginx нет соответствующих location-блоков. Добавьте редиректы из официального примера конфигурации Nextcloud — предупреждение исчезнет.

Nextcloud за прокси жалуется на протокол. Что делать?

Задайте в config.php overwriteprotocol => https, overwrite.cli.url и trusted_proxies с адресами прокси, а на самом прокси передавайте заголовки X-Forwarded-Proto и X-Forwarded-For. Это уберёт замечания и починит генерацию HTTPS-ссылок.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.