Как закрыть доступ в админку Apache Solr?

Главные вкладки

Аватар пользователя AmiGator AmiGator 27 июня 2013 в 15:03

Поставил Solr на сервер. Всё работает, всё ищет, но смущает, что доступ в админку может получить любой по адресу http://sitename.ru:8983/solr
В итоге закрыл порт через firewall, но может есть более элегантное решение — организовать доступ по паролю? Кто подскажет как сделать? Версия Solr 4.3.1

Комментарии

Аватар пользователя AmiGator AmiGator 14 января 2014 в 14:55

Хорошо, что напомнили.
В общем универсального метода не смог нарыть. Можно просто закрыть доступ через iptables

iptables -A INPUT -p tcp -s localhost --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

Аватар пользователя kv4 kv4 14 января 2014 в 15:29

Вот как это делается:
- solr 4.6.0 (запускается в Jetty - самый простой вариант, который предлагается в руководстве)

Редактируем файл example/etc/jetty.xml - вписываем туда следующий код (взято отсюда http://wiki.eclipse.org/Jetty/Tutorial/Realms)

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

Теперь открываем на редактирование example/etc/webdefault.xml и правим, как показано ниже (взято отсюда http://knackforge.com/blog/sivaji/how-protect-apache-solr-admin-console)

  </locale-encoding-mapping-list>

 <security-role>
    <role-name>user</role-name>
  </security-role>
  <login-config>
    <realm-name>Auth</realm-name>
  </login-config>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>File Upload</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>user</role-name>
    </auth-constraint>
  </security-constraint>

<!--  <security-constraint>
   <web-resource-collection>
     <web-resource-name>Disable TRACE</web-resource-name>
     <url-pattern>/</url-pattern>
     <http-method>TRACE</http-method>
   </web-resource-collection>
   <auth-constraint/>
 </security-constraint>
-->
</web-app>

Теперь создаём файл example/etc/realm.properties

И вписываем в него следующее (подробности можно посмотреть тут http://wiki.eclipse.org/Jetty/Tutorial/Realms)

username: password,user

Теперь перезапустить solr.

Аватар пользователя AmiGator AmiGator 14 января 2014 в 15:42

kv4 wrote:
Вот как это делается:
- solr 4.6.0 (запускается в Jetty - самый простой вариант, который предлагается в руководстве)

да нечто подобное я находил в буржуйнете, но у меня без jetty все запущено и проверить не мог. Тем не менее спасибо, на будущее пригодится

Аватар пользователя kirill_dan kirill_dan 7 июля 2014 в 12:13

К админке так доступ закроете. Вот только получите проблему в самом Друпал. Перестанет работать Solr API. Будет бить вам ошибку, что доступ запрещен.