二)使用认证和授权保护apach

例)[root@localhost ~]# cd /etc/httpd/
[root@localhost httpd]# touch passwd_auth
[root@localhost httpd]# htpasswd -c  /etc/httpd/passwd_auth zhangsan
New password:
Re-type new password:
Adding password for user zhangsan

如果添加第二个账户不需要加“-c”

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

551 <Directory "/var/www/html/abc">
552     AllowOverride authconfig
553 </Directory>

[root@localhost ~]# cd /var/www/html/abc/

[root@localhost abc]# vim .htaccess

authtype  basic
authname  "please input your name and password!"
authuserfile  /etc/httpd/passwd_auth
require   user zhangsan
~                          

 测试:

 

 

 

三)使用apache中的安全模块

 apache有以下几类与安全相关的模块

1.mod_access  能够根据访问者的ip地址或域名,主机名等基于主机的控制访问

2.mod_auth  用来控制用户和组的认证权限,用户名和口令位于纯文本中

3.mod_auth_db和mod_auth_dbm模块将用户信息加到数据库,以便高效管理

4.mod_auth_digest采用md5数字签名方式来验证用户,但需要客户端的支持

5.mod-author_anon 允许匿名防护将E_mail地址做为口令

6.mod_ssl  加密信息与openssl结合使用

开启的方法是在httpd.conf中将相应的功能模块开启

四)使用ssl保证通信安全

数字证书的基本功能

1.信息传输的保密性

2.交易身份的确认性

3.发送信息的不可否认性

4.数字的不可修改性

ssl的通信过程

1.客户端向服务器端发起会话,协商传输加密算法(对称加密:des,rc5,密钥交换:rsa,DH摘要算法md5,sha)

2.服务器端发送给服务器数字证书

3.客户端发送本次对话的密钥给服务器,并验证服务器证书的证书的真实性

4.服务器用自己的私钥解密,并获取密钥

5.双方通信开始

这种情况一般用于某些安全性极高的B2B

例子:)

[root@localhost ~]# yum install openssl* 

[root@localhost etc]# cd /etc/httpd/

[root@localhost httpd]# cd certs/

[root@localhost ~]# openssl genrsa  1024>http.key

[root@localhost certs]# chmod 600 http.key

[root@localhost certs]# openssl req -new -key http.key -out http.csr

[root@localhost certs]# openssl x509 -req -days 3650 -in http.csr -signkey  http.key -out http.crt

[root@localhost certs]# chmod 600 ./*

[root@localhost certs]# mkdir /etc/httpd/conf/ca
[root@localhost certs]# cp ./* /etc/httpd/conf/ca/
[root@localhost certs]# service httpd restart

测试:

 

因为是自签发的证书系统不会默认不会信任。

五)apache日志管理和统计分析

 使用webalizer分析日志流量。

[root@localhost ~]# vim /etc/webalizer.conf (该软件的配置目录)

OutputDir      /var/www/html/usage

[root@localhost ~]# crontab -e 使用这个命令每天生产流量统计分析

[root@localhost ~]# service httpd restart

[root@localhost www]# vim /etc/httpd/conf.d/webalizer.conf

Alias /usage /var/www/usage

<Location /usage>
    Order deny,allow
    Deny from all
    Allow from 10.10.10.0/24
    Allow from ::1
    # Allow from .example.com
</Location>

测试:

 

 

这个就是都可以看到,可以采用前面设置网页用户名和密码访问

六)其他一些安全措施

1.使用专用的用户运行apache

apache配置文件httpd.conf中的user 和 group运行时采用一般的用户权限降低危险性

2.隐藏apache的版本

apache的版本号可以作为******的重要信息进行利用所以需要隐藏版本号。

  2.1 ServerTokens

     ServerTokens OS   用于控制服务器是否响应客户端的请求,向客户端输出服务器类型或是相应的内置模块等重要信息。他们向客户端公开操作系统信息和相关敏感信息,所以为了安全应该使用:

ServerTokens ProductOnly

  2.2 ServerSignature

    控制由系统生成的页面,默认情况下为off即默认不输出任何页面信息当on的时候会输出版本等相关信息因此应为 off

ServerSignature Off

 2.3设置虚拟目录和目录权限

优点:1)便于访问

            2)便于移动站点中的目录

           3)能灵活加大磁盘空间

           4)安全性好

    如:  Alias /icons/ "/var/www/icons/"

  2.4使web运行在“监牢”中

apache服务器需要root绑定到80端口来监听请求,一旦被利用缓冲区溢出,可能被控制整个系统所以linux内核引入了chroot机制,来限定软件的运行范围。

使用软件jail_1.9a.tar.gz实现。