Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Изменение пароля администратора ⇐ ПредыдущаяСтр 4 из 4
Одним из наиболее важных шагов в защите 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 (~/.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 с.) |