Первичная настройка Nextcloud (Ubuntu 16.04)
Добрый день Комрады. Помогите юродливому разобраться с первичной настройкой Nextcloud»a.
Установил облако, при заходе он сурово предупреждает меня:
Предупреждения безопасности и установки
PHP не имеет доступа на чтение к /dev/urandom, что крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей документации .
Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд.Для улучшения безопасности рекомендуется включить HSTS согласно нашим подсказкам по безопасности.
Облако работает через Let’s Encrypt, не знаю, важно в данном случае или нет, но трафик скрыт. Собственно вопрос — как открыть доступ PHP к /dev/urandom и вообще есть ли в этом такая необходимость? Насчет HTTP «Strict-Transport-Security» тоже не пойму, ведь шиврофание и так включено и все идет по httpS. На сколько эти два пункта критичны и как их можно включить? Про PHP и urandom читал вскользь и вроде как не рекомендуется доступ открывать.
HaddinG
16.08.17 12:40:08 MSK
$ grep 'Strict' /etc/apache2/conf-enabled/security.conf Header always set Strict-Transport-Security "max-age=15552000"
cyclon ★★★★★
( 16.08.17 13:09:39 MSK )
Новый вопрос. При попытке обновиться, выдает ошибку
SplFileInfo::isDir(): open_basedir restriction in effect. File(/home/admin/web/cloud.domain.ru/public_html/updater/../..) is not within the allowed path(s): (/home/admin/web/cloud.domain.ru/public_html:/home/admin/tmp)
Прав на папку все есть.
$ sudo ls -l /home/admin/web/cloud.domain.ru/public_html/updater итого 640 -rw-r--r-- 1 admin admin 57353 авг 16 12:16 index.php -rw-r--r-- 1 admin admin 591718 авг 16 12:16 updater.phar ~$ sudo ls -l /home/admin/tmp/ итого 8 -rw------- 1 admin admin 7347 авг 16 15:01 sess_3nmc0r1q5nkj9huvunae94is22
HaddinG
( 16.08.17 15:04:40 MSK ) автор топика
Ответ на: комментарий от HaddinG 16.08.17 15:04:40 MSK
т.е. вебсервер работает от юзера admin ?
Deleted
( 16.08.17 15:35:29 MSK )
Ответ на: комментарий от Deleted 16.08.17 15:35:29 MSK
На сервере стоит VESTA. Там под пользователем ADMIN пара сайтов заведена. Все файлы сайта лежат по адресу /home/admin/web/
HaddinG
( 16.08.17 17:08:49 MSK ) автор топика
Ответ на: комментарий от HaddinG 16.08.17 15:04:40 MSK
Котятки, UP! Пригорает что нет возможности обновиться и голая жопа торчит наружу.
Продублирую вопрос еще раз.
При попытке обновиться, выдает ошибку
SplFileInfo::isDir(): open_basedir restriction in effect. File(/home/admin/web/cloud.domain.ru/public_html/updater/../..) is not within the allowed path(s): (/home/admin/web/cloud.domain.ru/public_html:/home/admin/tmp)
Права на эти папки
$ sudo ls -l /home/admin/web/cloud.domain.ru/public_html/updater итого 640 -rw-r--r-- 1 admin admin 57353 авг 16 12:16 index.php -rw-r--r-- 1 admin admin 591718 авг 16 12:16 updater.phar ~$ sudo ls -l /home/admin/tmp/ итого 8 -rw------- 1 admin admin 7347 авг 16 15:01 sess_3nmc0r1q5nkj9huvunae94is22
Все крутится под VESTA, под учетной записью admin, по этому и права и папка с сайтом лежат в /admin/
HaddinG
( 17.08.17 13:37:18 MSK ) автор топика
Ответ на: комментарий от HaddinG 17.08.17 13:37:18 MSK
В файле /home/cloud.domain.ru/conf/web/apache2.conf есть такие строки
php_admin_value open_basedir /home/admin/web/cloud.domain.ru/public_html:/home/admin/tmp php_admin_value upload_tmp_dir /home/admin/tmp php_admin_value session.save_path /home/admin/tmp
Как исправить эти ошибки nextcloud, NGINX?
Всем привет.
После установки nextcloud 25 и перебрасывание через NGINX PROXY MANAGER и cloudflare ssl. Выдаёт две ошибки не могу понять как их исправить.
Гуглил и пытался сделать с официальной документацией и всё никак.
Сервер создаёт небезопасные ссылки, несмотря на то, что к нему осуществлено безопасное подключение. Скорее всего, причиной являются неверно настроенные параметры обратного прокси и значения переменных перезаписи исходного адреса. Рекомендации по верной настройке приведены в документации ↗.
Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим подсказкам по безопасности ↗.
*NGINX PROXY MANAGER развёрнут через docker графическая версия
< "id": 1, "created_on": "2022-12-22 20:57:48", "modified_on": "2022-12-22 22:06:18", "owner_user_id": 1, "domain_names": [ "домен.ру" ], "forward_host": "192.168.0.245", "forward_port": 80, "access_list_id": 0, "certificate_id": 4, "ssl_forced": true, "caching_enabled": false, "block_exploits": true, "advanced_config": "", "meta": < "letsencrypt_agree": false, "dns_challenge": false >, "allow_websocket_upgrade": true, "http2_support": true, "forward_scheme": "http", "enabled": 1, "locations": [], "hsts_enabled": true, "hsts_subdomains": true >
'octzcc6rxgo2', 'passwordsalt' => 'W4VbUS/nckxHiikMiEFuT3AB8t2ZB+', 'secret' => 'bOO5Zf3we0pCuz6omi/odhGXF+eoir05OC5HVNUftYww1DEI', 'trusted_domains' => array ( 0 => '192.168.0.245', 1 => 'домен.ру', ), 'datadirectory' => '/home/data', 'dbtype' => 'mysql', 'version' => '25.0.2.3', 'overwrite.cli.url' => 'https://домен.ру', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'nextclouduser', 'dbpassword' => '123456', 'installed' => true, 'mail_domain' => 'gmail.com', 'mail_from_address' => 'twitster1337', 'mail_smtpmode' => 'smtp', 'mail_sendmailmode' => 'smtp', 'mail_smtpsecure' => 'ssl', );
- Вопрос задан 27 дек. 2022
- 1820 просмотров
Установка NextCloud на Ubuntu 20.04 (Apache, MariaDB)
Nextcloud — это опенсорсное программное обеспечение, которое позволяет создавать облачное хранилище и отправлять туда файлы из любого места. Представьте, что вы используете Dropbox, Google Диск или iCloud, только теперь ещё можете полностью контролировать, где и как хранятся ваши файлы.
Узнать версию ОС Linux
cat /etc/issue
cat /etc/os-release
Ubuntu 20.04.3 LTS \n \l
Узнать версию ядра
uname -a
Linux cloud 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Если на вашем сервере используется фаервол UFW, то вам надо разрешить удалённое подключение к порту 22:
sudo ufw allow ssh
Задать статический IP:
sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.7
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-search workgroup
Если нужен SMB client (для подключения внешних накопителей в Nextcloud), LDAP и Midnight Commander:
apt-get install smbclient php-ldap mc -y
sudo apt update && sudo apt dist-upgrade -y
Установим Apach и MariaDB:
sudo apt install -y apache2 libapache2-mod-php mariadb-server mariadb-client
Установим необходимые PHP модули:
sudo apt install -y php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
NOTICE: Not enabling PHP 7.4 FPM by default.
NOTICE: To enable PHP 7.4 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.4-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
Настройка безопасности MYSQL
sudo mysql_secure_installation
- Set root password? [Y/n] y
- Remove anonymous users? [Y/n] y
- Disallow root login remotely? [Y/n] y
- Remove test database and access to it? [Y/n] y
- Reload privilege tables now? [Y/n] y
Войдем в консоль базы данных.
sudo /etc/init.d/mysql start
sudo mysql -uroot -p
Создаем базу данных, пользователя и задаем свой пароль:
create database nextcloud;
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
create user nextclouduser@localhost identified by 'ваш пароль';
create user nextclouduser@localhost identified by 'ocpEi1pPSh4I';
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'ваш пароль';
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'ocpEi1pPSh4I';
FLUSH PRIVILEGES;
exit;
Настраиваем Apache.
В самом верху файла apache2.conf следующей командой добавляем название своего домена:
sudo nano /etc/apache2/apache2.conf
Создаём виртуальный хост Apache для Nextcloud:
sudo nano /etc/apache2/sites-available/nextcloud.conf
ServerAdmin admin@5house.win DocumentRoot /var/www/html/nextcloud/ ServerName cloud.5house.win Options +FollowSymlinks AllowOverride All Require all granted Dav off SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud ErrorLog $/error.log CustomLog $/access.log combined
Где cloud.5house.win – это название вашего домена.
Скачиваем NextCloud:
cd /tmp
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
wget --no-check-certificate https://download.nextcloud.com/server/releases/latest.tar.bz2
tar xjvf latest.tar.bz2
sudo cp -R nextcloud /var/www/html/
Меняем владельца каталога:
sudo chown -R www-data:www-data /var/www/html/nextcloud/
Устанавливаем NextCloud, задаем нашу базу данных, создаем администратора, запуск в одну строку:
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:install \
--database "mysql" --database-name "nextcloud" --database-user "nextclouduser" \
--database-pass "пароль базы mysql" --admin-user "имя пользователя админа" --admin-pass "ваш пароль"
Результат
Nextcloud was successfully installed
Добавляем свой домен в базу доверенных доменов NextCloud:
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set trusted_domains 1 --value=cloud.5house.win
System config value trusted_domains => 1 set to string cloud.5house.win
sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf
sudo a2enmod rewrite headers env dir mime setenvif ssl
sudo systemctl reload apache2
Шифрование SSL httpS домена NextCloud:
Не забудьте открыть порты 80 и 443:
sudo ufw allow 80,443/tcp sudo ufw reload
Не забыть сопоставить в DNS записи ip host
Устанавливаем сертификат SSL letsencrypt:
sudo apt install -y certbot python3-certbot-apache sudo certbot --apache --agree-tos --redirect --staple-ocsp --email адрес почты -d название домена
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt Country Name (2 letter code) [AU]:By State or Province Name (full name) [Some-State]:Minsk Locality Name (eg, city) []:Minsk Organization Name (eg, company) [Internet Widgits Pty Ltd]:5house. inc Organizational Unit Name (eg, section) []:it Common Name (e.g. server FQDN or YOUR name) []:cloud.5house.win Email Address []:admin@5house.win sudo chmod 0600 /etc/ssl/private/apache-selfsigned.key
Измените значение DocumentRoot на то, где вы установили NextCloud ранее. Затем измените значения SSLCertificateFile и SSLCertificateKeyFile на то место, где мы сохранили наши файлы SSL.
sudo nano /etc/apache2/sites-available/nextcloud.conf ServerAdmin admin@5house.win DocumentRoot /var/www/html/nextcloud/ ServerName cloud.5house.win Options +FollowSymlinks AllowOverride All Require all granted Dav off SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud ErrorLog $/error.log CustomLog $/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
Подключения виртуального хоста apache:
sudo a2ensite nextcloud.conf sudo apachectl configtest sudo systemctl reload apache2
Удаление index.php с домена NextCloud
По умолчанию адрес домена с NextCloud автоматически дополняется «index.php» . Пример: https://example.com/index.php/
Убираем index.php , тем самым делая адрес более красивым.
sudo nano /var/www/html/nextcloud/config/config.php
В строке ‘overwrite.cli.url’ => ‘http://localhost’ заменяем http://localhost на свой домен: https://example.com
И под ним добавляем следующую строку:
'htaccess.RewriteBase' => '/',
Затем обновляем .htaccess:
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess
Известные ошибки
Исправления ошибок NextCloud. Если перейти по адресу https://example.com/settings/admin/overview , т.е в раздел Общие сведения, то проверка безопасности возможно обнаружит одни из следующих популярных ошибок.
Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/apache2/php.ini sudo systemctl reload apache2
Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим
sudo nano /etc/apache2/sites-enabled/nextcloud-le-ssl.conf
В конце, под блоком SSL добавляем следующий параметр:
Header always set Strict-Transport-Security "max-age=31536000"
И перезапускаем веб-сервер:
sudo systemctl reload apache2
Не настроена система кеширования. Для увеличения производительности сервера настройте memcache.
sudo apt install -y redis-server php-redis sudo systemctl start redis-server sudo systemctl enable redis-server sudo phpenmod redis sudo nano /var/www/html/nextcloud/config/config.php
Добавляем следующий параметр:
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
Перезапускаем Apache и PHP-FPM:
sudo systemctl restart apache2 php7.4-fpm
Не указан регион размещения этого сервера Nextcloud, что требуется для возможности проверки номеров телефонов без указания кода страны. Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1
Добавляем в файл nextcloud/config/config.php следующий параметр:
sudo nano /var/www/html/nextcloud/config/config.php 'default_phone_region' => 'RU',
Модуль php-imagick в этом случае не поддерживает SVG. Для лучшей совместимости рекомендуется установить его.
sudo apt install imagemagick
Увеличиваем предел размера загружаемого файла
При использовании модулей Apache PHP, по умолчанию задан предел загружаемого файла в 2 МБ. Обходим данное ограничение, увеличиваем предел загружаемого файла по своему усмотрению (в этом примере мы задаем предел в 5024 МБ):
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 5024M/g' /etc/php/7.4/fpm/php.ini
sudo systemctl restart php7.4-fpm
Отключение Создайте свою бесплатную учётную запись
Отключение ссылки на https://nextcloud.com/signup/
Нужно добавить в файл nextcloud/config/config.php
sudo nano /var/www/html/nextcloud/config/config.php 'simpleSignUpLink.shown' => false,
Запуск заданий через Cron
sudo crontab -u www-data -e
добавить строку
*/5 * * * * php -f /var/www/html/nextcloud/cron.php
Приложения:
Brute-force settings
Whitelist IPs IP-адреса из белого списка
С помощью этого приложения администратор может исклчюить IP-адрес или диапазон от этой защиты, что может быть полезно для целей тестирования или при ложных срабатываниях из-за большого количества пользователей на одном IP-адресе.
Antivirus for files (ClamAV (open source) or Kaspersky Scan Engine)
Restrict login to IP addresses
Это приложение позволяет администраторам ограничить вход на свой следующий облачный сервер определенными диапазонами IP-адресов. Обратите внимание, что существующие сессии будут оставаться открытыми.
автор: Lukas Reschke Лицензия: AGPL
To show entries:
mysql -e "use nextcloud;select * from oc_bruteforce_attempts;
To delete all these entries:
mysql -e "use nextcloud;delete from oc_bruteforce_attempts;
КАК ВКЛЮЧИТЬ HTTP STRICT TRANSPORT SECURITY (HSTS) НА APACHE И NGINX
В сегодняшней статье мы поговорим о том как можно включить в HTTP заголовках заголовок дополнительной безопасности вашего сайта который называется HTTP Strict Transport Security, если коротко то его еще называют HSTS.
HTTP заголовок HTTP Strict Transport Security был создан еще в 2012 году. Этот заголовок используется, для того чтобы заставить веб-браузер использовать безопасные соединения, когда сайт работает через HTTPS протокол. В тот момент когда пользователь захочет попытаться использовать незащищенную версию (HTTP) страницы вашего сайта, то он сразу же будет автоматически перенаправлен на защищенную версию HTTPS страницу. Заголовок HTTP Strict Transport Security не позволит злоумышленнику переопределить сообщение о недействительном сертификате.
Существует несколько различных способов и директив которые можно применять к заголовку HSTS и мы будем использовать самый простой способ с использованием директивы max-age. Директива max-age определяет время в секундах, в течение которого веб-сервер должен доставлять контент только через HTTPS протокол. Лучше всего указывать время 1 год в секундах.
- Включения заголовка HTTP Strict Transport Security в Apache.
- Включения заголовка HTTP Strict Transport Security в Nginx.
1. Включения заголовка HTTP Strict Transport Security в Apache.
Чтобы включить HTTP заголовок HTTP Strict Transport Security на веб сервере Apache, вам нужно в основном конфигурационном файле веб сервера добавить специальную директиву max-age. В зависимости от вашей операционной системы Linux конфигурационный файл может храниться в разных директориях.
Открываем конфигурационный файл веб сервера Apache любым удобным для вас текстовым редактором.
$. sudo vim /etc/apache2/apache2.conf
$. sudo vim /etc/httpd/conf/httpd.conf
Добавляем директиву max-age в начало файла.
Header always set Strict-Transport-Security max-age=31536000
После добавления директивы обязательно перезапускаем веб сервер Apache чтобы наши изменения успешно применились.
$. sudo service apache2 restart
$. sudo service httpd restart
Перезапускаем браузер и проверяем.
Как видим в результате теперь наш веб сервер Apache успешно передает нам HTTP заголовок HTTP Strict Transport Security.
2. Включения заголовка HTTP Strict Transport Security в Nginx.
Чтобы включить HTTP заголовок HTTP Strict Transport Security на веб сервере Nginx, вам нужно в основном конфигурационном файле веб сервера добавить специальную директиву. Основной конфигурационный файл Nginx находится по пути /etc/nginx и называется nginx.conf.
Открываем конфигурационный файл веб сервера Nginx любым удобным для вас текстовым редактором.
$. sudo vim /etc/nginx/nginx.conf
Добавляем директиву в http объект.
http add_header Strict-Transport-Security «max-age=31536000»;
>
После добавления директивы обязательно перезапускаем веб сервер Nginx чтобы наши изменения успешно применились.
$. sudo service nginx restart
Перезапускаем браузер и проверяем.
Как видим в результате теперь наш веб сервер Nginx успешно передает нам HTTP заголовок HTTP Strict Transport Security.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.
Последнее обновление: 20 Июня 2023 г.