Создание структуры каталогов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание структуры каталогов



Затем, необходимо скопировать следующие файлы в новую структуру каталога:

cp/usr/local/mysql/libexec/mysqld/chroot/mysql/usr/local/mysql/libexec/

cp/usr/local/mysql/share/mysql/english/er rmsg.sys/chroot/mysql/usr/local/mysql/share/mys ql/english/

cp/etc/hosts/chroot/mysql/etc/

cp/etc/host.conf/chroot/mysql/etc/

cp/etc/resolv.conf/chroot/mysql/etc/

cp/etc/group/chroot/mysql/etc/

Cp/etc/master.passwd/chroot/mysql/etc/passwords

cp/etc/my.cnf/chroot/mysql/etc/

Сжатие паролей и групп

Из файлов: /chroot/mysql/etc/passwords и /chroot/mysql/etc/group мы должны удалить все строки кроме учетной записи mysql и группы. Затем, мы должны, создать базу данных паролей (допустимо только в FreeBSD):

cd /chroot/mysql/etc
pwd_mkdb -d /chroot/mysql/etc passwords
rm -rf /chroot/mysql/etc/master.passwd

Специальные соображения

Как и в случае с Web -сервером Apache, мы должны создать специальный файл устройства /dev/null:

Ls -al /dev/null

Crw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/null

Mknod /chroot/mysql/dev/null c 2 2

Chown root:sys /chroot/mysql/dev/null

Chmod 666 /chroot/mysql/dev/null

Теперь необходимо скопировать базу данных mysql, которая содержит таблицы, созданные в процессе инсталляции mysql:

Cp-R/usr/local/mysql/var//chroot/mysql/usr/local/mysql/var

Chown-R mysql:mysql/chroot/mysql/usr/local/mysql/var

3.7 Локализация

Если будет использоваться какой-либо язык кроме английского, то необходимо будет скопировать нужный набор символов из каталога /usr/local/mysql/share/mysql/charsets.

Проверка конфигурации

Теперь MySQL готов к запуску в chrooted среде. Мы можем проверить, правильно ли запускается MySql, выполнив следующую команду:

chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &

Если произойдет какая-либо ошибка, то необходимо будет использовать команду truss или подобную ей, типа ktrace/kdump, strace, и т.д. Это поможет нам определить и устранить причину проблемы.

Заметьте, что для выполнения процесса mysqld, вместо chroot, как в случае Apache или PHP, использовалась программа chrootuid. Главное отличие состоит в том, что chrootuid меняет владельца запущенного процесса. В нашем примере, mysqld выполняется в chrooted среде, но владелец процесса - не root, а пользователь mysql. C hrootuid во многих операционных системах не установлен по умолчанию, поэтому необходимо загрузить и установить эту программу вручную. Программа Chrootuid может быть загружена здесь.

Конфигурирование сервера

Следующий шаг должен сконфигурировать сервер базы данных в соответствии с нашими требованиями по защите.

В случае заданной по умолчанию инсталляции mysql, главным файлом конфигурации является /etc/my.cnf. Однако, в нашем случае, из-за выполнения сервера в chrooted среде, мы будем использовать два файла конфигурации: /chroot/mysql/etc/my.cnf и /etc/my.cnf. Первый будет использоваться сервером mysql, а второй - утилитами mysql (например: mysqladmin, mysql, mysqldump и т.д.). В обоих случаях, потребуются некоторые изменения конфигурации.

Отключение удаленного доступа

Первое изменение касается порта 3306/tcp, который mysql прослушивает по умолчанию. Поскольку, согласно начальным предположениям по защите, база данных будет использоваться только локально установленными PHP приложениями, мы можем свободно отключить прослушивание этого порта. Это ограничит возможность нападения на базу данных mysql прямыми TCP/IP подключениями с других хостов. Чтобы отключить прослушивание упомянутого порта, необходимо к разделу [ mysqld ] файла /chroot/mysql/etc/my.cnf добавить следующий параметр:

Skip-networking

Если, по некоторым причинам, все же требуется удаленный доступ к базе данных (например, чтобы выполнить удаленное резервирование данных), то можно использовать SSH протокол, как показано ниже:

backuphost$ ssh mysqlserver /usr/local/mysql/bin/mysqldump -A > backup

Улучшение локальной защиты

Следующее изменение должно отключить использование команды LOAD DATA LOCAL INFILE, что поможет предотвратить несанкционированное чтение данных из локальных файлов. Это имеет особенное значение, в случае если в PHP будет найдена новая уязвимость к SQL инъекциям.

Для этой цели, в раздел [ mysqld ] файла /chroot/mysql/etc/my.cnf, необходимо добавить следующий параметр:

Set-variable=local-infile=0

Кроме того, чтобы сделать более удобным использование административных средств базы данных, в разделе [Client] файла /etc/my.cnf, должен быть изменен следующий параметр:

socket = /chroot/mysql/tmp/mysql.sock

Благодаря этому, каждый раз при выполнении этих утилит, не будет никакой потребности передавать в команды: mysql, mysqladmin, mysqldump и т.д., параметр socket =/chroot/mysql/tmp/mysql.sock.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 90; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.221.163 (0.007 с.)