网络安全高级工程师---站点安全

                  网络安全高级工程师---站点安全

一.概要

作为一名网络安全高级工程师,站点安全的设置是必需要掌握的技能。

站点安全总体可分为三类:

1.身份验证

2.来源控制

3.加密访问


1.身份验证:

当我们访问web页面时,会提示我们输入验证身份,口令等验证信息后才能访问,匿名用于访问不了。

2.来源控制:

规定某些特定的主机或ip才能访问web页面,或特定的主机不能访问。

3.加密访问:

加密访问是使用ssl(安全套接字层)来时先对http等协议的明文加密来实现安全的策略。

本文我们用linux 的openssl来实现简单的加密访问。

二.解决方案

对于运行Linux的服务器主机,其中1和2要在目录安全性下解决;

在安装了Apache的服务器上Apache的主配置文件/etc/httpd/conf/httpd.conf做身份验证的规则和来源控制规则即可,先编辑该文件,把第338行的规则改为AllowOverride all;允许所有人访问。

1)身份验证:

1.目录安全性解决身份验证和来源控制的格式:


<directory  +站点目录>

身份验证规则

来源控制规则

</directory >


2.目录/var/www/html/是默认web站点的主目录,我们先编写一个静态的web页面便于访问和测试。

[root@centos modules]# cd /var/www/html/

[root@centos html]# echo "hello" >index.html

当我们站点主目录下还没有web页面,仅有一个index.html时,用http方式连接这个服务器时出现如下:


wKioL1LZN4TjJUR7AAD5N2y5UKU815.jpg

3.要对来访用户验证,就要有验证规则;

在站点主目录(/var/www/html/)下,产生一个 .htaccess文件来说明如何验证:

[root@centos html]# vim  .htaccess   (注意有个点 .)

编辑如下几行脚本:

wKiom1LZN6fSgoxhAABvBN1BaMQ734.jpg

第1行为存放合法用户的文件名及目录;

第2行是跳出的验证界面显示的内容;

第3行是选择调用模块为基本类型;

第4行为只有合法用户允许访问;


4.我们指明了验证账户存放的文件,但是现在还没有,生成该文件;

进入[root@centos ~]# cd /var/www/

执行下面一行创建文件并添加用户zhangsan:

[root@centos www]# htpasswd -c .htpasswd  zhangsan  

New password:     (输入密码 :123)

Re-type new password:  (123)


5.有了账户文件后,重新登录web服务器,发现要输入身份验证。输入正确的身份和口令(zhangsan;123):

wKioL1LZN4TjiB9RAAJKtZ3uezg999.jpg

便成功进入页面:

wKiom1LZN6eRC8gRAADw_9VWViY514.jpg

2).来源控制

1.目录安全性解决身份验证和来源控制的格式:


<directory  +站点目录>

身份验证规则

来源控制规则

</directory >


2.编辑修改Apache的主配置文件/etc/httpd/conf/httpd.conf:

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

wKioL1LZN4WSWL5mAACW5euKSZg043.jpg

把允许的访问ip设为192.168.2.10;

并保存重新启动httpd;

[root@centos ~]# service httpd restart


3.我们的主机ip不是2.10,访问web站点便出现错误:

wKioL1LZN_LjFHCgAAUszXKzEE4456.jpg

查看出错的日志:

[root@centos www]# tail -f /var/log/httpd/error_log

发现结果中的最后一行显示了ip为2.1的主机的客户端访问被拒绝了:

[Sat Jan 18 01:28:17 2014] [error] [client 192.168.2.1] client denied by server configuration: /var/www/html/


3)加密访问(https)

第一部分.在LINUX下利用 openssl 实现CA


1.创建必要的文件

[root@centos ~]# cd /etc/pki/CA

[root@centos CA]# touch serial    

[root@centos CA]# echo "01" >serial

创建私钥:

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

显示如下:

Generating RSA private key, 1024 bit long modulus

...................++++++

...++++++

e is 65537 (0x10001)

改变私钥文件的权限,非管理员不能读写。

[root@centos CA]# chmod 600 private/cakey.pem


2.创建证书:

请求得到一个证书,证书的公钥从私钥中获取,输出名为cacert.pem,格式为509:

[root@centos CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem

在显示需要加入的信息内随便填写一些内容,但是主机名hostname格式要正确:

wKiom1LZOBXy02lxAAMMy0zwIoo583.jpg

3.为了能让其他机构或地区或国家的单位获得ca

要编辑 /etc/pki/tls/openssl.conf做如下修改:

wKioL1LZN_KC42TjAAFe_B1CjYs948.jpg


第二部分.生成服务器证书;

1.为服务器的证书创建一个文件便于存放:

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

产生私钥:

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

改变私钥权限:

[root@centos certs]# chmod 600 httpd.key

2.生成一个服务器请求文件:

wKiom1LZOBWwd_IEAAOMDX-jgrc458.jpg

3.利用ca来签发证书,输出为httpd.cert

wKioL1LZN_Lic1_2AAOFBooW7-k174.jpg

第三部分.把web服务器和证书绑定;


1.安装mod_ssl.so

当用httpd 和 证书绑定时要用到一个模块:mod_ssl

首先查看系统内安装了该模块没有:

[root@centos certs]# rpm -qa |grep mod_ssl

如果系统下没有的话要安装,挂在光盘,利用光盘安装:

[root@centos certs]# yum --disablerepo=* --enablerepo=c6-media install mod_ssl


2.当我们的pc访问web服务器,服务器要给pc出示证书,而证书的目录要在httpd的配置文件中:

编辑配置文件:

[root@centos certs]# vim /etc/httpd/conf.d/ssl.conf  做下面的修改

105 SSLCertificateFile /etc/httpd/certs/httpd.cert  把第105行的目录改为httpd.cert的目录;


当证书出示后,pc会用公钥加密一个key传递到web服务器,此时web服务器要利用自己的私钥来打开key,这就要告诉web服务器私钥的位置;

112 SSLCertificateKeyFile /etc/httpd/certs/httpd.key

保存文件后重启httpd服务;

[root@centos certs]# service httpd restart

用下面的命令查看httpd服务的端口时会多了一个443的加密解密端口;

[root@centos certs]# netstat -tupln |grep httpd

tcp        0      0 :::80                       :::*                        LISTEN      2383/httpd          

tcp        0      0 :::443                      :::*                        LISTEN      2383/httpd  


3.配置完成后,进行测试:

IE浏览器中输入https://192.168.2.101  此时是以加密方法访问;

结果出现下图:

wKiom1LZOHWQ-kTKAAIU3v_5kOY631.jpg


其中第二条警告是因为时间的问题,证书有效期还没有开始,修改一下当前时间在访问;

wKioL1LZOFPQs2E6AAHpjK8V4nU981.jpg


继续编辑[root@centos certs]# vim /etc/httpd/conf.d/ssl.conf

把第121行开启并改为证书的路径:

121 SSLCertificateChainFile /etc/pki/CA/cacert.pem

[root@centos certs]# service httpd restart 重启服务;

再次访问;发现第一条警告还在,进入该界面:

wKiom1LZOHbjm76AAAHejCaFWCA259.jpg


点击查看证书-->证书路径--.>点击才x号的根证书-->查看证书-->安装证书(按默认情况安装即可)。

wKiom1LZOHbitsOIAAGkH1FRr0c256.jpg


再次访问:出现警告说明192.168.2.101的ip地址与域www.abc.com没有做域名解析,这里不用做就行,点击确定访问;

输入账户和密码即可访问:

wKioL1LZOFOwY1DNAAH_RDdKO14627.jpg


此时我们利用了明文访问,即80端口访问,此时编辑 [root@centos certs]# vim /etc/httpd/conf.d/ssl.conf

 136 #Listen 80         关闭80端口,只开启443的密文访问端口。重启服务。

此时用普通的http://来访问web服务器已经不行了,只能用https,这样就实现了加密访问。


你可能感兴趣的:(OpenSSL,站点安全)