记一次web系统漏洞整改过程(nginx+Tomcat)
1. 漏洞问题
系统部署采用的是tomcat容器,使用nginx做的转发和处理
这次漏洞整改主要包括两个问题,其他都是升级jar包版本或进行一些系统设置就能完成
限制IP访问,配置只有特定的域名才能访问
设置Https 协议请求
2. 解决办法
2.1 Nginx+Tomcat配置的方式
目的就是禁止ip方式访问应用系统
只能使用特定的域名访问特定的端口应用
找到tomcat的conf/server.xml中的<Host>标签
默认是在148行内容如下
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
然后添加上这么一行
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/>
同时nginx配置如下
server {
listen 80;
server_name www.xxxx.com xxxx.com;
set $flag 0;
if ($host != 'casiclibrary.com'){
set $flag "${flag}1";
}
if ($host != 'www.casiclibrary.com'){
set $flag "${flag}1";
}
# 只有同时不满足两个域名条件的时候,flag的值才是011
# 这是则返回403错误
if ($flag = "011"){
return 403;
}
location / {
proxy_pass http://127.0.0.1:8080/项目名称/; # 本机必须用127.0.0.1,最后需要带‘/’
}
}
其中server_name配置的是指定的域名
8080是tomcat的端口
80是对外提供服务的端口
至此,配置完成,只能通过www.xxxx.com或者xxxx.com访问应用系统了
2.2 Nginx+阿里云免费证书
用购买域名的那个帐号,登录阿里云控制台
在上边的控制台输入“SSL证书”进入操作页面
点击购买证书
很快,10S左右 ,就申请完成了
点击下载按钮,选择你需要配置的环境,我选的nginx
压缩包里边包含两个文件,分别是.key和.pem结尾的文件
在nginx目录中的conf中新建一个文件夹,自己取一个名字
我新建的文件夹叫cert
将从阿里云上申请的证书下载下来放到这个路径下
并在nginx的conf/nginx.conf配置文件中新添加一个server配置
# HTTPS server
#
server {
listen 10443 ssl;
server_name xxxx.com www.xxxx.com;
set $flag 0;
if ($host != 'xxxx.com'){
set $flag "${flag}1";
}
if ($host != 'www.xxxx.com'){
set $flag "${flag}1";
}
if ($flag = "011"){
return 403;
}
ssl_certificate cert/3202289_xxxx.com.pem;
ssl_certificate_key cert/3202289_xxxx.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
add_header X-Frame-Options SAMEORIGIN;
#index index.html index.htm;
}
}
其中listen中配置的是对外提供服务的端口
ssl_certificate cert/3202289_xxxx.com.pem;
ssl_certificate_key cert/3202289_xxxx.com.key;
这就是配置的证书的路径
经过以上配置,就可以通过
https://xxxx.com:10443和https://www.xxxx.com:10443
对外提供https协议的服务了
整改完成
3. 补充
随着互联网技术的发展
网络安全已经不仅仅是一个技术问题了
而应该是我们人人都应该注意的常识问题
技术永远都是有漏洞的
对于普通个人来说
保障我们信息安全的最有效的方式就是
不要打开不明来历的网址
不要轻易将自己的信息输入到不够正规的网站或APP
不要浏览**网站(竟然被和谐了)
当你在凝视深渊,深渊也在凝视你
文/戴先生@2020年6月30日
---end---
更多精彩推荐