Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #69, АВГУСТ 2006 г.

Корень зла

ANDREY MATVEEV

Спецвыпуск: Хакер, номер #069, стр. 069-050-3


# fstat | grep mysql

_mysql mysqld 22841 wd /var/mysql 2 drwxr-xr-x r 1024

_mysql mysqld 22841 0 / 67197 crw-rw-rw- r null

_mysql mysqld 22841 1 /var/mysql 3 -rw-rw---- w 25648

_mysql mysqld 22841 2 /var/mysql 3 -rw-rw---- w 25648

_mysql mysqld 22841 3 pipe 0xd69e8828 state

И создаем (для надежности) символическую ссылку на стандартное расположение сокета:

# ln -sf /var/www/var/run/mysql/mysql.sock /var/run/mysql/mysql.sock

[нardening MySQL в подробностях.]

Опциональный шаг: выполняем ряд несложных операций по увеличению безопасности MySQL:

# /usr/local/bin/mysql -u root

// Пустой пароль для администратора MySQL-сервера нам не подходит, устанавливаем новый

mysql> set password for root@localhost=password("noidea");

// Удаляем базу данных test, которая была создана скриптом mysql_install_db

mysql> drop database test;

// Удаляем все MySQL'ные учетные записи, кроме root

mysql> use mysql;

mysql> delete from db;

mysql> delete from user where not (host="localhost" and user="root");

mysql> flush privileges;

// Чтобы усложнить атаки типа bruteforce, можно изменить имя главной учетной записи с root на admin

mysql> update user set user="admin" where user="root";

mysql> flush privileges;

// Настройка закончена

mysql> quit

[хардкорные разборки с PHP.]

Далее на очереди - PHP4 со своими расширениями. Следующими командами мы установим пакет с основным движком - так называемый core-пакадж, модуль для работы с базами данных и библиотеку pear (набор специальных компонентов и расширений для PHP).

# pkg_add php4-core-4.4.1p0.tgz

# pkg_add php4-mysql-4.4.1p0.tgz

# pkg_add php4-pear-4.4.1p0.tgz

Активируем модуль libphp4.so:

# /usr/local/sbin/phpxs -s

Воспользуемся рекомендованной разработчиками версией php.ini:

# cp /usr/local/share/examples/php4/php.ini-recommended /var/www/conf/php.ini

Выставляем корректные права доступа:

# chown root:www /var/www/conf/php.ini

# chmod 640 /var/www/conf/php.ini

Указываем путь до сокета MySQL:

# vi /var/www/conf/php.ini

mysql.default_socket = /var/run/mysql/mysql.sock

И активируем MySQL-модуль:

# /usr/local/sbin/phpxs -a mysql

[сам себе надежный почтальон.]

Для корректной работы электронной почты в Apache chroot необходимо установить статически слинкованную версию mini_sendmail. Этот фэйковый почтовик будет передавать из среды chroot всю исходящую почту полноценному транспортному агенту.

# cd /usr/port/mail/mini_sendmail

# env SUBPACKAGE=-chroot make install

# cp -p /bin/sh /var/www/bin

# mkdir -p /var/www/etc

# cp /etc/{hosts,resolv.conf} /var/www/etc

Теперь снова возвращаемся в php.ini и указываем абсолютный путь до mini_sendmail относительно /var/www (внимание: запись «-fwww@mydomain.ru» обязательно должна идти без пробела).

# vi /var/www/conf/php.ini

sendmail_path = "/bin/mini_sendmail -fwww@mydomain.ru -t"

[не выпускай суккуба из песочницы.]

Разработчики OpenBSD выполнили львиную долю работы за нас, посадив Apache/mod_ssl в chroot-окружение. Нам лишь остается активировать поддержку PHP и разобраться с виртуальными хостами. Для этого переходим к редактированию главного конфигурационного файла индейца:

Назад на стр. 069-050-2  Содержание  Вперед на стр. 069-050-4