怎样加固MySQL

怎样加固MySQL 

 

前言

特别是 Web 应用上, MySQL 已经成为当前网络中使用最多的数据库之一。占据了中小型应用的绝对优势。这一切都源于它小巧易用、平安有效、开放式许可、多平台,更主要的与三大 Web 语言之 — PHP 完美结合。

使得装置 MySQL 服务器成为被经常攻击的对象。更严重的被攻击之后数据库往往遭破坏,但不幸的一个缺省安全的 MySQL 会因为 root 密码为空及顺序漏洞导致被溢出。造成灾难性的后果。下面将进入为了维护数据而进行的捍卫战中。

环境要求

1 .系统环境

系统装置了 GCC 及一些其它要求的软件包,一台 Red Hat 9.0 自定义安装的服务器。比方 Apach PHP 等。装置完系统后的第一件事就是升级系统的软件包。作为 Web 服务器,系统接受 PHP 脚本的请求, PHP 则使用下面将要装置的 MySQL 数据库作为动态发布的接触。

惟一不同之处在于后面建立的 /chroot 与 /tmp 要求在同一个分区上。 分区情况的要求和一般系统差不多。

2 .安全要求

1 MySQL 运行在一个独立的 Chroot 环境下;

2 mysqld 进程运行于一个独立的用户 / 用户组下。

没有 shell 也不能用于其它顺序; 此用户和用户组没有根目录。

并使用一个复杂的密码; 3 修改 MySQL root 帐号。

4 只允许外地连接 MySQL 启动 MySQL 时网络连接被禁止掉;

5 保证连接 MySQL nobodi 帐号登陆被禁止;

6 删除 test 数据库。

装置 MySQL

1 .安装准备

依照上述平安要求需要创建一个用于启动 MySQL 用户和组。 装置 MySQL 之前。

#groupadd mysql

#useradd mysql -c "start mysqld' account" -d /dev/nul -g mysql -s /sbin/nologin

2 .编译和安装

下载 MySQL 源代码包 :

#wget http://mysql.he.net/Downloads/MySQL...l-4.0.16.tar.gz

解压缩 :

#tar -zxvf mysql-4.0.16.tar.gz

如果有特殊要求,一般把 MySQL 装置在 /usr/local/mysql 下。也可自行调整。不过这样做意义不大,因为后面将 Chroot 时只是使用这里的客户工具而已,比方 mysql mysqladmin mysqldump 等。下面就开始编译装置吧。

#./configur --prefix=/usr/local/mysql

--with-mysqld-user=mysql

--with-unix-socket-path=/tmp/mysql.sock

--with-mysqld-ldflags=-all-static

#mak && make install

#strip /usr/local/mysql/libexec/mysqld

#scripts/mysql_install_db

#chown -R root /usr/local/mysql

#chown -R mysql /usr/local/mysql/var

#chgrp -R mysql /usr/local/mysql

惟一需要解释、和一般方法不同的地方在于 --with-mysqld-ldflags=-all-stat 因为需要用到 Chroot 环境,上面各步骤的具体作用在 MySQL 手册里已有介绍。而 MySQL 自身连接成静态后就无需再创建一些库环境了

3 .配置与启动

这几个模板文件位于源文件的 support-fil 目录, MySQL 配置文件需要手工选择、拷贝几个模板文件中的一个到 /etc 下。一共 4 个: small medium larg huge

#cp support-files/my-medium.cnf /etc/my.cnf

#chown root:si /etc/my.cnf

#chmod 644 /etc/my.cnf

启动 MySQL 注意使用用户为 mysql

#/usr/local/mysq/bin/mysqld_saf --user=mysql &

4 .测试

最好的方法就是用 MySQL 客户端来连接数据库。 为了测试装置的顺序是否正确及 MySQL 否已经启动正常。

#/usr/local/mysql/bin/mysql

[root@ftp bin]# mysql

Welcom to the MySQL monitor. Command end with ; or g.

Your MySQL connect id is 687 to server version: 3.23.58

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>

mysql> show databases;

+--------------+

| Databas |

+--------------+

| mysql |

| test |

+--------------+

2 row in set 0.00 sec

mysql>quit

可以关闭数据库: 连接胜利。

#/usr/local/mysql/bin/mysqladmin -uroot shutdown

如果连接失败则需要仔细分析出错原因:

#more /usr/local/mysql/var/`hostname`.err

Chrooting

1 . Chroot 环境

建立会将其与主系统几乎完全隔离, Chroot Unix/ 类 Unix 一种手段。也就是说,一旦遭到什么问题,也不会危及到正在运行的主系统。这是一个非常有效的方法,特别是配置网络服务顺序的时候。

你可能感兴趣的:(怎样加固MySQL)