На лезвии ножа Andrey Matveev Хакер, номер #075, стр. 075-052-3 Как ты мог увидеть, главное отличие нашего my-medium.cnf от дефолтного заключается в определении местоположения абсолютного пути до сокета клиента и сервера MySQL. Вместо /var/run/mysql/mysql.sock мы будем использовать /var/www/var/run/mysql/mysql.sock, поэтому своевременно подготавливаем соответствующую поддиректорию: # mkdir -p /var/www/var/run/mysql # chown _mysql:_mysql /var/www/var/run/mysql Для хранения временных файлов, плюшек (cookies) и файлов сессий нелишним будет создать каталог tmp с либеральными правами доступа: # mkdir -p -m 777 /var/www/tmp Крепкий орешек С установкой и конфигурированием разобрались, переходим к запуску демона на орбиту: # /usr/local/bin/mysqld_safe --user=_mysql --open-files=1000 --skip-networking --socket=/var/www/var/run/mysql/mysql.sock & И выполняем ряд несложных операций по увеличению безопасности MySQL: # /usr/local/bin/mysql -u root // Установка пустого пароля для администратора SQL-сервера не делает чести разработчикам MySQL mysql> set password for root@localhost=password("secret"); // Удаляем базу данных test, созданную скриптом mysql_install_db mysql> drop database test; // Удаляем все SQL'ые учетные записи, кроме root mysql> use mysql; mysql> delete from db; mysql> delete from user where not (host="localhost" and user="root"); mysql> flush privileges; // Чтобы усложнить работу брутефорсерам, изменяем имя главной учетной записи mysql> update user set user="andrushock" where user="root"; mysql> flush privileges; mysql> quit Еще две рекомендации. Если в данный момент в системе помимо тебя находятся другие пользователи, не указывай пароль администратора в командной строке (--user=andrushock --password=secret) – в этом случае им легко завладеть, просмотрев список текущих процессов командой 'ps auwwx | grep sql'. Следи за файлами истории команд ~/.history, ~/.bash_history и ~/.mysql_history - они могут содержать пароли в незашифрованном виде. Следить можно так: 'cat /dev/null > ~/.mysql_history' ;-). Хардкорные разборки с PHP Далее у нас на очереди идет PHP со своими расширениями. Я привожу пример для 4.3.10, на момент выхода журнала будут доступны более новые версии PHP. Производим установку вот в такой последовательности: # pkg_add php4-core-4.3.10.tgz # pkg_add php4-mysql-4.3.10.tgz # pkg_add php4-pear-4.3.10.tgz То есть сначала устанавливаем пакет с основным движком, так называемый core-пакадж, затем модуль для работы с базами данных и библиотеку PEAR (набор специальных компонент и расширений для PHP, ставится опционально). После выполнения следующей команды произойдет активация модуля libphp4.so: # /usr/local/sbin/phpxs -s А теперь зададимся вопросом: «Что за интернет-проект без электронной почты?». Да, у нас есть PHP'шная функция mail(), но дело осложняется тем, что транспортный агент ничего не знает о chroot'ном Apache, поэтому в дополнение нам придется установить статически слинкованную версию mini_sendmail. Этот фейковый почтовик будет передавать всю исходящую почту из chroot'а полноценному сендмейлу. Раскрою маленький секрет: на самом деле /usr/sbin/sendmail - тоже не настоящий sendmail, это всего лишь утилита mailwrapper(8), а реальный sendmail находится здесь: /usr/libexec/sendmail/sendmail. |