Базовые рекомендации по безопасности
Что необходимо сделать для обеспечения безопасности вашей системы
По-умолчанию система поставляется в конфигурации с минимальным уровнем безопасности, для масимально быстрой установки и тестирования любым пользователем. Поэтому, после окончания тестовой эксплуатации, администратору необходимо самостоятельно обеспечить уровень безопасности системы, подходящий для эксплуатации в production режиме. Ниже мы предоставили список рекомендаций, который вы можете использовать.
Смена паролей пользователей root и установка сложного пароля для БД
При установке системы в среде Linux, в установочном скрипте предлагается сбросить и заменить пароль root и создать пароль для пользователе БД (mySQL или MariaDB). Рекомендуется задавать сложные пароли.
При установке системы на Windows, используется пароль пользователя root по-умолчанию и он равен имени пользователя root, и для обеспечения безопасности его рекомендуется поменять на сложный пароль.
После установки системы доступ к БД осуществляется только через сокет с локального IP адреса, если вы собираетесь дать доступ через TCP протокол с других адресов, так же необходимо сменить дефолтные пароли для пользователей БД.
Смена паролей пользователей в веб-интерфейсе vsDesk
После установки системы, для авторизации использованы максимально простые пароли, поэтому рекомендуется выполнить смену паролей, особенно для учетной записи администратора системы.
Восстановление пароля администратора системы
В системе не предуссмотрено механизма восстановления пароля администратора через веб-интерфейс. Если вы забыли пароль администратора и в системе нет других административных учетных записей, восстановить пароль можно только через запрос к БД. Для этого в консоли сервера необходимо выполнить подключение к БД с учетной записью root
mysql -u root -p
После успешного подключения, необходимо выбрать базу vsdesk
USE vsdesk
И выполнить следующий запрос, который устанавливает для учетной записи admin пароль admin:
UPDATE `CUsers` SET Password = "b147fdcfe0a8120780ce85a8a6d27596" WHERE `Username` = "admin";
Ограничение / разрешение доступа к обновлению системы
По-умолчанию в системе реализован механизм ограничения доступа к обновлению через веб-интерфейс. В зависимости от версии ПО или ОС сервера в файле .htaccess находящемся в корне установленной системы по пути:
Linux: /var/www/vsdesk
Windows: C:\vsDesk\domains\localhost
Для огрничения доступа к скрипту обновления используется директива, которая ограничивает доступ к обнолению только с локального сервера, на котором установлена система (актуально для WIndows), где IP адрес (127.0.0.1) это адрес ПК с которого администратор может выполнять обновление, или же это может быть подсеть, например 192.168.0.0/24
<Files "update.php">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Files>
В зависимости от версии ПО данная директива может быть прописана или не прописана и ее необходимо добавить вручную, чтобы обезопасить систему от воздействия извне.
Ограничение загрузки исполняемых файлов
Ограничение загрузки исполняемых файлов позволяет защитить систему от загрузки на сервер и запуска вредоностных скриптов или попыток взлома системы. По-умолчанию реализовано через директивы .htaccess расположенные в папках куда загружаются вложения и аватары пользователей uploads, media и подпапках, а так же в папке protected/_backup для резервных копий. По-умолчанию прописан запрет на загрузку только исполняемых скриптов php и js, но мы рекомендуем прописать необходимые для вашего уровня безопасности расширения файлов, которые могут быть использованы злоумышленниками.
<Files "*.php">
deny from all
</Files>
<Files "*.js">
deny from all
</Files>p
Использование SSL сертификатов и HTTPS протокола
Для production режима рекомендуется настроить систему на работу по HTTPS протоколу и получить валидные SSL-сертификаты. Это так же необходимо для работы большинства интеграций с внешними системами.
Подключение SSL сертификата в Windows
Важно! Установка проводится без изменения существующих настроек, только путём добавления новых записей.
По пути: C:\vsDesk\userdata\config\ есть папка "cert_files", (там лежат дефолтные файлы server.crt и server.key). Рядом создаём папку, например "cert_files_for_me". В ней будут хранится наши сертификаты и ключи. Если у нас несколько доменов, копируем в эту папку все сертификаты и ключи, купленные или созданные бесплатно. Переименовываем, чтобы не запутаться. Рекомендуется называть файлы по названиям доменов, легче управлять. Например site1.crt, site1.key, site2.crt, site2.key, site3.crt, site3.key.
Потом открываем конфигурационные файлы того модуля, который у вас в настройках: например (это для примера): Зелёный флажок ->Дополнительно ->конфигурация ->Apache-PHP-8 ( или Nginx или Apache 2.4) откроется два конфигурационных файла. Один закроем, а в файле vhost.conf (именно в vhost.conf) в блоке
#-----------------------------------------------# # Начало блока конфигурации HTTPS хоста #-----------------------------------------------#
находим строки
SSLCertificateFile "%sprogdir%/userdata/config/cert_files/server.crt"
SSLCertificateKeyFile "%sprogdir%/userdata/config/cert_files/server.key"
и прописываем дополнительно под имеющимися указывая путь к папке с сертификатами - (вместо cert_files вписываем cert_files_for_me), заменяем названия crt и key на наши и получает вот так:
SSLCertificateFile "%sprogdir%/userdata/config/cert_files_for_me/server.crt"
SSLCertificateKeyFile "%sprogdir%/userdata/config/cert_files_for_me/server.key"
SSLCertificateChainFile "%sprogdir%/userdata/config/cert_files_for_me/intermediate.crt"
Не забывайте про важность установки цепочки сертификатов (SSLCertificateChainFile)
Обязательно перезапускаем OSP. Всё начинает работать после перезапуска OpenServer Panel
Больше информации на https://ospanel.io/docs/ и https://ospanel.io/forum/
Подключение SSL сертификата в Linux
Если устанавливаете сертификаты Let`s Encrypt прямо с сервера, то скрипт сделает все за вас, ниже описана процедура подключения купленных сертификатов.
Скопируем ваши сертификаты в /etc/ssl и назначим файлу ключа права чтения только администратору:
sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo cp intermediate.crt /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key
sudo chmod 0600 /etc/ssl/private/intermediate.crt
Настройка Apache
Для начала необходимо активировать mod_ssl
:
sudo a2enmod ssl
А затем включить настройки HTTPS сайта по умолчанию:
sudo a2ensite default-ssl
Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl
(или /etc/apache2/sites-enabled/default-ssl.conf
).
В этом файле рекомендуется после директивы
SSLEngine on
добавить строчку
SSLProtocol all -SSLv2
дабы запретить использование устаревшего протокола SSLv2.
Дальше вам необходимо отредактировать параметры, ответственные за сертификаты.
# Публичный сертификат сервера
SSLCertificateFile /etc/ssl/certs/server.pem
# Приватный ключ сервера
SSLCertificateKeyFile /etc/ssl/private/server.key
# Цепочка сертификатов
SSLCertificateChainFile /etc/ssl/private/intermediate.crt
Теперь просто перезагрузите Apache:
sudo service apache2 restart
И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.
Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.
Перенаправление HTTP запросов на HTTPS
Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью mod_alias
. Если он не включён — включаем:
sudo a2enmod alias
sudo service apache2 restart
Затем изменяем файл /etc/apache2/sites-enabled/000-default
, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву
Redirect / https://example.com/
При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.
Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.
Пример default-ssl файла:
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName vsdesk
ServerAlias vsdesk.yourdomain.com
DocumentRoot /var/www/vsdesk
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/ssl/certs/ssl-cert-your.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-yours.key
SSLCertificateChainFile /etc/ssl/private/intermediate.crt
<Directory />
Options FollowSymLinks
AllowOverride All
SSLOptions +StdEnvVars
</Directory>
<Directory /var/www/vsdesk/>
Options Indexes FollowSymLinks MultiViews
SSLOptions +StdEnvVars
AllowOverride All
Order allow,deny
allow from all
SSLRequireSSL On
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
SSLOptions +StdEnvVars
</Directory>
<filesmatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</filesmatch>
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Last updated