zoukankan      html  css  js  c++  java
  • tomcat 绑定域名 防止恶意域名绑定

    http://aaronlong31.iteye.com/blog/1123260 

    今天公司一台服务器被很多恶意域名绑定了,电信的要我们赶紧处理,否则封IP。 
    服务器使用的是tomcat,上谷歌搜了很多方法,都是说绑定自己的域名,没说如何不让其他域名绑定。 
    开始我想了一种方法:修改tomcat/conf/server.xml,找到engine元素,仿照已有的localhost,添加host元素,比如你想禁止www.fff.com,可以这样写: 
    <!--more--> 
    Xml代码  收藏代码
    1. <Host name="www.fff.com"  appBase="notexists"  
    2.     unpackWARs="true" autoDeploy="true"  
    3.     xmlValidation="false" xmlNamespaceAware="false"></Host>  

    其中的appBase是一个不存在的目录,所以www.fff.com请求时,不会访问你真实的应用。但这样只能禁止www.fff.com,不会禁止fff.com,所以还得加个name为fff.com的host,这样就太麻烦了,并且一些恶意域名是不可预知的,你并不知道会有多少域名绑定到你的IP,所以这种方式行不通。 

    上面的方式是默认允许,把禁止的列出来,变换下思路,默认禁止,将允许的列出来,这样不就OK了?所以有第二种方式: 
    Xml代码  收藏代码
    1. <!-- default host is forbiden -->  
    2. <Engine name="Catalina" defaultHost="forbiden">  
    3.     <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
    4.         resourceName="UserDatabase"/>  
    5.             
    6.     <!-- allow hosts -->  
    7.     <Host name="localhost"  appBase="webapps"  
    8.             unpackWARs="true" autoDeploy="true"  
    9.             xmlValidation="false" xmlNamespaceAware="false"></Host>  
    10.     <Host name="www.zh56.mobi"  appBase="webapps"  
    11.             unpackWARs="true" autoDeploy="true"  
    12.             xmlValidation="false" xmlNamespaceAware="false"></Host>          
    13.     <Host name="222.73.227.231"  appBase="webapps"  
    14.             unpackWARs="true" autoDeploy="true"  
    15.             xmlValidation="false" xmlNamespaceAware="false"></Host>       
    16.               
    17.     <!-- forbiden host, the appBase is a not exists directory.   
    18.     If the requested domain is not in the above list of hosts where are allowed, then use this host.-->  
    19.     <Host name="forbiden"  appBase="notexists"  
    20.             unpackWARs="true" autoDeploy="true"  
    21.             xmlValidation="false" xmlNamespaceAware="false"></Host>      
    22. </Engine>  

    这里将Engine中的defaultHost设置为forbiden,下面有个name为forbiden的host,其appBase是个不存在的目录。再添加允许的host。所以,如果是未知的域名,则会使用forbiden的host,这样就访问不到真实应用目录了。
  • 相关阅读:
    一张图带你了解数据分析的完整流程,建议收藏
    【Unnatural × Lemon × 武汉】如果病毒结束了,你最想干什么事
    两万字深度介绍分布式系统原理!【收藏版】
    ETL的基础知识,看完你就全明白了!
    Java最大不重复子串
    一文速懂利用python字典的引用传递实现循环套娃(嵌套)
    ETSI GS MEC 015,MEP 带宽管理 API
    laravel 5.5 ajax返回错误信息
    laravel 5.5 ajax返回错误信息
    从实践出发:微服务布道师告诉你Spring Cloud与Boot他如何选择
  • 原文地址:https://www.cnblogs.com/lteal/p/7088818.html
Copyright © 2011-2022 走看看