Установка и защита Moodle на Ubuntu Linux

Moodle это бесплатная система управления обучением с открытым исходным кодом (LMS), которая используется школами, университетами, предприятиями и другими организациями для организации онлайн-курсов и учебных программ. С помощью Moodle вы можете создавать индивидуальные учебные среды с тестами, форумами, заданиями, видео и многим другим.

Установка 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 требует усилий, но в результате вы получите надежную платформу электронного обучения, которой смогут доверять ваши пользователи.

Добавить комментарий

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