pache 站点安全
1.身份验证
所谓身份验证其目的就是为了阻止一些非信任用户访问,从而保证网站的安全。就一个网站而言,我们并不需要所有人都能通过web服务的方式访问自己的网站,所以就需要进行用户身份验证,只有通过验证的用户才能访问网站。
就windows而言器web站点的安全,在IIS中的默认网站属性中“目录安全性”内“身份验证和匿名访问”中取消匿名访问即可,这样用户如果不是windows中的用户就无法访问站点。
基本步骤:
编辑 vim /etc/httpd/conf/httpd.conf
237 行改为 alloworverride all
在站点的主目录下面创建说明文件 .htaccess
authuserfile /var/www/.htpasswd
authname "please input your name and password"
authtype basic
require valid-user
产生帐号文件
htpasswd -c 账号文件帐号 (第一次创建账号时账号文件是不存在的要新建一个账号文件)
2.来源控制
依靠控制访问者的来源地址实现站点的安全:指定访问者的地址
编辑 vim /etc/httpd/conf/httpd.conf
改变地址:访问站点输入用户名名后访问成功:
当访问地指改变后访问直接出错:
3.https
https应用:
简介:
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性
工作原理:
①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③客户利用服务器传过来的信息验证服务器的合法性,(服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配)。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。
⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
环境 rhel5.4 httpd-2.2.3 mod-ssl window xp
拓扑图如下:
openssl的配置:
指定CA位置:
vim /etc/pki/tls/openssl.conf (45行)
在/etc/pki/CA下创建缺少的文件及目录
创建目录:mkdir certs newcerts crl
创建文件:touch index.txt serial
CA的默认值更改:
vim /etc/pki/tls/openssl.conf
88―90行 match改为optional
136,141,144 (国家地区城市)更改
产生私钥文件:证书:并更改其权限(600)
openssl genrsa 1024 >private/cakey.pem
openssl req -new -key private/cakey.pem -x509 -out cacert.pem
生成密钥文件并把文件的权限进行更改:
有了密钥文件就可以生成证书:
在生成证书前要对生成证书的文件进行更改改变其默认值:
利用私钥文件生成证书:
安装mod_ssl_2.2.3-31.e15.i386.rpm 用于实现http的加密及实现https的安全访问的模块:
利用yum安装是因为有软件的依赖:本地yum配置见前几节:
生成私钥生成请求文件生成证书:步骤:
创建目录用于存放文件:私钥请求文件证书文件
文件创建的顺序私钥---》请求文件 ---》证书文件
生成私钥文件 openssl genrsa 1024 >私钥文件
生成请求文件 openssl req -new -key 私钥文件 -out 请求文件
生成证书 openssl ca -in 请求文件 -out 证书
web 服务器与证书捆绑:
vim /etc/httpd/conf.d/ssl.conf
重启服务:
访问在浏览器中输入:http://192.168.100.101 (注意:如果本实验与上面的实验连着做上面的实验设置了来源访问访问的主机的地址是192.168,100.123)
成功访问:
https://192.168.100.101 如下图访问受限:提示证书的信任问题以及名称:(应该注意这个证书是我们自己配置颁发的浏览器并不承认 ),下面我们需要进行对问题的解决:
在主机上(192.168.100.123):点击“开始”“运行” mmc 弹出控制台窗口点击“左上角文件”如下:添加/删除管理单元选择证书添加….
另外:/etc/httpd/conf.d/目录下的ssl.conf文件需要更改:128 行:“#”去掉打开该选项
重启httpd 服务:
另:关于“警报”上说的证书上的名称无效:
需要更改主机的配置文件进行域名解析
在
C:\WINDOWS\system32\drivers\etc
目录下的 hosts 文件
我们这次实验就是为了实现https(443端口)的安全访问
所以http(80端口)必须关闭
方法如下:
vim /etc/httpd/conf/httpd.conf
134行加“#”注释
重启服务:
到此即可用https访问:
注意:访问方式:浏览器中输入:https://www.abc.com