记一次web系统漏洞整改过程(nginx+Tomcat)

1. 漏洞问题

系统部署采用的是tomcat容器,使用nginx做的转发和处理

这次漏洞整改主要包括两个问题,其他都是升级jar包版本或进行一些系统设置就能完成

  • 限制IP访问,配置只有特定的域名才能访问

  • 设置Https 协议请求

2. 解决办法

2.1 Nginx+Tomcat配置的方式

目的就是禁止ip方式访问应用系统

只能使用特定的域名访问特定的端口应用

找到tomcat的conf/server.xml中的标签

默认是在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 &quot;%r&quot; %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证书”进入操作页面

image

点击购买证书

image

image

image

image

image

image

image

image

提交审核,会提示电话联系你,但是一般不会

很快,10S左右 ,就申请完成了

image

点击下载按钮,选择你需要配置的环境,我选的nginx

压缩包里边包含两个文件,分别是.key和.pem结尾的文件

image

在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中配置的是对外提供服务的端口

location中配置的proxy_pass是服务器本机提供服务的地址

        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—
image

展开阅读全文
©️2020 CSDN 皮肤主题: 1024 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值