На лезвии ножа 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 |