基于linux平台的WEB安全技术研究 - 图文(7)

2019-04-01 16:28

在Ubuntu中,Apache的软件包时由ubuntu官方核心开发组维护的。他们在编译apache时,只编译进了很少的模块。如果需要其它的模块, 则需要手工添加。这也大大增强了apache的可定制性和灵活性。可以使用apache2 -l命令查到被编译进apache2的模块。 (1) Apache配置文件说明

Ubuntu和Debian对apache2软件包做了很多定制,很多配置文件的布局都和原来的apache2的布局不同。以下是/etc /apache2目录下各个配置文件的说明:

*apache2.conf——全局配置文件 *conf.d/——该目录存放一些一般性的配置 *envvars——存放环境变量,一般不需要修改 *httpd.conf——用户配置文件 *mods-available/——该目录下是已经安装的可用模块 *mods-enabled/——该目录下是已经启用的模块 *ports.conf——httpd服务的端口 *sites-available/——该目录下是可用的虚拟主机 *sites-enabled/——该目录下是已经启用的虚拟主机 其中,apache2.conf是apache2的主配置文件,它会读取上面列出的所有目录和文件。

(2)Apache模块

新安装的Apache编译加载的模块很少,很多模块要手动安装或者加载。可以使用a2enmod查看可用的模块和用a2dismod查看已经启用的模块。 如果要用的模块还没有安装,但是又不知道这个模块在Ubuntu中的确切名称,则可以先用apt-get search libapache2-mod命令进行搜索,找到正确的软件包名称后,再用apt-get install来安装。

3.安全更新

第28页 共48 页

要保证apache的安全,首要任务就是,要及时“打补丁”——当有新的安全更新时,在第一时间内安装该补丁,订阅Ubuntu的安全邮件列表能够在第一时间内知道系统是否存在安全更新:

ubuntu-security-announce@lists.ubuntu.com 在ubuntu网站的可以订阅。

https://lists.ubuntu.com/mailman/listinfo/ubuntu-security-announce 4.隐藏敏感信息

当用户使用远程命令连接主机,并且执行“HEAD/HTTP/1.0″命令的时候,服务器会立刻返回详细的系统和版本的信息,这样对于想搞破坏的黑客来说,可是一个很好的利用漏洞。

我们可以使用ServerTokens指令。修改配置文件 $sudo vi /etc/apache2/apache2.conf 找到ServerTokens Full所在的行,将其改为: ServerTokens Prod 然后重新加载apache配置: $ sudo /etc/init.d/apache2 reload 5.检查apache运行用户

查看目前的apache的运行用户: $ ps auxf | grep apache

图3.3.1 查看Apache运行用户

第29页 共48 页

从上面命令输出可以看出,是www-data这个用户在运行apache。其实这是ubuntu默认的,在apache安装时,创建了www-data这个组合用户。如果发现是root用户在运行apache的话,应该立刻想是否“被黑了”,并立即检查配置文件/etc/apache2/apache2.conf,看看Group和User指令的设置是否正确。在 Ubuntu Server9.10中,这两个指令的默认定义是这样的:

# These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} 也就是说,这里两个指令,是在/etc/apache2/envvars文件中定义的。打开该文件,可以看到默认定义:

export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data 一旦发现该部分设置被改变,你应该立即恢复原配置。此外,你还应该检查系统的www-data用户和组是否存在:

$ cat /etc/group|grep www-data $ cat /etc/passwd|grep www-data 万一不存在的话,则应该手工创建它们: $ sudo groupadd www-data $ sudo useradd -g www-data www-data 然后重启apache:

$ sudo /etc/init.d/apache2 restart 6.密码认证

密码认证,有两种方法:“基本认证”和“摘要式认证”;前者使用明文密码,后者则使用MD5摘要的方式将密码加密后,在网上传输。

(1)基本认证

由于基本认证是明文传输,所以可以在使用https的加密传输的时候启用“基本认证”。这样既能达到使用密码认证的目的,又可以保证密码传输的安全性。

第30页 共48 页

首先要让apache能够读取.htaccess文件,因此先要修改一下站点的配置文件/etc/apache2 /sites-enabled/ssl:

$ sudo vi /etc/apache2/sites-enabled/ssl 加入下面的行:

Options Indexes FollowSymLinks MultiViews AllowOverride AuthConfig Order allow,deny allow from all AllowOverride AuthConfig这一行,代表启用了.htaccess文件。 保存后重新加载apache配置:

$ sudo /etc/init.d/apache2 reload 接下来,就要使用htpasswd命令来创建认证文件了。先建立一个目录,用来存放认证文件:

$ sudo mkdir /var/www/bo-blog/auth $ sudo chmod a+rx /var/www/bo-blog/auth $ cd /var/www/ bo-blog/auth 然后用htpasswd命令来创建认证文件:

$ sudo htpasswd -bc private.passwords Evil 123456 Adding password for user Evil 上述命令创建了一个文件private.passwords,并向该文件写入了一个认证信息:用户名Evil,密码是123456。

接下来,在private目录下创建一个.htaccess文件,在这个文件中将认证文件指定为刚才创建的 private.passwords:

第31页 共48 页

$ sudo mkdir /var/www/bo-blog/private $ cd /var/www/bo-blog/private $ sudo vi .htaccess 在.htaccess文件中加入下列内容:

AuthName ―BasicAut‖ AuthType Basic AuthUserFile /var/www/bo-blog/auth/private.passwords Require valid-user (2)摘要式认证

摘要式认证比较新,可能有些旧版本的浏览器不支持。 要使用摘要式认证,首先要启用该模块: $ sudo a2enmod auth_digest $ sudo /etc/init.d/apache2 restart 假设还是要保护bo-blog网站的private目录,我们要在该目录下创建.htaccess文件。

$ sudo /var/www/bo-blog/private 文件内容如下: AuthType Digest AuthName ―Digest Auth‖ AuthDigestDomain /var/www/bo-blog/private AuthUserFile /var/www/bo-blog/auth/digest.passwords require valid-user 接下来,我们需要用htdigest命令来创建认证文件:

第32页 共48 页


基于linux平台的WEB安全技术研究 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电解质溶液知识点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: