1.1. tomcat部署1
参考文档:
1.1.1. 加上安全机制的必要性
在前面有提到, Solr 本身是不加安全机制的, 所有的查詢、admin、update 這些指令都可以經由 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角色的使用者,账号密码为tomcat和tomcat1234.
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认证