二)使用认证和授权保护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
~                          

 测试:

 

web 安全防护(2)_web  服务器  安全防护 

 

web 安全防护(2)_web  服务器  安全防护_02

三)使用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

测试:

 

web 安全防护(2)_web  服务器  安全防护_03

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

五)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>

测试:

 

web 安全防护(2)_web  服务器  安全防护_04 

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

六)其他一些安全措施

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实现。