Linked-tables infrastructure (Инфраструктура связанных таблиц)
Для использования многих опций (закладок, комментариев, SQL-истории, PDF-схем, преобразования содержимого полей, и т.д.) необходимо создать набор специальных таблиц. Эти таблицы могут находиться как в Вашей базе данных, так и в центральной базе при многопользовательской системе (в этом случае данная БД может быть доступна только для пользователя controluser, соответственно, другие пользователи не имеют прав на неё).
Зайдите в директорию scripts/, здесь вы найдете файл create_tables.sql
(Если используете Windows сервер, обратите особое внимание на ).
Если у Вас установлена версия MySQL сервера 4.1.2 или более позднее, используйте вместо вышеуказанного файла create_tables_mysql_4_1_2+.sql, для новой инсталляции.
Если у вас уже есть готовая инфраструктура и вы обновляете MySQL до версии 4.1.2 или выше, используйте upgrade_tables_mysql_4_1_2+.sql.
Вы можете использовать phpMyAdmin для создания баз данных и таблиц, для этого необходимо обладать администраторскими привилегиями на создание баз данных и таблиц, в связи с чем скрипту может понадобиться небольшая настройка (указание названия базы данных).
После импорта create_tables.sql, Вы должны определить названия таблиц в файле config.inc.php, с помощью директив, описанных в разделе “Конфигурирование”. Кроме этого необходимо обладать правами controluser на данные таблицы (см
ниже, раздел “Использование режима аутентификации”).
Установка Apache
Первый компонент вашегостека LAMP в Ubuntu 20.04 – Apache.
Начните с обновления списков пакетов и установки Apache.Нажмитеy иENTER, когда вас попросят продолжить. Команда:
sudo apt update && sudo apt install apache2
Установка может занять несколько минут.
Настройка брандмауэра
Настоятельно рекомендуется настроить брандмауэр для обеспечения дополнительной безопасности вашего LAMP-стека в Ubuntu 20.04.
Мы начнем с добавления правила брандмауэра для SSH. Вы же не хотите получить блокировку при включении брандмауэра, когда настраиваете сервер удаленно?
sudo ufw allow OpenSSH
Сообщение об ошибке«ERROR: could find a profile matching openSSH» означает, что вы не настраиваете сервер удаленно. Можно игнорировать.
Теперь мы можем добавить правила брандмауэра для Apache:
sudo ufw allow in "Apache Full"
Теперь включите брандмауэр:
sudo ufw enable
Нажмите y, если вы видите сообщение«Command may disrupt existing ssh connections».
Если брандмауэр был активирован правильно, вы должны увидеть сообщение «Брандмауэр активен и включен при запуске системы».
Вы также можете проверить текущее состояние брандмауэра с помощью:
sudo ufw status
Ниже мы видим, что брандмауэр активен и имеет два правила для каждой службы.v6это сокращение от IPv6.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache Full (v6) ALLOW Anywhere (v6)
Тестовый Apache
Чтобы узнать, правильно ли установлен Apache на Ubuntu 20.04, мы можем проверить текущее состояние службы:
sudo service apache2 status
Если он включен и работает, вы должны увидеть зеленое активное состояние.
Если вы получаете следующую ошибку о полном доменном имени, вы можете игнорировать ее:
apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Sat 2020-03-31 08:44:04 CEST; 15min ago Main PID: 5727 (apache2) Tasks: 55 (limit: 4915) CGroup: /system.slice/apache2.service ├─5727 /usr/sbin/apache2 -k start ├─5728 /usr/sbin/apache2 -k start └─5729 /usr/sbin/apache2 -k start Mar 31 08:44:04 ubuntu2004 systemd: Starting The Apache HTTP Server... Mar 31 08:44:04 ubuntu2004 apachectl: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Mar 31 08:44:04 ubuntu2004 systemd: Started The Apache HTTP Server.
Возможно, вам придется нажать кнопкуqдля выхода из проверки состояния сервера при использовании SSH-клиента.
Теперь, когда служба Apache запущена, вы имеете возможность просмотреть тестовую веб-страницу Apache через свой веб-браузер.
Введите IP-адрес вашего сервера в адресную строку и нажмитеENTER.
Все готово!Вы можете найти страницу приветствия Apache в папке/var/www/html.Чтобы отредактировать этот файл, необходимо ввести:
sudo nano /var/www/html/index.html
НажмитеCTRL+X, чтобы выйти из текстового редактора nano.
Если у вас есть доменное имя, вы можете указать его в IP-адресе вашего сервера без дальнейшей настройки, так как Apache должен загрузить эту страницу по умолчанию.Но если вы хотите разместить несколько доменов на своем сервере или настроить SSL-сертификаты с помощью Let’s Encrypt, вам следует настроить виртуальный хост (инструкция будет в конце этого руководства).
Step Two — Secure your phpMyAdmin Instance
We were able to get our phpMyAdmin interface up and running fairly easily. However, we are not done yet. Because of its ubiquity, phpMyAdmin is a popular target for attackers. We need to secure the application to help prevent unauthorized use.
One of the easiest way of doing this is to place a gateway in front of the entire application. We can do this using Apache’s built-in authentication and authorization functionalities.
Configure Apache to Allow .htaccess Overrides
First, we need to enable the use of file overrides by editing our Apache configuration file.
We will edit the linked file that has been placed in our Apache configuration directory:
We need to add an directive within the section of the configuration file, like this:
<pre>
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
<span class=“highlight”>AllowOverride All</span>
…
</pre>
When you have added this line, save and close the file.
To implement the changes you made, restart Apache:
Create an .htaccess File
Now that we have enabled use for our application, we need to create one to actually implement some security.
In order for this to be successful, the file must be created within the application directory. We can create the necessary file and open it in our text editor with root privileges by typing:
Within this file, we need to enter the following information:
Let’s go over what each of these lines mean:
- AuthType Basic: This line specifies the authentication type that we are implementing. This type will implement password authentication using a password file.
- AuthName: This sets the message for the authentication dialog box. You should keep this generic so that unauthorized users won’t gain any information about what is being protected.
- AuthUserFile: This sets the location of the password file that will be used for authentication. This should be outside of the directories that are being served. We will create this file shortly.
- Require valid-user: This specifies that only authenticated users should be given access to this resource. This is what actually stops unauthorized users from entering.
When you are finished, save and close the file.
Create the .htpasswd file for Authentication
Now that we have specified a location for our password file through the use of the directive within our file, we need to create this file.
We actually need an additional package to complete this process. We can install it from our default repositories:
Afterward, we will have the utility available.
The location that we selected for the password file was “”. Let’s create this file and pass it an initial user by typing:
<pre>
sudo htpasswd -c /etc/phpmyadmin/.htpasswd <span class=“highlight”>username</span>
</pre>
You will be prompted to select and confirm a password for the user you are creating. Afterwards, the file is created with the hashed password that you entered.
If you want to enter an additional user, you need to do so without the flag, like this:
<pre>
sudo htpasswd /etc/phpmyadmin/.htpasswd <span class=“highlight”>additionaluser</span>
</pre>
Now, when you access your phpMyAdmin subdirectory, you will be prompted for the additional account name and password that you just configured:
<pre>
http://<span class=“highlight”>domainnameor_IP</span>/phpmyadmin
</pre>
After entering the Apache authentication, you’ll be taken to the regular phpMyAdmin authentication page to enter your other credentials. This will add an additional layer of security since phpMyAdmin has suffered from vulnerabilities in the past.
Шаг 3 – Установка PHP
PHP это компонент, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к нашим базам данных MySQL для получения информации и передавать обработанный контент в наш веб-сервер для отображения.
Мы можем вновь воспользоваться менеджером пакетов для установки компонентов. Мы также добавим некоторые вспомогательные пакеты, чтобы код на PHP мог работать с нашим сервером Apache, а также обращаться к базе данных MySQL:
Данная команда должна установить PHP без каких либо проблем. Вскоре мы это проверим.
В большинстве случаев, мы захотим изменить способ, который использует Apache для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием . Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы .
Для этого введите следующую команду, чтобы открыть файл в текстовом редакторе с привилегиями root-пользователя:
Содержимое файла будет выглядеть следующим образом:
/etc/apache2/mods-enabled/dir.conf
Мы хотим переместить PHP файл , выделенный выше, на первое место после спецификации следующим образом:
/etc/apache2/mods-enabled/dir.conf
После внесения правок сохраните и закройте файл сочетанием клавиш CTRL-X. Вам придется подтвердить операцию вводом Y и затем нажатием клавиши ENTER для подтверждения места сохранения файла.
После этого нам необходимо перезапустить Apache для применения внесенных изменений. Вы можете сделать это при помощи команды:
Мы также можем проверить статус сервиса используя :
Установка модулей PHP
Чтобы расширить функциональность PHP, мы можем установить некоторые дополнительные модули.
Для просмотра доступных опций для модулей и библиотек PHP вы можете передать результат в , которая позволит вам проматывать вывод:
Используйте клавиши стрелок вверх и вниз для промативания списка, для выхода нажмите q.
В результате вам будут показаны все опциональные компоненты, которые можно установить, сопровождаемые коротким описанием для каждого:
Чтобы получить больше информации по каждому модулю, вы можете поискать в Интернете или посмотреть полное описание пакета при помощи команды:
Ответ будет содержать много текста, среди которого есть поле . Именно оно и будет содержать расширенное описание функциональности, предоставляемой модулем.
Например, чтобы узнать назначение модуля , мы можем выполнить команду:
Помимо большого количества прочей информации, вы увидите следующее:
Если после изучение вы решили, что хотите установить пакет, вы можете сделать это используя команду как мы делали ранее при установке другого программного обеспечения.
Если мы решили, что хотим установить , мы можем ввести команду:
Для установки сразу нескольких модулей, вы можете перечислить их через пробелы следом за командой следующим образом:
Теперь ваш стек LAMP установлен и сконфигурирован. Однако нам еще предстоит протестировать PHP.
Step 1 — Installing phpMyAdmin
To get started, we will install phpMyAdmin from the default Ubuntu repositories.
This is done by updating your server’s package index and then using the packaging system to pull down the files and install them on your system:
This will ask you a few questions in order to configure your installation correctly.
Warning: When the prompt appears, “apache2” is highlighted, but not selected. If you do not hit to select Apache, the installer will not move the necessary files during installation. Hit , , and then to select Apache.
- For the server selection, choose
- Select when asked whether to use to set up the database
- You will then be asked to choose and confirm a MySQL application password for phpMyAdmin
The installation process adds the phpMyAdmin Apache configuration file into the directory, where it is read automatically. The only thing you need to do is explicitly enable the PHP extension, which you can do by typing:
Afterwards, restart Apache for your changes to be recognized:
phpMyAdmin is now installed and configured. However, before you can log in and begin interacting with your MySQL databases, you will need to ensure that your MySQL users have the privileges required for interacting with the program.
Установка phpMyAdmin в Ubuntu 20.04
Прежде чем мы сможем установить phpMyAdmin Ubuntu, необходимо убедиться, что у вас установлено расширение php для работы с текстовыми строками в формате юникода. Для его установки выполните в терминале команду:
Теперь можно установить сам пакет phpMyAdmin при помощи команды:
Установщик спросит вас, какой веб-сервер будет использоваться для работы программы. Отметьте с помощью кнопки Пробел пункт apache2, а затем с помощью Tab и Enter нажмите кнопку Ок:
Далее установщик предложит создать базу данных для phpMyAdmin, в которой будет находиться служебная информация программы и необходимые настройки, необходимо согласиться выбрав пункт Yes:
На следующем этапе необходимо придумать пароль для пользователя phpmyadmin, который будет использоваться программой для доступа к собственной базе данных:
Далее программа попросит вас повторить заданный ранее пароль:
После этого установка phpMyAdmin Ubuntu 20.04 завершена.
Step 3 — Securing Your phpMyAdmin Instance
Because of its ubiquity, phpMyAdmin is a popular target for attackers, and you should take extra care to prevent unauthorized access. One way of doing this is to place a gateway in front of the entire application by using Apache’s built-in authentication and authorization functionalities.
To do this, you must first enable the use of file overrides by editing your phpMyAdmin installation’s Apache configuration file.
Use your preferred text editor to edit the file that has been placed in your Apache configuration directory. Here, we’ll use :
Add an directive within the section of the configuration file, like this:
/etc/apache2/conf-available/phpmyadmin.conf
When you have added this line, save and close the file. If you used to edit the file, do so by pressing , , and then .
To implement the changes you made, restart Apache:
Now that you have enabled the use of files for your application, you need to create one to actually implement some security.
In order for this to be successful, the file must be created within the application directory. You can create the necessary file and open it in your text editor with root privileges by typing:
Within this file, enter the following information:
/usr/share/phpmyadmin/.htaccess
Here is what each of these lines mean:
- : This line specifies the authentication type that you are implementing. This type will implement password authentication using a password file.
- : This sets the message for the authentication dialog box. You should keep this generic so that unauthorized users won’t gain any information about what is being protected.
- : This sets the location of the password file that will be used for authentication. This should be outside of the directories that are being served. We will create this file shortly.
- : This specifies that only authenticated users should be given access to this resource. This is what actually stops unauthorized users from entering.
When you are finished, save and close the file.
The location that you selected for your password file was . You can now create this file and pass it an initial user with the utility:
You will be prompted to select and confirm a password for the user you are creating. Afterwards, the file is created with the hashed password that you entered.
If you want to enter an additional user, you need to do so without the flag, like this:
Then restart Apache to put authentication into effect:
Now, when you access your phpMyAdmin subdirectory, you will be prompted for the additional account name and password that you just configured:
After entering the Apache authentication, you’ll be taken to the regular phpMyAdmin authentication page to enter your MySQL credentials. By adding an extra set of non-MySQL credentials, you’re providing your database with an additional layer of security. This is desirable, since phpMyAdmin has been vulnerable to security threats in the past.
Настройка виртуального домена
Настройка виртуального домена зависит от веб-сервера, который мы используем. Разберем примеры для NGINX и Apache.
NGINX
В данном примере мы рассмотрим настройку связки NGINX + php-fpm. Также мы сконфигурируем два варианта прослушивания — виртуальный домен и с добавлением пути /phpmyadmin.
1) На отдельном домене
Создаем конфигурационный файл для виртуального домена:
vi /etc/nginx/conf.d/phpMyAdmin.conf
server {
listen 80;
server_name phpmyadmin.dmosk.local;
set $root_path /usr/share/phpMyAdmin;
location / {
root $root_path;
index index.php;
}
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
fastcgi_read_timeout 300;
}
}
* где:
listen — порт, на котором слушает nginx для данного домена.
server_name — домен для которого применяются настройки server. В данном примере phpmyadmin.dmosk.local.
root_path — переменная, в которую мы заносим наш путь до phpMyAdmin.
location / — настройки для запросов к серверу. В конкретном случае, мы используем root_path в качестве корневой директории для скриптов сайта; опция index нужна для поиска скрипта по умолчанию, если нет явного обращения клиентом.
location ~ \.php$ — параметры для обработки скриптов php. В нашем случае, мы обрабатываем скрипты с помощью php-fpm
Стоить обратить внимание, что последний может слушать на порту (по умолчанию, 9000) или через сокет-файл. В примере выше используется последний вариант, а способ с портом закомментирован.
fastcgi_pass — данный параметр важен и зависит от настройки php-fpm
Если последний слушает на порту, мы задаем первый вариант (который закомментирован), иначе — указываем путь до сокетного файла.
Проверяем корректность настройки nginx:
nginx -t
… и если ошибок нет, перезапускаем сервис:
systemctl restart nginx
2) С помощью location /phpmyadmin
Открываем конфигурационный файл для домена по умолчанию:
vi /etc/nginx/conf.d/default.conf
* в вашей ситуации, файл с доменом по умолчанию может быть другим.
Добавляем location ^~ /phpmyadmin со следующими настройками:
server {
listen 80 default_server;
…
location /phpmyadmin {
root /usr/share/;
index index.php;
location ~ ^/phpmyadmin/(.+\.php)$ {
root /usr/share/;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
}
* где:
root — каталог, в котором находится каталог с phpmyadmin с порталом.
location ~ \.php$ — параметры для обработки скриптов php. В нашем случае, мы обрабатываем скрипты с помощью php-fpm
Стоить обратить внимание, что последний может слушать на порту (по умолчанию, 9000) или через сокет-файл. В примере выше используется последний вариант, а способ с портом закомментирован.
fastcgi_pass — данный параметр важен и зависит от настройки php-fpm
Если последний слушает на порту, мы задаем первый вариант (который закомментирован), иначе — указываем путь до сокетного файла.
Проверяем корректность настройки nginx:
nginx -t
… и если ошибок нет, перезапускаем сервис:
systemctl restart nginx
3) Проверка настройки php-fpm
После настройки nginx проверяем настройку php-fpm:
vi /etc/php-fpm.d/www.conf
Так как в нашем примере мы используем подключение на основе сокетов, то настройка опции listen должна быть такой:
listen = /run/php-fpm/www.sock
* на основе порта — listen = 127.0.0.1:9000.
Если конфигурационный файл пришлось менять, перезапускаем сервис:
systemctl restart php-fpm
Apache
Создаем конфигурационный файл для виртуального домена:
vi /etc/httpd/conf.d/phpMyAdmin.conf
<VirtualHost *:80>
Define root_domain phpmyadmin.dmosk.local
Define root_path /usr/share/phpMyAdmin
ServerName ${root_domain}
ServerAlias www.${root_domain}
DocumentRoot ${root_path}
<Directory /usr/share/phpMyAdmin>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
Проверяем корректность настройки apache:
apachectl configtest
… и если ошибок нет, перезапускаем сервис:
systemctl restart httpd
Install phpMyAdmin
The easiest way to install phpmyadmin is through apt-get:
sudo apt-get install phpmyadmin apache2-utils
During the installation, phpMyAdmin will walk you through a basic configuration. Once the process starts up, follow these steps:
- Select Apache2 for the server
- Choose YES when asked about whether to Configure the database for phpmyadmin with dbconfig-common
- Enter your MySQL password when prompted
- Enter the password that you want to use to log into phpmyadmin
After the installation has completed, add phpmyadmin to the apache configuration.
sudo nano /etc/apache2/apache2.conf
Add the phpmyadmin config to the file.
Include /etc/phpmyadmin/apache.conf
Restart apache:
sudo service apache2 restart
You can then access phpmyadmin by going to youripaddress/phpmyadmin. The screen should look like this
Настройка mysql в Ubuntu
Перед тем как вы сможете полноценно использовать только что установленную базу данных, необходимо выполнить ее первоначальную настройку. Для этого был разработан специальный скрипт, выполните его:
На первом шаге настраивается плагин валидации пароля. Чтобы его включить нажмите Y, или его можно не включать. Затем надо задать сложность пароля, который позволит установить этот плагин. Здесь 0 означает слабый пароль, а 2 – сложный. Когда плагин будет настроен введите пароль root и подтвердите, что хотите использовать именно его:
Введите Y для отключения анонимного доступа к MySQL, затем ещё раз Y чтобы запретить подключаться к базе от имени root удаленно:
Снова Y, чтобы удалить тестовую базу данных. Затем, обновите привилегии для пользователей:
После завершения настройки вы можете подключиться к пользователя root к серверу баз данных из командной строки:
Здесь нам необходимо создать пользователя, от имени которого мы будем использовать базу данных, а также саму базу данных. Для этого воспользуемся командами SQL. Сначала создаем базу данных:
Далее создадим пользователя:
Слова my_user и password нужно заменить на свои имя пользователя и пароль. Дальше нужно дать права пользователю на управление этой базой данных:
Или вы можете дать права только на несколько инструкций:
Если какую-либо инструкцию нужно запретить, удалите ее:
После завершения работы с правами нужно их обновить:
Чтобы убедиться что нет никого лишнего, вы можете вывести список пользователей:
Также вы можете посмотреть полномочия для нужного пользователя:
Теперь установка MySQL Ubuntu 20.04 полностью завершена и вы можете использовать эту базу данных для решения своих задач.
Шаг 3 — Обеспечение безопасности phpMyAdmin
Из-за своей вездесущности phpMyAdmin часто становится мишенью для атак, поэтому вам нужно дополнительно позаботиться о предотвращении несанкционированного доступа. Один из способов — это размещение шлюза перед всем приложением с помощью встроенного в Apache функционала авторизации и аутентификации через .
Чтобы сделать это, вы должны сначала активировать перезапись файла , изменив файл конфигурации Apache вашей установки phpMyAdmin.
Воспользуйтесь предпочитаемым текстовым редактором для редактирования файла , который находится в каталоге конфигурации Apache. Мы будем использовать :
Добавьте директиву в раздел файла конфигурации , например:
/etc/apache2/conf-available/phpmyadmin.conf
После добавления этой строки сохраните и закройте файл. Если вы использовали для редактирования файла, нажмите , , а затем .
Перезапустите Apache, чтобы изменения вступили в силу.
Теперь, когда вы активировали использование файлов для вашего приложения, вам нужно создать этот файл для реализации этого уровня защиты.
Чтобы этот файл мог использоваться, он должен находиться в каталоге приложения. Вы можете создать необходимый файл и открыть его в текстовом редакторе с привилегиями root с помощью следующей команды:
В этом файле введите следующую информацию:
/usr/share/phpmyadmin/.htaccess
Вот что означает каждая из этих строк:
- : эта строка указывает тип аутентификации, используемый вами. Данный тип подразумевает использование аутентификации по паролю с помощью файла пароля.
- : данная строка устанавливает сообщение для диалогового окна аутентификации. Вы должны указывать только общую информацию, чтобы неавторизованные пользователи не получили никакой информации о том, что вы защищаете.
- : указывает местоположение файла пароля, который будет использоваться для аутентификации. Он должен находиться вне обслуживаемых каталогов. Скоро мы создадим этот файл.
- : указывает, что только выполнившие аутентификацию пользователи должны иметь доступ к этому ресурсу. Благодаря этому параметру неавторизованные пользователи не смогут выполнить вход.
После завершения редактирования сохраните и закройте файл.
Вы использовали следующее местонахождение для вашего файла пароля . Теперь вы можете создать этот файл и передать его для первоначального пользователя с помощью утилиты :
Вам будет предложено выбрать и подтвердить пароль для пользователя, которого вы создаете. В результате будет создан файл с хэшированным паролем, который вы добавили.
Если вы хотите ввести дополнительного пользователя, вам нужно сделать это без флага , например:
Теперь, когда вы можете получить доступ к подкаталогу phpMyAdmin, вам будет предложено указать дополнительное имя учетной записи и пароль, которые вы только что задали:
После выполнения аутентификации в Apache вы перейдете на стандартную страницу аутентификации phpMyAdmin для ввода ваших учетных данных MySQL. Добавив дополнительный набор учетных данных, не используемый MySQL, вы обеспечиваете для вашей базы данных дополнительный слой защиты. Это желательно, поскольку в прошлом phpMyAdmin часто становился объектом использующих уязвимости атак.