发新话题
打印

使MySQL在攻击者面前保持安全

使MySQL在攻击者面前保持安全

当你连接到MySQL服务器时,你应使用一个密码。密码不以明文在上传输。客户端连接序列中的密码处理在MySQL 4.1.1中已经升级,很安全。如果你仍然使用pre-4.1.1-风格的密码,加密算法不如新算法强;通过一些工作,可以窃取客户端和服务器之间的通信的聪明的攻击者可以破解密码。如果客户端和服务器之间的连接通过不可信任网络,你应使用SSH隧道来加密通信。
所有其它信息以文本传送,可以被可以看到连接的任何人读取。如果你担心这个,你可以使用压缩协议来使通信更难以解密。要想使连接更加安全,你应使用SSH来获得加密的MySQL服务器和MySQL客户端之间的TCP/IP连接。你可以从http://www.openssh.org/找到开放源码SSH 客户端,并可以从http://www.ssh.com/获得商业SSH客户端。
你还可以使用MySQL内部OpenSSL支持。
为了使MySQL系统安全,强烈要求你考虑下列建议:
?
对所有MySQL用户使用密码。客户端程序不需要知道运行它的人员的身份。对于客户端/服务器应用程序,用户可以指定客户端程序的用户名。例如,如果other_user没有密码,任何人可以简单地用mysql -u other_user db_name冒充他人调用mysql程序进行连接。如果所有用户有密码,使用其它用户的账户进行连接要困难得多。
要想更改用户的密码,应使用SET PASSWORD语句。还可以直接更新mysql数据库中的user表。例如,要更改所有root用户的MySQL账户的密码,应:
shell> mysql -u rootmysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')    -> WHERE User='root';mysql> FLUSH PRIVILEGES;?
绝对不要作为Unix的root用户运行MySQL服务器。这样做非常危险,因为任何具有FILE权限的用户能够用root创建文件(例如,~root/.bashrc)。为了防止,mysqld拒绝用root运行,除非使用--user=root选项明显指定。
应可以(并且应该)用普通非特权用户运行mysqld。你可以创建独立的Unix中的mysql账户来以便使所有内容更加安全。该账户只用于管理MySQL。要想用其它Unix用户启动mysqld,增加user选项指定/etc/my.cnf选项文件或服务器数据目录的my.cnf选项文件中的[mysqld]组的用户名。例如:
[mysqld]user=mysql该命令使服务器用指定的用户来启动,无论你手动启动或通过mysqld_safemysql.server启动。
作为其它Unix用户而不用root运行mysqld,你不需要更改user表中的root用户名,因为MySQL账户的用户名与Unix账户的用户名无关。
?
不要允许使用表的符号链接。(可以用--skip-symbolic-links选项禁用)。如果你用root运行mysqld则特别重要,因为任何对服务器的数据目录有写访问权限的人则能够删除系统中的任何文件!
?
确保mysqld运行时,只使用对数据库目录具有读或写权限的Unix用户来运行。
?
不要将PROCESS或SUPER权限授给非管理用户。mysqladmin processlist的输

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

呵呵

提示: 作者被禁止或删除 内容自动屏蔽

TOP

发新话题