Поиск по сайту:

Как настроить HTTPS (SSL-сертификаты) для защиты входа в PhpMyAdmin


Чтобы познакомить вас с этим советом, давайте проанализируем HTTP-трафик между клиентским компьютером и сервером Debian 8, где мы допустили невинную ошибку при входе в систему с использованием учетных данных root-пользователя базы данных в нашей последней статье: Изменить и защитить. URL-адрес входа в PhpMyAdmin по умолчанию

Как мы упоминали в предыдущем совете, пока не пытайтесь сделать это, если вы не хотите раскрывать свои учетные данные. Чтобы начать перехват трафика, мы ввели следующую команду и нажали Enter:

tcpdump port http -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20

Нам не понадобится много времени, чтобы понять, что имя пользователя и пароль были отправлены по сети в текстовом формате, как вы можете видеть в усеченном выводе tcpdump в файле изображение ниже.

Обратите внимание, что мы скрыли часть пароля root, пометив ее синей отметкой:

Чтобы этого избежать, давайте защитим страницу входа сертификатом. Для этого установите пакет mod_ssl в дистрибутивах на базе CentOS.

yum install mod_ssl

Хотя мы будем использовать путь и имена Debian/Ubuntu, та же процедура действительна для CentOS и RHEL, если вы замените приведенные ниже команды и пути. с эквивалентами CentOS.

Создайте каталог для хранения ключа и сертификата:

mkdir /etc/apache2/ssl    [On Debian/Ubuntu based systems]
mkdir /etc/httpd/ssl      [On CentOS based systems]

Создайте ключ и сертификат:

----------- On Debian/Ubuntu based systems ----------- 
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

----------- On CentOS based systems ----------- 
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
Пример вывода
........................+++
.....................................................+++
writing new private key to '/etc/httpd/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Maharashtra
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint
Organizational Unit Name (eg, section) []:TecMint
Common Name (eg, your name or your server's hostname) []:TecMint
Email Address []:[email 

Затем проверьте ключ и сертификат.

cd /etc/apache2/ssl/   [On Debian/Ubuntu based systems]
cd /etc/httpd/ssl/     [On CentOS based systems]
ls -l

total 8
-rw-r--r--. 1 root root 1424 Sep  7 15:19 apache.crt
-rw-r--r--. 1 root root 1704 Sep  7 15:19 apache.key

В Debian/Ubuntu убедитесь, что Apache прослушивает порт 443 для сайта по умолчанию (/etc/apache2/sites- доступный/000-default.conf) и добавьте три строки, связанные с SSL, в объявление VirtualHost:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

В дистрибутивах на базе CentOS сообщите Apache прослушивать порт 443 и найдите директиву Listen в /etc/httpd/conf/ httpd.conf и добавьте под ним приведенные выше строки.

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

Сохраните изменения, загрузите модуль SSL Apache в дистрибутивах Debian/UbuntuCentOS он загружается автоматически при установке mod_ssl ранее):

a2enmod ssl

Заставьте phpmyadmin использовать SSL, убедитесь, что следующая строка присутствует в /etc/phpmyadmin/config.inc.php или / файл etc/phpMyAdmin/config.inc.php:

$cfg['ForceSSL'] = true;

и перезапустите веб-сервер:

systemctl restart apache2   [On Debian/Ubuntu based systems]
systemctl restart httpd     [On Debian/Ubuntu based systems]

Затем запустите веб-браузер и введите https:///my (узнайте, как изменить URL-адрес для входа в PhpMyAdmin), как показано ниже.

Важно! Обратите внимание: здесь говорится только о том, что соединение небезопасно, поскольку мы используем самозаверяющий сертификат. Нажмите Дополнительно и подтвердите исключение безопасности:

После подтверждения исключения безопасности и перед входом в систему давайте начнем анализировать трафик HTTP и HTTPS:

tcpdump port http or port https -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20

Затем войдите в систему, используя те же учетные данные, что и ранее. Сниффер трафика в лучшем случае уловит только тарабарщину:

На этом пока все, в следующей статье мы расскажем вам, как ограничить доступ к PhpMyAdmin с помощью имени пользователя и пароля, а до тех пор следите за обновлениями Tecmint.