因为apache底层走的是tcp协议,而tcp协议是明文的,当你访问一些购物网站或银行网站办理业务时就非常不安全,因为是明文传递,容易被人抓包。为了实现apache站点安全,一般采用身份验证、来源控制、https这三种方式。下面分别有3个小案例简要介绍这3种方式

案例一:

身份验证方式维护站点安全

首先安装apache软件包,安装完成后我们查看下安装的位置

现在我们先来查看一下httpd服务的配置文件,因为配置文件有900多行,下面只列出需要修改和重要的几行

上面列出的截图有几点需要说明,首先是httpd它的运行者身份是apache,之所以是它,是为了安全考虑。我们现在查看下/etc/passwd中有关apache的相关信息

可以看到apache没有登入权限,因此即使有人***你的web服务器得到了apache的账号密码,他也没有权限登入系统

我们再来看一下httpd.pid这个文件

上图我们可以知道apache是通过产生子进程来响应用户请求的,而httpd.pid记录的httpd父进程的pid

现在我们通过修改配置文件来实现身份验证

然后我们需要创建账号文件,并且添加账号

在/var/www/html下创建说明文件.htaccess

我在站点的主目录下新建了一个html网页,现在重启httpd服务访问一下我们的站点试一下

可以看到只有通过身份验证的用户才能查看我们的站点

案例二:

利用来源控制维护站点安全

如果利用来源控制来维护站点安全,我们只需要修改配置文件中的内容即可。我们可以在    之间插入限制条件来达到目的

现在用192.168.2.106来访问我们的站点看是否能访问

可以看到出现了一个测试页,这个测试页又是从哪来的,我们的站点根目录下只有一个index.html啊。

现在我们在把配置文件中的限制条件修改为允许全部访问看一下效果

上图又出现了我们index.html内容,说明192.168.2.106又可以访问我们的站点了。由此我们知道可以通过在配置文件中加入限制条件来达到来源控制筛选流量维护站点安全的目的。

案例三:

https(http+ssl)实现维护站点的安全

**我们应该知道http走的是80端口,而https走的是443端口

在做之前我们简单了解一下加密和数字证书

首先加密就是将我们的明文信息变成密文信息,更安全。加密又分为对称加密和非对称加密,对称加密即收发双方拥有相同的密钥且加密解密钥匙相同可互相推导,一般用于会话;而非对称加密是加密解密钥匙不同且不可互相推导。

因为非对称加密的牵扯到公钥的传递,而数字证书就是传递公钥,确保公钥完整性和不可抵赖性的。同时应该知道数字证书是由CA 颁发的。

现在我们开始实现https,首先安装openssl,并且查看安装形成的目录及文件

现在编辑openssl的配置文件

因为上面提到的目录和文件除了CA外都没有,需要我们手工创建

创建之后我们产生CA的私钥并利用私钥产生公钥和请求文件

现在加装ssl模块,实现https

现在可以为我们的web服务器颁发证书了,注意顺序是首先产生私钥,利用私钥产生请求文件,最后产生证书。**X509表示的是证书格式

现在已经为我们的web服务器颁发了一份证书,来看一下index.txt中是否有相关记录

将apache配置文件中的80端口禁用,只使用443加密端口

修改/etc/httpd/conf.d/ssl.conf

注意128行是默认关闭的,要把它打开并修改使客户端相信颁发证书的CA,现在访问https://192.168.2.100

现在将CA的证书安装到客户端,使客户端相信我们颁发证书的CA

安装完成后,客户端已经相信了颁发证书的CA,我们再来访问https://192.168.2.100

这次问题是因为证书上的名称与站点名称不匹配,我们可以用dns做一个指向或者修改hosts文件,我在这里修改hosts文件

然后我们来访问https://www.emo.com

可以看到网页正常显示,没有出现验证证书的页面