怎样加固MySQL

原创 2011年01月13日 00:40:00

怎样加固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 一种手段。也就是说,一旦遭到什么问题,也不会危及到正在运行的主系统。这是一个非常有效的方法,特别是配置网络服务顺序的时候。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

线程间的通信、同步方式与进程间通信方式

文/eesly_yuan(简书作者) 原文链接:http://www.jianshu.com/p/9218692cb209 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。 1...

数据库事务详解

什么是『事务』?事务就是一组具有原子性的操作,这一组操作要么全都正确执行,要么全都不执行。 事务能保证数据库从一种一致性状态转换为另一种一致性状态。事务的四大特性ACID1. 原子性原子性指的是事务...

数据库索引全面解析

索引是什么?数据库中查找操作非常普遍,索引就是提升查找速度的一种手段。索引分类 B+树索引 它就是传统意义上的索引,它是最常用、最有效的索引。 哈希索引 哈希索引是一种自适应的索引,数据库会根据表...

android service 学习 1

Service是android 系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service的启动有两种方式:context.sta...

Java并发编程的艺术(一)——并发编程需要注意的问题

并发是为了提升程序的执行速度,但并不是多线程一定比单线程高效,而且并发编程容易出错。若要实现正确且高效的并发,就要在开发过程中时刻注意以下三个问题: 上下文切换 死锁 资源限制 接下来会逐一分析这三个...

DNS使用的是TCP协议还是UDP协议

原文:http://benbenxiongyuan.iteye.com/blog/1088085 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP...

mysql 加固策略

  • 2012-02-15 09:36
  • 11KB
  • 下载

mysql深度加固方式

  • 2015-09-06 19:56
  • 108KB
  • 下载

MySQL 加固方法

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

mysql jdbc驱动

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)