Проверка безопасности и параметров nextcloud

Чтобы начать полноценно использоваться облачный сервер nextcloud нужно его настроить, давайте разберем все предупреждения, которые выдал нам внутренний сканер.

Проверка безопасности и параметров nextcloud

Пройдемся по порядку по этим пунктам

  1. Доступ к сайту осуществляется с использованием небезопасного протокола HTTP
  2. Некоторые заголовки в вашем экземпляре установлены неправильно — Заголовок HTTP
  3. Разрешённое максимальное значение использования памяти php
  4. Не настроено время начала окна обслуживания
  5. One or more mimetype migrations are available
  6. Обнаружено отсутствие некоторых отсутствующих индексов
  7. Не настроен механзм кеширования. Для повышения производительности рекомендуется настроить memcache
  8. Для хранения записей о транзакционном блокировании файлов сейчас используется база данных. Для повышения производительности рекомендуется настроить memcache
  9. Модуль PHP OPcache настроен неправильно. Буфер встроенных строк OPcache почти заполнен
  10. На этом сервере не установлены некоторые рекомендуемые модули PHP
  11. В вашей установке не установлен телефонный регион по умолчанию
  12. Журнал содержит 25 записей об произошедших ошибках начиная

Перевести сайт на работу по HTTPS

Доступ к сайту осуществляется с использованием небезопасного протокола HTTP. Настоятельно рекомендуется вместо этого настроить использование протокола HTTPS, т.к. без него не будут работать некоторые важные веб-функции, такие, как копирование в буфер обмена и обработчики служб. За дополнительными сведениями обратитесь к документации ↗

Установка бесплатных ssl сертификатов от Let’s Encrypt — в этой статье

Установка модуля SSL для Apache
sudo a2enmod ssl
Создадим файл конфигурации для https

sudo mcedit /etc/apache2/sites-available/nc-ssl.conf

    <IfModule mod_ssl.c>
<VirtualHost 192.168.1.90:443>
        ServerAdmin vadim@wadis.ru
        ServerName cloud.wadis.ru
<IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

        DocumentRoot /var/www/nextcloud
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/nextcloud>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/wadis.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wadis.ru/privkey.pem
</VirtualHost>
</IfModule>

Включить HTTP Strict Transport Security

Некоторые заголовки в вашем экземпляре установлены неправильно — Заголовок HTTP «Strict-Transport-Security» не установлен (должен быть настроен как минимум на `15552000` секунд. Для улучшения безопасности рекомендуется включить HSTS. За дополнительными сведениями обратитесь к документации ↗.

Для этого в наш конфигурационный файл ns-ssl.conf добавим следующую строку

mcedit /etc/apache2/sites-enabled/nc-ssl.conf 

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>

Установим модуль headers

Увеличить размера php.ini

Разрешённое максимальное значение использования памяти php

cd /etc/php/8.2/apache2/
mcedit php.ini
memory_limit = 512M
service apache2 reload

Настройка планировщика для выбора времени обслуживания

Не настроено время начала окна обслуживания. Это означает, что ресурсоемкие ежедневные фоновые задачи будут выполняться во время основного использования. Рекомендуется установить время в период низкой активности, чтобы снизить влияние выполнения ресурсоемких процедур на пользователей. За дополнительными сведениями обратитесь к документации ↗.

cd /var/www/nextcloud/
sudo -u www-data /usr/bin/php occ config:system:set maintenance_window_start —type=integer —value=1

crontab -u www-data -e
*/5 * * * * php -f /var/www/nextcloud/cron.php
You can verify if the cron job has been added and scheduled by executing:

Обработка различных типов файлов

One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command occ maintenance:repair --include-expensive to perform the migrations.
MIME типы — это основа веб-разработки, позволяющая определить, как веб-серверы и браузеры должны обрабатывать различные типы файлов

cd /var/www/nextcloud/
sudo -u www-data /usr/bin/php occ maintenance:repair —include-expensive

Создание индексов для ускорения запросов к таблицам

Обнаружено отсутствие некоторых отсутствующих индексов. При разработке Nextcloud или приложений для увеличения производительности,
разработчики добавляют новые индексы в базы данных. Новые индексы не создаются автоматически, так как создание индексов может занять продолжительное время, и в это время производительность системы будет снижена. После того как индексы созданы, запросы к таблицам будут выполняться быстрее.

sudo -u www-data /usr/bin/php occ db:add-missing-indices

Настройка memcache для Nextcloud

Не настроен механизм кеширования. Для увеличения производительности сервера, по возможности, настройте memcache

Установим memcached

apt install php-memcached memcached

Проверим запустился ли сервис

ps ax | grep memcached

Для проверки работы memcach создадим файл memcache_test.php

  <?php
    $mem = new Memcached();
    $mem->addServer("127.0.0.1", 11211);
    $result = $mem->get("key_name");
    if ($result) {
        echo $result;
    } else {
        echo "No key found. Adding key to cache.";
        $mem->set("key_name", "Key_name's value from memcached!") or die ("Couldn't save anything to memcached...");
    }
    ?>
  <?php
    $mem = new Memcached();
    $mem->addServer("127.0.0.1", 11211);
    $result = $mem->get("key_name");
    if ($result) {
        echo $result;
    } else {
        echo "No key found. Adding key to cache.";
        $mem->set("key_name", "Key_name's value from memcached!") or die ("Couldn't save anything to memcached...");
    }
    ?>

php memcache_test.php

Запустим проверку, в первый раз будет ошибка, а на второй раз все ок.

Теперь изменим config.php

mcedit /var/www/nextcloud/config/config.php

  'memcache.local' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => [
[ '127.0.0.1', 11211 ],
],

Добавим распределенное кэширования redis

Для хранения записей о транзакционном блокировании файлов сейчас используется база данных. Для повышения производительности рекомендуется настроить memcache. За дополнительными сведениями обратитесь к документации ↗.

Memcached — надежный старожил для общего кэширования на распределенных серверах, который хорошо работает с Nextcloud, за одним исключением: его не следует использовать с транзакционной блокировкой файлов , поскольку он не сохраняет блокировки, а данные могут исчезнуть из кэша в любой момент (лучшим memcache для этого является Redis).

Установим redis

apt install redis-server php-redis

Проверяем, что он запустился

Поправим конфигурацию

mcedit /var/www/nextcloud/config/config.php

'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
),

Модуль PHP OPcache настроен неправильно

Модуль PHP OPcache настроен неправильно. Буфер встроенных строк OPcache почти заполнен. Чтобы гарантировать эффективное кэширование повторяющихся строк, рекомендуется применить «opcache.interned_strings_buffer» к вашей конфигурации PHP со значением выше, чем «8».. За дополнительными сведениями обратитесь к документации ↗.

Для этого правим php.ini

mcedit /etc/php/8.2/apache2/php.ini

service apache2 reload

Установка дополнительных рекомендуемых модулей PHP

На этом сервере не установлены некоторые рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установить следующие модули: — bcmath для входа без использования пароля по протоколу WebAuthn — gmp для входа в систему без пароля WebAuthn и хранения данных по протоколу SFTP За дополнительными сведениями обратитесь к документации ↗.

Проверим есть ли такие модули: bcmath, gmp, magick imagemagick

php -m | grep -i bcmath

php -m | grep -i gmp

php-m | grep -i php-imagick

apt install php-imagick imagemagick

С модулями закончили, переходим дальше.

Установить телефонный регион по умолчанию

В вашей установке не установлен телефонный регион по умолчанию. Это необходимо для проверки телефонных номеров в настройках профиля без указания кода страны. Чтобы разрешить использование номеров без кода страны, пожалуйста, добавьте «default_phone_region» с соответствующим кодом региона ISO 3166-1 в свой конфигурационный файл. За дополнительными сведениями обратитесь к документации ↗.

Для исправления этой ошибки снова обратимся к нашему конфигурационному файлу config.php и добавим следующую строку:

‘default_phone_region’ => ‘RU’,

Журнал ошибок Nextcloud

Журнал содержит 25 записей об произошедших ошибках начиная с 27 декабря 2024 г., 18:06:11

И на последок удалить записи журнала ошибок, которые успели накопиться с момента установки сервера

cat /dev/null > nextcloud.log

Проверим сканер ошибок

Все, мы большие молодцы, можно приступить к полноценному использованию нашего облака!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Top