1.简介
腾讯云主机安全已经能够最大限度地解决当前服务器面临的主要网络安全风险,帮助企业构建服务器安全防护体系。宏哥在其基础上再加一道防护,使其更加安全。
2.防护罩原理
防护罩原理如下图所示:
从上图我们可以看到,当服务器收到安全威胁的时候,最先收到攻击的是通过互联网的Apache代理服务器(防护罩),然后再攻击腾讯主机服务器。这里主要是利用了反向代理原理。
3.云主机部署
3.1主机环境
系统:Windows
JDK:1.8
Tomcat:9.0
3.2部署
1.首先需要安装JDK,这里自己可以自行查找资料安装,Windows和Linux系统网上都有,宏哥这里不做赘述。
2.安装Tomcat,这里自己可以自行查找资料安装,Windows和Linux系统网上都有,宏哥这里不做赘述。
3.将应用程序部署到Tomcat上,宏哥这里就简单放一个html页面和图片方便后边的演示。在Tomcat安装路径的webapps文件夹下新建一个semp文件夹,然后放入html文件(应用程序),如下图所示:
index.html内容非常简单,如下图所示:
4.启动Tomcat,双击Tomcat安装目录bin文件夹下的startup.bat,如下图所示:
5.访问我们部署的应用程序。浏览器上输入主机http://ip+端口/semp,可以访问到,说明安装部署成功,如下图所示:
4.代理服务器(防护罩)
主机安装部署好以后,我们就开始对代理服务进行安装和部署。具体操作步骤如下:
4.1代理服务器环境
系统:Windows
Apache:httpd-2.2.25-win32-x86-openssl-0.9.8y
4.2部署
4.2.1安装Apache
1.安装Apache也非常简单傻瓜式安装,但是要注意为避免不必要的错误,宏哥推荐安装在根目录,宏哥这里也不做赘述,就附上一些安装过程的截图。如下图所示:
4.2.2验证是否安装成功
1.将应用程序部署到Apache上,宏哥这里就简单放一个html页面和图片方便后边的演示。在Apache安装路径的htdocs文件夹放入html文件(应用程序),如下图所示:
index.html内容非常简单,如下图所示:
2.启动Apache,点击“start”,如下图所示:
3.访问我们部署的应用程序。浏览器上输入主机http://ip+端口,可以访问到,说明安装部署成功,如下图所示:
4.2.3配置反向代理
Apache安装部署好以后,我们就开始对Apache进行反向代理配置,既然是配置那当然是在Apache的配置文件进行一系列的配置,具体操作步骤如下:
1.修改Apache安装路径下的conf/httpd.conf文件,将些配置文件中以下三行注释去掉(去掉 #),如下图所示:
<code style="margin-left:0">LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so Include conf/extra/httpd-vhosts.conf</code>
2.如需修改监听端口搜索Listen 修改成对应端口即可,默认是80,如下图所示:
<code style="margin-left:0">Listen 8050</code>
3.修改Apache安装路径下的conf/extra/httpd-vhosts.conf文件,如下图所示:
<code style="margin-left:0">......... NameVirtualHost *:8050 #修改为与上面监听的端口相同 ......... <VirtualHost *:8050> #此处也修改成相同的端口 ServerAdmin webmaster@dummy-host.172.20.15.78 DocumentRoot "C:/Apache2.2/docs/dummy-host.172.20.15.78" ServerName dummy-host.172.20.15.78 ServerAlias www.dummy-host.172.20.15.78 ErrorLog "logs/dummy-host.172.20.15.78-error.log" CustomLog "logs/dummy-host.172.20.15.78-access.log" common #反向代理设置 添加如下两行 ProxyPass /semp http://172.20.15.47:8090/semp ProxyPassReverse /semp http://172.20.15.47:8090/semp #可配置多个 ProxyPass /bgm http://172.20.15.47:8090/ bgm ProxyPassReverse / bgm http://172.20.15.47:8090/ bgm </VirtualHost></code>
4.2.4验证Apache反向代理
经过前边的配置后,我们需要验证一下反向代理配置是否成功,具体操作步骤如下:
1.重启Apache后,浏览器上输入代理服务器的ip,端口代理服务器Apache监控的端口。http://ip+端口/semp,可以访问到主机部署的应用程序,说明安装部署反向代理成功,如下图所示:
至此,防护罩就添加好了。
5.Apache的ssl
虽然主机被保护在里边,但是外边的代理服务器也要注意防护,人们常说渗透往往是从外围开始的,因此也要引起注意!为此宏哥将Apache的http升级到https。
5.1配置说明
SSL:安全套接层,是netscape公司设计的主要用于web的安全传输协议。这种协议在WEB上获得了广泛的应用。通过证书认证来确保客户端和网站服务器之间的数据是安全。过程大致如下:1、SSL客户端在TCP连接建立之后,发出一个消息给服务器,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个数据包,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。2、Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。
如果对于一般的应用,管理员只需生成“证书请求”(后缀大多为.csr),它包含你的名字和公钥,然后把这份请求交给诸如verisign等有CA服务公司,你的证书请求经验证后,CA用它的私钥签名,形成正式的证书发还给你。管理员再在web server上导入这个证书就行了。如果你不想花那笔钱,或者想了解一下原理,可以自己做CA。从ca的角度讲,你需要CA的私钥和公钥。从想要证书的服务器角度将,需要把服务器的证书请求交给CA。如果你要自己做CA,别忘了客户端需要导入CA的证书(CA的证书是自签名的,导入它意味着你“信任”这个CA签署的证书)。而商业CA的一般不用,因为它们已经内置在你的浏览器中了。实现HTTPS,经我个人测试,每个版本实现的细节都有所不同,但个人认为最为简单的还是httpd-2.2.25-win32-x86-openssl-0.9.8y那么我下面就以这个版本来介绍一下如何实现基于windows下的https。思路: 配置 apache 以支持 SSL 为网站服务器生成私钥及申请文件 安装CA 使用两种方法 通过CA为网站服务器签署证书 测试
5.2配置ssl协议支持
在Apache的反向代理基础上,将其从http升级到https,具体操作步骤如下:
1.在Apache安装路径的打开文件:C:\Apache2.2\conf\httpd.conf将下面注释放开,如下图所示:
放开前
<code style="margin-left:0">#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule ssl_module modules/mod_ssl.so # Secure (SSL/TLS) connections #Include conf/extra/httpd-ssl.conf</code>
放开后
<code style="margin-left:0">LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule ssl_module modules/mod_ssl.so # Secure (SSL/TLS) connections Include conf/extra/httpd-ssl.conf</code>
2.在Apache安装路径的打开文件:打开文件:C:\Apache2.2\conf\extra\httpd-ssl.conf,在里面添加反向代理配置
<code style="margin-left:0"><VirtualHost _default_:443> ProxyPass /semp http://172.20.15.47:8080/semp ProxyPassReverse /semp http://172.20.15.47:8080/semp</code>
5.3配置ssl证书
5.3.1打开docs命令窗口
1.进入Apache安装目录的bin文件夹后,在路径处输入cmd,进入docs命令窗口,如下图所示:
5.3.2为网站服务器生成证书及私钥文件
1.进入docs命令窗口,输入如下命令,生成服务器的私钥,如下图所示:
<code style="margin-left:0">openssl genrsa -out server.key 1024</code>
2.运行完命令,生成一个server.key。
5.3.3生成签署申请
1.进入docs命令窗口,输入如下命令,此时需要输入一些信息,注意Common Name为服务器域名,如果在本机,为本机IP。如下图所示:
<code style="margin-left:0">openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf</code>
2.此时生成签署文件 SERVER.CSR。
5.3.4生成CA私钥
1.进入docs命令窗口,输入如下命令,如下图所示:
<code style="margin-left:0">openssl genrsa -out ca.key 1024</code>
2.多出CA.key文件。
5.3.5利用CA的私钥产生CA的自签署证书
1.进入docs命令窗口,输入如下命令,此时需要输入一些信息,注意Common Name为服务器域名,如果在本机,为本机IP。如下图所示:
<code style="margin-left:0">openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ..\conf\openssl.cnf</code>
5.3.6准备为网站服务器签署证书
1.在Apache安装路径的bin目录下创建文件夹demoCA,如下图所示:
2.在demoCA文件夹下,创建下面的文件(里面创建以下文件,index.txt,serial:serial内容为01,其他为空,以及文件夹 newcerts。),如下图所示:
5.3.7生成server.crt文件
1.进入docs命令窗口,输入如下命令,如下图所示:
<code style="margin-left:0">openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ..\conf\openssl.cnf</code>
5.3.8复制key文件
1.将server.crt,server.key复制到apache的conf文件夹下,如下图所示:
6.重启Apache
1.重启Apache:点击“restart”重启Apache,如下图所示:
7.验证https
7.1安装证书
1.首先我们需要安装证书,以便浏览器能使用公钥进行签名. 双击server.crt,安装证书并选择把证书放入受信任的根证书颁发机构。因为以上并没有申请第三方CA颁发证书,所以我们把自己的证书作为根证书,这样浏览器就不会自下而上的去检查证书,如下图所示:
2.如果我们没有安装证书直接访问就会提示不安全,如下图所示:
7.2代理服务器验证
1.代理服务器本机自己先验证,浏览器上输入主机https://ip+端口,可以访问到,说明安装部署成功,如下图所示:
2.敲入:https://localhost/semp/download/范冰冰.jpg ,如下图所示:
7.3反向代理验证
1.代理服务验证,浏览器上输入主机https://ip+端口,可以访问到,说明安装部署成功,如下图所示:
2.敲入:https://localhost/semp/download/主机安全.jpg ,如下图所示:
注:在配置的时候,一定要注意在DOS命令窗口输入common name输入IP地址,否则会配置出错,导致配置不成功。
8.小结
1.在配置的时候,一定要注意在DOS命令窗口输入common name输入IP地址,否则会配置出错,导致配置不成功。
2.安装配有SSL模块的apache,因为有的Apache不带有ssl,在官网下载时候要注意。
3.网站升级https其实并不复杂,只是一些细节问题上可能会因环境而异,所以不要盲目地仿照他人操作流程,一定要先看服务器环境。其次,因为https使用443端口,所以服务器防火墙要放开443端口访问,服务器还会涉及到安全策略设置,所以在操作时,注意检查端口是否监听。
4.要注意配置文件的编码是 “ANSI” ,要留心修改后,改变文件的编码格式,导致Apache重新启动失败。
9.拓展
既然有反向代理当然有正向代理了,它们原理图,如下图所示:
正向代理:有多个client,想要访问server,这时client与proxy是一个lan,proxy将client的请求转发给server,server只知道有人来请求,但不知道是谁(因为被代理了)
反向代理:这时proxy与server是一个lan,client想要访问server,proxy将client的请求拿到,之后从server里挑了一个出来,应答给client,对于client来说,它以为自己是直接访问server,其实却是proxy经过操作后的结果。
正向代理代理客户端,反向代理代理服务端
反向代理好处:
- 提升对静态文件的处理性能
- 利用 Web 服务器来做负载均衡以及容错
- 无缝的升级应用程序
这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat
宕机或者是升级程序导致用户访问不了。
Apache与tomcat的反向代理有两种方案,一种方案是用mod_jk,另一种方案使用Apache2.2之后自带的模块prxoy,这边主要讲proxy。
关于proxy,有2种代理的方法,一种是用ajp_proxy,一种是http_proxy。从名字上就可以看出,这是两种不同协议的代理方式,因为同属于proxy模块,配置起来差别不大。
未经允许不得转载:木盒主机 » 【云安全最佳实践】在腾讯云主机安全基础上再增加一层金丝软甲(防护罩),让其变得坚不可摧