apache web 站点安全
想必大家都知到在windows server 2003上可以建web服务器,而且可以实现身份验证、来源控制以及加密访问。
其实在linux下也可以实现,下面我会给大家详细解释并操作 :使用虚拟机建立web服务器
首先安装httpd文件
案例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
进入/var/www/目录下创建.htpasswd并添加账户:
查看
启动apache服务,并验证:
[root@server1 www]# service httpd start
打开浏览器
案例2:来源控制
只需要在/etc/httpd/conf/httpd.conf(332,333行)加以修改:
案列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能确保数据完整性和防篡改的根本原因。
拓扑图
一、实现CA
第一步编辑openssl.cnf文件
[root@server1 ~]#vim /etc/pki/tls/openssl.cnf
修改(88,90行)如图:
修改(134,147行)默认值如图:
创建需要的目录和文件
[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(给自己颁发证书)
二、搭建web服务器
第一步:结合ssl安装mod_ssl模块:
第二步:申请证书
创建并进入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放请求文件:
建httpd.cert放证书文件:
现在查看数据库文件(本来为空的,发现现在已添加)
[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行)如图:
不使用明文访问的话需要编辑 vim /etc/httpd/conf/httpd.conf
在(134行)将80端口禁掉
配置完成;接着需要在浏览器上修改
访问服务器,会出现以下情况:
我们需要安装证书
接着就可以访问了