Подтвердить что ты не робот

Как установить пароль администратора паролей Apache

Я не очень хорошо знаком с solr. Я успешно установил solr. Он использует веб-сервер причала. Моя версия solr - 4.10.3. Эта страница администратора не защищена паролем. Любой может получить к нему доступ. Я хочу применить paaword к solr admin. Как я это сделаю?

4b9b3361

Ответ 1

Для версии ниже 5

Если вы используете solr-webapp, вам нужно изменить файл web.xml и добавить следующие строки:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr Lockdown</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>solr_admin</role-name>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr</realm-name>
  </login-config> 

Для сервера Jetty вам необходимо добавить следующие строки в /example/etc/webdefault.xml

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>**admin-role**</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

Обновите файл /example/etc/jetty.xml

<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/realm.properties:

admin: s3cr3t, admin-role

Имя пользователя = пароль администратора = s3cr3t. Роль имя = админ-роль

Версия Solr 5+

В последней версии Solr изменилась структура папок. Вы найдете все файлы в папке путь ниже.

{SOLR_HOME}/server/etc/jetty.xml {SOLR_HOME}/server/etc/webdefault.xml

Создайте новый файл учетных данных в {SOLR_HOME}/server/etc/realm.properties:

admin: s3cr3t, admin-role

Для получения дополнительной информации вы можете помочь SOLR вики - документы

Ответ 2

Включить аутентификацию в solr admin, работающем с solr 6.1 и причал

Предварительное условие:

  • Версия Solr 6.1

  • Solr успешно работает в системе

  • Solr Admin работает через причал

Процесс:

1. Редактировать jetty.xml

Отредактируйте файл "server/etc/jetty.xml" Добавьте следующее, прежде чем тег Настроить завершается

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

2. Изменить webdefault.xml

Отредактируйте файл "server/etc/webdefault.xml" Добавьте следующее, прежде чем тег веб-приложения завершается

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>core1-role</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

Специальное примечание:

Значение, используемое в теге ролевое имя, должно быть одинаковым в "realm.properties" файле

3. Создайте новый файл "realm.properties"

Создайте файл с именем "realm.properties" в местоположении "server/etc/" и поместите нижеуказанный контент

admin: admin123,core1-role

Имя пользователя: admin

Пароль: admin123

Имя роли: core1-role

(Это должно быть таким же, как имя, используемое в теге ролевое имя в файле server/etc/webdefault.xml)

4. Заключительный шаг

Перезагрузите сервер Solr

Теперь получите доступ к Solr в вашем браузере http://localhost:8983/solr/ Вы увидите, что браузер запрашивает username и password. Введите username и password.

введите описание изображения здесь

Ответ 3

Если вы используете tomcat,

Open [Tomcat install dir]\tomcat-users.xml for editing.

Добавьте следующие строки в элемент <tomcat-user> и сохраните изменения (используя свое собственное имя пользователя и пароль):

<role rolename="solr_admin"/><user username="your_username"  password="your_password"  roles="solr_admin"/>

Откройте Tomcat install dir\webapps\solr\WEB-INF\web.xml для редактирования. "solr" в пути - это имя экземпляра, который вы хотите защитить. Обычно это "solr", но может отличаться, если вы используете расширенную настройку. Добавьте следующие строки в элемент <web-app>:

<security-constraint>
<web-resource-collection>
  <web-resource-name>Solr Lockdown</web-resource-name>
  <url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
  <role-name>solr_admin</role-name>
  <role-name>admin</role-name>
</auth-constraint>
</security-constraint>


<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name></login-config>

Сохраните изменения и перезапустите Tomcat. Проверьте свои изменения, запустив новый сеанс браузера и перейдя на свой сайт, например. http://localhost:8080/solr/ Вам будут предложены учетные данные.

Если ваш файл Tomcat install dir tomcat-users.xml изменяется, тогда перейдите в файл tomcat-users.xml под серверами в Project Explorer и добавьте туда свои изменения.

Ответ 4

Как установить пароль для Solr - это боль в заднице (извините, но некоторое время вы должны назвать его как есть). Я предлагаю другое решение: Ограничьте доступ к нему с помощью iptables.

Если вы устанавливаете Apache Solr Server, Сервер обычно будет прослушивать порт 8983. Следовательно, интерфейс администратора серверов будет доступен под:

http://YOUR_SERVERS_IP:8983/solr/

Таким образом, мы можем ограничить соединения с портом 8983 следующим образом:

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

Это будет принимать все запросы от localhost (первая строка) и от самого IP-сервера (вторая строка), но удалять все остальные соединения (последняя строка). Вторая строка не нужна, но помогает нам легко получить доступ к интерфейсу администратора Solr. Чтобы получить доступ к интерфейсу администратора, создайте локальную машину, мы должны сначала перенести все подключения к серверу. Самый простой способ сделать это - использовать sshuttle (lazy mans VPN):

sshuttle --dns -r [email protected]_SERVERS_IP 0/0

Выполнение этой команды на локальном компьютере, откуда мы хотим получить доступ к интерфейсу администратора. Другой вариант - использовать туннелирование ssh с открытым ssh-клиентом:

ssh -D 1080 [email protected]_SERVERS_IP

Настройте прокси-сервер socks в своем браузере на порт 1080.

Ответ 5

Я тоже имею дело с Solr v.4.10, и это действительно раздражает. Ни одно из так называемых "решений" не работает для меня. Я закончил установку Nginx в своем поле Ubuntu и прокси: порт 8983 для докеров, где Nginx требуется пароль. Это работает для меня.

Ответ 6

Я должен только сообщить, что было решением в моем случае. На самом деле мой сайт был написан в ajax, поэтому, устанавливая passowrd, также защищайте мой сайт. Таким образом, это не решение в случае, когда solr должен использоваться открытым Интернетом. Таким образом, лучшим решением, которое руководствуется solr wiki, является использование таких прокси, как node.js, nginex и т.д., Как указано здесь

Используя node.js proxy и применяя правила iptable (как описано выше), решите мою проблему.

Ответ 7

Я смог получить эту работу. Но теперь мой запрос с solrj из моего веб-приложения заблокирован. Кто-нибудь знает, как добавить имя пользователя и пароль в solrj, используя java, чтобы получить доступ к solr? Я использовал это, но не сигару:

DefaultHttpClient httpclient1 = new DefaultHttpClient();               httpclient1.getCredentialsProvider(). setCredentials (AuthScope.ANY, новое имя пользователяPasswordCredentials ( "themoflow", "upforcoffeeat8AM" ));               DefaultHttpClient httpclient2 = new DefaultHttpClient();               httpclient2.getCredentialsProvider(). setCredentials (AuthScope.ANY, новое имя пользователяPasswordCredentials ( "USERNAME", "PASSWORD" ));

            SolrClient serverInActive = new HttpSolrClient(Constants.SOLR_URL + core, httpclient1);