博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
solr安全-tomcat
阅读量:5240 次
发布时间:2019-06-14

本文共 2497 字,大约阅读时间需要 8 分钟。

1.1. tomcat部署1

  参考文档:

1.1.1. 加上安全机制的必要性

在前面有提到, Solr 本身是不加安全机制的所有的查詢、adminupdate 這些指令都可以經由 url 打進去 所以如果不加以控管直接讓Solr 上網相信搜尋引擎裡面的Index 很快就會被人路過刪除了.

所以如果你是為了將來要做Production用途的話除了 Solr Server架設外在外圍佈署安全架構是必要的,Solr 服務裸奔因而導致資料被全刪,那就慘了.

刪除指令如下:

http://localhost:8080/solr/update?stream.body=<delete><query>*:*</query></delete>

http://localhost:8080/solr/update?stream.body=<commit/>

例如這樣,就一切結束了.

1.1.2. 分类

一般来说,简单的安全机制只要对URL过滤即可,例如以下的药禁用:

- 后台: /admin/* 
更新: /update/*

正常的查询指令则要放行:

- 查询: /query/*

实现的方式有很多, 例如:

1. 在 web server 这一层动手 , 假如遇到上面两组URL 敏感一点的,就给他 HTTP authentication.
2. 也有硬體的解決方式, 以前看過同事用 Cisco CSS 這種 Switch 來做過濾.
3. 用動態語言 php , jsp 等等寫proxy , 這種方式可以做更深入的過濾 ,例如檢查參數合法性 (假如用戶大量的Query 前10000個結果,來做攻擊 )

1.1.3. Tomcat 的 HTTP authentication 設定

先上圖, 這是先前說的Solr 索引全刪的指令。我們只要針對 /update/* & /admin/* 做個簡單的http認證,就能達到保護的目的.

過濾 /update/* 指令

 

過濾後台 /admin/* 

 

首先到tomcat安装目录下的\webapps\solr\WEB-INF\,找到web.xml并编辑它。

在 <web-app> 与 </web-app>之间插入以下的code 

    <!--solr  security -->

    <!--提供基本认证功能-->

BASIC

 

      <!--定义admin的角色-->

admin

 

    <!--1. /update/* 做限制 ,并且指派必须有admin等级的user才能进去-->

Admin
/update/*
admin

 

    <!--2. 对 /admin/* 做限制 ,并且指派必须有admin等级的user才能进去-->

Admin
/admin/*
admin

 

    <!--3. 对后台首页 /admin.html 做限制 ,并且指派必须有admin等级的user才能进去-->

Admin
/admin.htm
admin

 

重新启动tomcat后即可。

至于这些“admin”角色的成员有哪些人?修改tomcat目录下的\config\tomcat-users.xml<tomcat-users>...</tomcat-users>这一段:

 

意思是:加一个属于admin角色的使用者,账号密码为tomcattomcat1234.

 

1.1.4. 结语

目前學到了如何安裝Solr Server,以及用簡單的HTTP認證方式來過濾高危險的指令. 這種雖然有點難看,但起碼還算是可以勉強上線的程度. 

1.1. tomcat部署2

SolrJ没有提供访问控制接口,也就是说只要知道solr服务器信息,任何人都可以连接solr服务器来进行索引增加、修改、删除操作

根据Apache提供的文档说明,可以用一下三种方式进行控制
1) 修改路径 
webapp=/solr path=/select path改成其它 
2) 限制客户端IP 
通过限制client端的IP来进行控制,也是基于Tomcat控制 
修改conf/server.xml  <Host>节点中添加以下代码 
allow运行访问的主机,多个IP时可以用 分开 
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.6.106"/> 
3) 使用Http认证  

 

转载于:https://www.cnblogs.com/a198720/p/4363335.html

你可能感兴趣的文章
数组filter()参数详解,巧用filter()数组去重
查看>>
查询项目中未被使用的js、css和图片
查看>>
Cookie.js
查看>>
Django Blog学习笔记(一)
查看>>
什么是“堆”,"栈","堆栈","队列",它们的区别
查看>>
什么是lambda函数?它有什么好处?
查看>>
在线的IDE(Ideone)支持Java/Python/Go/D
查看>>
第4次作业
查看>>
hash 哈希
查看>>
淘宝的技术博客
查看>>
Linux commands
查看>>
JVM ,Java paper
查看>>
https://www.callicoder.com/java-8-completablefuture-tutorial/
查看>>
YARN Resource Management
查看>>
作业5:需求分析
查看>>
socket入门
查看>>
[工作中的设计模式]装饰模式decorator
查看>>
swift objective-c混编操作
查看>>
黑盒测试方法
查看>>
创建Java程序并设置快捷提示
查看>>