您的位置:首页 > 理论基础 > 计算机网络

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

2014-01-17 22:29 351 查看
网络安全高级工程师---站点安全一.概要作为一名网络安全高级工程师,站点安全的设置是必需要掌握的技能。站点安全总体可分为三类: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方式连接这个服务器时出现如下:




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

在站点主目录(/var/www/html/)下,产生一个 .htaccess文件来说明如何验证:
[root@centos html]# vim .htaccess (注意有个点 .)
编辑如下几行脚本:



第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):



便成功进入页面:



2).来源控制
1.目录安全性解决身份验证和来源控制的格式:
<directory +“站点目录”>身份验证规则来源控制规则</directory >

2.编辑修改Apache的主配置文件/etc/httpd/conf/httpd.conf:
[root@centos ~]# vim /etc/httpd/conf/httpd.conf



把允许的访问ip设为192.168.2.10;
并保存重新启动httpd;
[root@centos ~]# service httpd restart

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



查看出错的日志:
[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格式要正确:



3.为了能让其他机构或地区或国家的单位获得ca
要编辑 /etc/pki/tls/openssl.conf做如下修改:




第二部分.生成服务器证书;
1.为服务器的证书创建一个文件便于存放:
[root@centos ~]# mkdir -pv /etc/httpd/certs
产生私钥:
[root@centos certs]# openssl genrsa 1024 >httpd.key
改变私钥权限:
[root@centos certs]# chmod 600 httpd.key
2.生成一个服务器请求文件:



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



第三部分.把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 此时是以加密方法访问;
结果出现下图:




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




继续编辑[root@centos certs]# vim /etc/httpd/conf.d/ssl.conf
把第121行开启并改为证书的路径:
121 SSLCertificateChainFile /etc/pki/CA/cacert.pem
[root@centos certs]# service httpd restart 重启服务;
再次访问;发现第一条警告还在,进入该界面:




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




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




此时我们利用了明文访问,即80端口访问,此时编辑 [root@centos certs]# vim /etc/httpd/conf.d/ssl.conf
136 #Listen 80 关闭80端口,只开启443的密文访问端口。重启服务。
此时用普通的http://来访问web服务器已经不行了,只能用https,这样就实现了加密访问。

本文出自 “网络 与服务器技术” 博客,请务必保留此出处http://liqirui.blog.51cto.com/4662702/1352692
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: