apache web 站点安全

想必大家都知到在windows server 2003上可以建web服务器,而且可以实现身份验证、来源控制以及加密访问。


121540945.jpg

121543309.jpg

121547924.jpg

其实在linux下也可以实现,下面我会给大家详细解释并操作 :使用虚拟机建立web服务器


首先安装httpd文件

121755491.jpg

122001892.jpg

案例1:身份认证

原理:

在很多网站对用户的访问权限进行了严格的限制,用户在访问某些资源时需要给出“用户名/口令”来确认自己的身份。目前,使用最多的身份认证方法是将用户名、口令存放在一个数据库中,当用户要访问某些受限制的资源时,要在某一个页面中输入用户名和口令,程序将用户输入的用户名和口令与数据库存放的“用户名/口令"相比较,如果输入正确,则正常使用资源,否则,资源访问被拒绝。但是,这种身份认证方式有两个很大的问题,一方面只要用户有一次身份认证成功,就可以记录下受限资源的链接地址,在下一次访问时只需输入该地址,而无需通过身份认证过程就可访问受限资源;另一方面用户可以在受限制的资源的超级链接处点右键,选择“属性",就可以查看到受限制资源的链接地址,直接访问该地址,使身份认证不能达到预期的效果。

Apache实现身份认证的基本原理是:当系统管理员启动身份认证功能后,可以在要限制的目录中添加一个默认名“.htaccess"的文件。当用户访问该路径下的资源时,系统就会弹出一个对话框,要求用户输入“用户名/口令"。也就是说,它的身份认证功能不是人为由程序控制,而是由系统直接控制的。这样就避免了用户记录需要认证的资源的超级链接,不会下次直接访问资源。


首先,配置httpd.conf

[root@server1 httpd]# vim /etc/httpd/conf/httpd.conf

在(327行)修改如下所示:

allowoverride all (可以实现身份验证)

来到站点的主目录下(站点主目录在/var/www/html目录下)

[root@server1 Server]# cd /var/www/html/

[root@server1 html]# echo "welcome" >index.html(建个网页)

再创建说明文件 .htaccess

122217254.jpg


进入/var/www/目录下创建.htpasswd并添加账户:

122359107.jpg

122401511.jpg


查看

122430513.jpg

启动apache服务,并验证:

[root@server1 www]# service httpd start

打开浏览器

123333568.jpg

123206289.jpg


案例2:来源控制

只需要在/etc/httpd/conf/httpd.conf(332,333行)加以修改:

123555289.jpg


案列3:加密访问 https (http+ssl)

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTPS和HTTP的区别

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

数字摘要

这个非常简单,我们在下载文件的时候经常会看到有的下载站点也提供下载文件的“数字摘要“,供下载者验证下载后的文件是否完整,或者说是否和服务器上的文件”一模一样“。其实,数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,儿同样的明文其摘要必定一致。 因此,“数字摘要“叫”数字指纹“可能会更贴切一些。“数字摘要“是https能确保数据完整性和防篡改的根本原因。

拓扑图

211258821.jpg

一、实现CA

第一步编辑openssl.cnf文件

[root@server1 ~]#vim /etc/pki/tls/openssl.cnf

211324944.jpg



修改(88,90行)如图:

211324938.jpg

修改(134,147行)默认值如图:

211324322.jpg

创建需要的目录和文件

[root@server1 CA]# mkdir certs newcerts cr1

[root@server1 CA]# touch index.txt serial

[root@server1 CA]# echo "01" >serial(初始值为01)

第二步:先建私钥文件

[root@server1 CA]#openssl genrsa 1024 >private/cakey.pem

[root@server1 CA]# chmod 600 private/cakey.pem(修改权限)

生成证书:

[root@server1 CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem(给自己颁发证书)

212935151.jpg在本目录查询

212151335.jpg

二、搭建web服务器

第一步:结合ssl安装mod_ssl模块:

211731765.jpg

第二步:申请证书

创建并进入certs目录:

[root@server1 ~]# mkdir -pv /etc/httpd/certs

在目录下建httpd.key放私钥文件:

[root@server1 certs]# openssl genrsa 1024 >httpd.key

[root@server1 certs]# chmod600 httpd.key


建httpd.req放请求文件:

212331707.jpg

建httpd.cert放证书文件:

212445346.jpg

现在查看数据库文件(本来为空的,发现现在已添加)

[root@server1 certs]# cd /etc/pki/CA/

[root@server1 CA]# cat index.txt

V140824012802Z01unknown/C=CN/ST=BEIJING/O=abc/OU=tec/CN=www.abc.com

三、捆绑

编辑/etc/httpd/conf.d/ssl.conf文件(112、119行)如图:

212651823.jpg

不使用明文访问的话需要编辑 vim /etc/httpd/conf/httpd.conf

在(134行)将80端口禁掉

213516656.jpg

配置完成;接着需要在浏览器上修改

访问服务器,会出现以下情况:

213642432.jpg

213643638.jpg

我们需要安装证书

213732432.jpg213731397.jpg


接着就可以访问了

213855159.jpg

213801236.jpg