手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>服务器技术>Web服务器>列表

FreeBSD下构建安全的Web服务器(2)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

(11) 错误日志

建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因:

log_errors = On

同时也要配置错误日志存放的目录,建议根apache的日志存在一起:

error_log = /usr/local/apache2/logs/php_error.log

注意:给文档必须允许apache用户的和组具备写的权限。

3. Mysql的安全配置

我们把Mysql安装在 /usr/local/mysql目录下,我们必须建立一个用户名为mysql,组为mysql的用户来运行我们的mysql,同时我们把他的配置文档拷贝到 /etc目录下:


# cp suport-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf

使用用户mysql来启动我们的mysql:

# /usr/local/mysql/bin/mysqld_safe -user=mysql &

(1) 修改root用户的的口令

缺省安装的mysql是没有密码的,所以我们要修改,以防万一。下面采用三种方式来修改root的口令。

* 用mysqladmin命令来改root用户口令

# mysqladmin -uroot password test

这样,MySQL数据库root用户的口令就被改成test了。(test只是举例,我们实际使用的口令一定不能使用这种易猜的弱口令)

* 用set password修改口令:

mysql> set password for root@localhost=password(’test’);

这时root用户的口令就被改成test了。

* 直接修改user表的root用户口令


mysql> use mysql;
mysql> update user set password=password(’test’) where user=’root’;
mysql> flush privileges;

这样,MySQL数据库root用户的口令也被改成test了。其中最后一句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还能够用root用户及空口令登陆,直到重启MySQL服务器。

(2) 删除默认的数据库和用户

我们的数据库是在本地,并且也只需要本地的php脚本对mysql进行读取,所以很多用户无需。mysql初始化后会自动生成空用户和test库,这会对数据库构成威胁,我们全部删除。

我们使用mysql客户端程式连接到本地的mysql服务器后出现如下提示:


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;

(3) 改变默认mysql管理员的名称

这个工作是能够选择的,根据个人习惯,因为默认的mysql的管理员名称是root,所以假如能够修改的话,能够防止一些脚本小子对系统的穷举。我们能够直接修改数据库,把root用户改为"admin"


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

(4) 提高本地安全性

提高本地安全性,主要是防止mysql对本地文档的存取,比如黑客通过mysql把/etc/passwd获取了,会对系统构成威胁。mysql对本地文档的存取是通过SQL语句来实现,主要是通过Load DATA LOCAL INFILE来实现,我们能够通过禁用该功能来防止黑客通过SQL注射等获取系统核心文档。

禁用该功能必须在 my.cnf 的[mysqld]部分加上一个参数:

set-variable=local-infile=0

(5) 禁止远程连接mysql

因为我们的mysql只需要本地的php脚本进行连接,所以我们无需开socket进行监听,那么我们完万能够关闭监听的功能。

有两个方法实现:

* 配置my.cnf文档,在[mysqld]部分添加 skip-networking 参数

* mysqld服务器中参数中添加 --skip-networking 启动参数来使mysql不监听任何TCP/IP连接,增加安全性。假如要进行mysql的管理的话,能够在服务器本地安装一个phpMyadmin来进行管理。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!