Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #75, МАРТ 2005 г.

На лезвии ножа

Andrey Matveev

Хакер, номер #075, стр. 075-052-5


Важный момент: при создании символической ссылки на каталог phpMyAdmin в качестве исходного параметра выступает путь до /var/www/phpMyAdmin относительно директории /var/www/htdocs. Это делается для того, чтобы не поломать работу phpMyAdmin в Apache chroot.

# cd /var/www/htdocs

# ln -s ../phpMyAdmin /var/www/htdocs/phpMyAdmin

В конфиге config.inc.php отменяем предупреждающие сообщения, касающиеся автоопределения валидных адресов, в качестве типа соединения указываем сокет (вспоминаем, что у нас mysqld не подвешен даже на интерфейс обратной петли) и прописываем имя и пароль администратора MySQL:

# vi /var/www/phpMyAdmin/config.inc.php

$cfg['PmaAbsoluteUri_DisableWarning'] = TRUE;

$cfg['Servers'][$i]['connect_type'] = 'socket';

$cfg['Servers'][$i]['user'] = 'andrushock';

$cfg['Servers'][$i]['password'] = 'secret';

Совершенно очевидно, что доступ к phpMyAdmin необходимо ограничить. Это можно сделать разными способами, я же предлагаю воспользоваться аутентификацией по паролю. Чтобы проконтролировать доступ к каталогу /var/www/htdocs/phpMyAdmin и запретить передавать по Сети пароли в открытом виде (директива SSLRequireSSL), создаем еще один управляющий файл - .htaccess. Преимущество такого подхода состоит в том, что мы не захламляем httpd.conf дополнительными директивами с описанием правил доступа и указанием местонахождения Auth-конфигов и методов аутентификации. Плюс к этому при изменении конфигурации в файле .htaccess не придется перезагружать Web-сервер.

# vi /var/www/htdocs/phpMyAdmin/.htaccess

ХХХХХХХХХХХХХХХХХХX

SSLRequireSSL

AuthType Basic

AuthName "Password Required"

AuthUserFile /var/www/conf/.htpasswd

AuthGroupFile /dev/null

<Limit GET POST>

require user andrushock

</Limit>

Аутентификационную базу /var/www/conf/.htpasswd (ни в коем случае не размещай .htpasswd в каталоге /var/www/htdocs/phpMyAdmin) будем вести с помощью утилиты htpasswd(1). Ключ -c отвечает за создание базы, ключ -m задает использование алгоритма шифрования MD5 вместо применяемой по умолчанию DES'овской функции crypt(3):

# htpasswd -cm /var/www/conf/.htpasswd andrushock

Только суперпользователь и демон httpd имеют право обращаться к базе с паролями:

# chown root:www /var/www/conf/.htpasswd

# chmod 640 /var/www/conf/.htpasswd

Устанавливаем защищенные сеансы

Самое время позаботиться о поддержке безопасных транзакций по протоколу https, ведь наши клиенты будут заносить в web-формы данные кредитных карточек, номера банковских счетов, не говоря уже о логинах и паролях к их аккаунтам. «Конфиденциальность передаваемых данных прежде всего!» - под этим лозунгом создаем приватный RSA-ключ длиной в 1024 бита (такого значения вполне достаточно), сохраняем его в файле /etc/ssl/private/server.key, вводим регистрационную инфу и подписываем сертификат собственным ключом:

# openssl genrsa -out /etc/ssl/private/server.key 1024

# openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr

# openssl x509 -req -days 3650 -in /etc/ssl/private/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt

Назад на стр. 075-052-4  Содержание  Вперед на стр. 075-052-6