Установка Moodle включает в себя несколько этапов, в том числе настройку веб-сервера, сервера баз данных, PHP и самого кода Moodle. Правильная защита установки Moodle также имеет решающее значение для предотвращения несанкционированного доступа и других угроз безопасности.
В этом руководстве мы рассмотрим пошаговый процесс установки Moodle на Linux-сервер под управлением Ubuntu 20.04/22.04 или Debian. В нем также рассматриваются важные соображения безопасности и конфигурации для блокировки доступа и защиты данных. Следуя этим инструкциям, вы получите полностью функционирующую и защищенную среду Moodle, готовую к созданию курсов.
Предварительные условия
Перед установкой Moodle необходимо убедиться, что ваш сервер Ubuntu 20.04/22.04 обновлен и на нем установлены необходимые пакеты:
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install apache2 mariadb-server php8.0 php8.0-curl php8.0-zip php8.0-gd php8.0-mbstring php8.0-xml php8.0-soap php8.0-intl -y
Вам также понадобится доменное имя, указанное на публичный IP-адрес вашего сервера. В данном руководстве используется example.com
.
После выполнения всех предварительных условий можно переходить к установке и настройке веб-сервера.
Установка веб-сервера Apache
Для доставки веб-страниц Moodle требуется веб-сервер Apache. Установите Apache с помощью этой команды:
$ sudo apt install apache2
Настройте брандмауэр, чтобы разрешить HTTP и HTTPS трафик:
$ sudo ufw allow in "Apache Full"
Проверьте, что Apache работает правильно, зайдя в веб-браузер по доменному имени или публичному IP-адресу вашего сервера. Вы должны увидеть страницу Apache по умолчанию.
Настройка базы данных MariaDB
Moodle полагается на базу данных MySQL/MariaDB для хранения всех данных курса. Установите MariaDB с помощью:
$ sudo apt install mariadb-server
Запустите скрипт безопасности, чтобы удалить небезопасные настройки по умолчанию:
$ sudo mysql_secure_installation
При появлении запроса установите пароль root, удалите анонимных пользователей, отключите удаленный вход root и удалите тестовую базу данных. На все остальные вопросы ответьте «y».
Создайте пользователя базы данных и базу данных для Moodle. Изменить moodleuser
и moodlepassword
для защиты учетных данных:
$ sudo mysql -u root -p
CREATE DATABASE moodledb;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'moodlepassword';
GRANT ALL ON moodledb.* TO 'moodleuser'@'localhost';
exit
База данных MariaDB теперь готова для работы с Moodle.
Настройка PHP 8.0 для Moodle
Для Moodle требуется PHP с несколькими специальными модулями.
Сначала отредактируйте php.ini, чтобы изменить некоторые рекомендуемые настройки:
$ sudo nano /etc/php/8.0/apache2/php.ini
Найдите и обновите следующие значения:
max_execution_time = 180
max_input_time = 180
memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
max_input_vars = 3000
После завершения работы сохраните и выйдите из файла.
Далее включите необходимые модули PHP:
$ sudo phpenmod mysqli pdo pdo_mysql json zip intl mbstring soap
Перезапустите Apache, чтобы изменения PHP вступили в силу:
$ sudo systemctl restart apache2
Теперь PHP готов к работе с Moodle.
Скачайте и установите Moodle
Когда веб-сервер, база данных и PHP настроены, вы можете установить сам Moodle.
Сначала перейдите в корневой каталог документа Apache:
$ cd /var/www/html
Загрузите последний стабильный выпуск Moodle:
$ sudo wget https://download.moodle.org/download.php/stable403/moodle-4.3.2.zip
Распакуйте файлы:
$ sudo unzip moodle-4.3.2.zip
Переименуйте каталог:
$ sudo mv moodle moodle-install
Установите разрешения:
$ sudo chown -R www-data:www-data /var/www/html/moodle-install
$ sudo chmod -R 755 /var/www/html/moodle-install
Зайдите в доменное имя вашего сервера, за которым следует /moodle-install
в веб-браузере. Вы попадете на страницу установки Moodle.
Выберите язык и перейдите к следующему шагу. Укажите данные вашей базы данных, включая хост, имя, пользователя и пароль. Для каталога данных укажите путь /var/www/html/moodledata
. Завершите процесс установки, задав имя пользователя, пароль и имя сайта администратора.
После сохранения настроек вы попадете в основной интерфейс Moodle. Теперь базовая система установлена и должна быть защищена.
Защита установки Moodle
Стандартная установка Moodle содержит множество уязвимостей в системе безопасности, которые необходимо устранить. Для этого необходимо изменить настройки самого Moodle, а также веб-сервера и базы данных.
Используйте HTTPS
HTTP-трафик является незашифрованным и может раскрыть пароли и другие конфиденциальные данные. Чтобы включить HTTPS на Apache:
$ sudo a2enmod ssl
$ sudo systemctl reload apache2
Приобретите сертификат SSL/TLS у такого провайдера, как Let’s Encrypt, и установите его в соответствии с документацией. Перенаправьте весь HTTP-трафик на HTTPS, отредактировав /etc/apache2/sites-available/000-default.conf
:
<VirtualHost *:80>
Redirect "/" "https://example.com/"
</VirtualHost>
Сохраните файл и снова перезагрузите Apache. Теперь доступ к домену должен быть перенаправлен на безопасное HTTPS-соединение.
Установка разрешений на файлы
Файлы и каталоги Moodle должны принадлежать пользователю веб-сервера. Выполнить:
$ sudo chown -R www-data:www-data /var/www/html/moodle*
Заблокируйте разрешения еще больше с помощью:
$ sudo find /var/www/html/moodle* -type d -exec chmod 750 {} \;
$ sudo find /var/www/html/moodle* -type f -exec chmod 640 {} \;
Это не позволит веб-пользователю создавать или изменять файлы в папках Moodle.
Используйте надежный пароль администратора
При первоначальной установке Moodle установите очень сложный пароль для учетной записи администратора. Убедитесь, что он состоит не менее чем из 16 символов, использует цифры, символы, заглавные и строчные буквы.
Вы также можете улучшить политику паролей, установив минимальную длину и сложность в разделе Администратор сайта > Безопасность > Политики сайта.
Ограничить создателей курсов
По умолчанию любой вошедший в систему пользователь может создавать новые курсы в Moodle. Это ненужная возможность. Вместо этого ограничьте создание курсов только администратором, перейдя в раздел Администратор сайта > Пользователи > Разрешения > Определить роли.
В роли «Аутентифицированный пользователь» снимите флажок «Создавать новые курсы». Сохраните изменения. Теперь только администратор может создавать курсы.
Отключение гостевого доступа
Гостевой доступ позволяет любому человеку входить в систему и просматривать содержимое курса без регистрации учетной записи. Отключите его в разделе Администратор сайта > Пользователи > Аутентификация.
Установите для параметра «Включить гостевой доступ» значение Нет и сохраните изменения. Требуется регистрация пользователя для любого доступа.
Использование HTTPS для подключения к базе данных
По умолчанию Moodle подключается к базе данных по незашифрованному HTTP. Зашифруйте этот трафик, отредактировав /var/www/html/moodle-install/config.php
:
Найдите строку:
$CFG->dbhost="localhost";
Измените ее на:
$CFG->dbhost="localhost:3306";
Это заставляет использовать зашифрованное соединение SSL.
Защита базы данных
Заблокируйте базу данных MariaDB, установив сначала надежный пароль root.
Затем ограничьте удаленный доступ с помощью следующих правок /etc/mysql/mariadb.conf.d/50-server.cnf
:
bind-address = 127.0.0.1
port = 3306
Это предотвращает внешние подключения к базе данных. После внесения изменений перезапустите MariaDB.
Также убедитесь, что у пользователя mysql Unix нет логина shell:
$ sudo usermod -s /usr/sbin/nologin mysql
Это предотвратит любой доступ на уровне ОС с учетной записью mysql.
Ограничение загрузки файлов PHP
Загружаемые файлы могут содержать вредоносный код и должны быть ограничены. Редактировать /etc/php/8.0/apache2/php.ini
и добавьте:
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 2
Это ограничит загрузку до 2 файлов по 2 МБ каждый. Настройте под свои нужды.
Отключить выполнение PHP при загрузке файлов
Чтобы предотвратить выполнение загруженных PHP-файлов, отключите его специально для каталога upload:
<Directory /var/www/html/moodledata/filedir>
php_admin_flag engine off
</Directory>
Добавьте это в конфигурацию Apache по адресу /etc/apache2/sites-available/000-default.conf
внутри тегов VirtualHost.
Установка брандмауэра веб-приложений (WAF)
WAF обеспечивает глубокий мониторинг и фильтрацию всего веб-трафика. Он может блокировать SQL-инъекции, XSS, CSRF и другие атаки до того, как они достигнут Moodle.
WAF ModSecurity с открытым исходным кодом тесно интегрируется с Apache. Следуйте руководству по его установке для надежной защиты от угроз.
Используйте плагины безопасности
Moodle предоставляет плагины, которые повышают безопасность в таких областях, как аутентификация, разрешения, фильтрация и многое другое. Рассмотрите возможность включения таких плагинов, как No Self Signups, ReCAPTCHA, Access Rule Levels и т. д.
Заключение
Теперь у вас должна быть полностью функционирующая среда Moodle, установленная на Ubuntu с безопасным стеком LAMP, настроенным для блокировки уязвимостей. Следующие шаги:
- Создание курсов, пользователей и контента
- Настройка темы
- Установите дополнительные плагины по мере необходимости
- Настройте резервное копирование и создайте план аварийного восстановления
- Отслеживайте журналы на предмет подозрительной активности
- Обновляйте Moodle и зависимые компоненты
Правильная установка и обеспечение безопасности Moodle требует усилий, но в результате вы получите надежную платформу электронного обучения, которой смогут доверять ваши пользователи.