Изменение пароля администратора 


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



ЗНАЕТЕ ЛИ ВЫ?

Изменение пароля администратора



Одним из наиболее важных шагов в защите MySQL, является изменение пароля администратора базы данных, который является по умолчанию пустым. Чтобы сделать это, мы должны запустить MySQL (если конечно, он уже не запущен):

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

и изменить пароль администратора следующим образом:

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

mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');

Хорошей привычкой является отказ от изменений паролей из командной строки, например, используя команду " mysqladmin password ". Это особенно важно, если на сервере работают несколько пользователей. В таком случае пароль можно легко узнать, например, используя команду " psaux " или просмотрев файлы истории команд (~/.history, ~/.bash_history и т.д), в случае если на них установлены неподходящие права доступа.

Удаление значений по умолчанию users/db

Затем, мы должны удалить типовую базу данных (test) и все учетные записи, кроме главной локальной учетной записи:

mysql> drop database test;

mysql> use mysql;

mysql> delete from db;

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

mysql> flush privileges;

Это предотвратит нашу базу данных от установления анонимных подключений, а также, независимо от параметра skip-networking в файле /chroot/mysql/etc/my.cnf --, удаленных подключений.

4.5 Изменение имени учетной записи администратора.

Также рекомендуется изменить заданное по умолчанию имя учетной записи администратора (root), на любое более сложное значение. Такая замена затруднит выполнение "лобовых" и "словарных" атак на пароль администратора. В этом случае, вторгшийся должен будет предположить не только пароль, но и, прежде всего, имя учетной записи администратора.

mysql> update user set user="mydbadmin" where user="root";
mysql> flush privileges;

Удаление файлов истории команд

Наконец, мы должны удалить содержимое файла истории команд mysql (~/.mysql_history), в котором сохраняются все выполненные SQL команды (особенно пароли, сохраненные как открытый текст):

Связь между PHP и mysql

В предыдущей статье "Защищаем PHP: Шаг за шагом", автор упомянул о проблеме связи между PHP и mysql, в случае, если одна из этих программ выполняется в chrooted среде. Поскольку локально PHP связывается с mysql, используя сокет /tmp/mysql.sock, размещение PHP в chrooted среде, означает, что они не могут связываться друг с другом. Для решения этой проблемы, каждый раз, запуская mysql, мы должны создавать постоянную связь с PHP chrooted средой:

ln /chroot/mysql/tmp/mysql.sock /chroot/httpd/tmp/

Обратите внимание на то, что сокет /chroot/mysql/tmp/mysql.sock и каталог /chroot/httpd/tmp должны быть физически помещены в том же самой файловой системе. Иначе программы не смогут связываться друг с другом, т.к. постоянные связи не работают между различными файловыми системами.

Финальные шаги

Теперь мы уже можем создавать все базы данных и учетные записи, которые будут использоваться определенными PHP приложениями. Необходимо подчеркнуть, что эти учетные записи должны иметь права доступа только к базам данных, используемым PHP приложениями. В частности они не должны иметь никаких прав доступа к базе данных mysql, и ни никаким системным или административным привилегиям (FILE, GRANT, ALTER, SHOW DATABASE, RELOAD, SHUTDOWN, PROCESS, SUPER и т.д.).

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

#!/bin/sh

CHROOT_MYSQL=/chroot/mysql

CHROOT_PHP=/chroot/httpd

SOCKET=/tmp/mysql.sock

MYSQLD=/usr/local/mysql/libexec/mysqld

PIDFILE=/usr/local/mysql/var/`hostname`.pid

CHROOTUID=/usr/local/sbin/chrootuid

echo -n " mysql"

case "$1" in

start)

rm -rf ${CHROOT_PHP}/${SOCKET}

nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD} >/dev/null 2>&1 &

sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET} ${CHROOT_PHP}/${SOCKET}

;;

stop)

kill `cat ${CHROOT_MYSQL}/${PIDFILE}`

rm -rf ${CHROOT_MYSQL}/${SOCKET}

;;

*)

echo ""

echo "Usage: `basename $0` {start|stop}" >&2

exit 64

;;

esac

exit 0

В случае с нашей системой FreeBSD, вышеупомянутый сценарий должен быть помещен в каталог /usr/local/etc/rc.d, под именем mysql.sh.

Заключение

Применение методов, описанных в данной статье, позволит нам значительно увеличить степень защиты mysql. Запуская базу данных в chrooted среде, отключая прослушивание 3306/tcp порта, и применяя "строгие" пароли к учетным записям пользователей, мы можем сделать базу данных неуязвимой ко многим видам нападений, которые были бы возможны с заданной по умолчанию инсталляцией.

Хотя никакой метод не позволит нам достигнуть 100% защиты, но применение, описанных данной статье методов, по крайней мере, ограничит возможность нападения пользователей, посещающих наши Web -сервера с недобросовестными намерениями.


 



Поделиться:


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

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