第5章 完全な作業例


5.1. mod_cluster の例

本セクションでは、Red Hat Enterprise Linux システムで mod_cluster を使用する方法の完全な実例の設定例を説明します。

ロードバランサー

JBoss Core Services を localhost 上でリッスンするプロキシーサーバーとして設定するには、JBCS_HOME/httpd/conf.d/mod_cluster.conf で設定ファイルを作成し、以下を追加します。

LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule advertise_module modules/mod_advertise.so

MemManagerFile cache/mod_cluster

<IfModule manager_module>
  Listen 6666
  <VirtualHost *:6666>
    <Directory />
      Require ip 127.0.0.1
    </Directory>
    ServerAdvertise on
    EnableMCPMReceive
    <Location /mod_cluster_manager>
      SetHandler mod_cluster-manager
      Require ip 127.0.0.1
   </Location>
  </VirtualHost>
</IfModule>

Tomcat のワーカー設定

JWS_HOME/tomcat<VERSION>/conf/server.xml を編集し、以下の Listener 要素を追加して Tomcat ワーカーノードを設定します。

<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="true"/>

iptables ファイアウォールルールの例

以下は 192.168.1.0/24 サブネットのクラスターノードの iptables を使用したファイアウォールルールの例です。

/sbin/iptables -I INPUT 5 -p udp -d 224.0.1.0/24 -j ACCEPT -m comment --comment "mod_cluster traffic"
/sbin/iptables -I INPUT 6 -p udp -d 224.0.0.0/4 -j ACCEPT -m comment --comment "JBoss Cluster traffic"
/sbin/iptables -I INPUT 9 -p udp -s 192.168.1.0/24 -j ACCEPT -m comment --comment "cluster subnet for inter-node communication"
/sbin/iptables -I INPUT 10 -p tcp -s 192.168.1.0/24 -j ACCEPT -m comment --comment "cluster subnet for inter-node communication"
/etc/init.d/iptables save

5.2. mod_auth_kerb の例

本セクションでは、Red Hat Enterprise Linux で JBoss Core Services の Apache HTTP Server および mod_auth_kerb で Kerberos 認証を設定する基本的な手順を説明します。

5.2.1. mod_auth_kerb 例の要件

以下は、作業例の要件の一覧です。手順例を使用する前に、すべての要件を満たしていることを確認してください。

  • GSS がネゴシエートされたサポートで curl をインストールします (設定のテスト用)。
  • JBoss Core Services と同じホストで Kerberos または LDAP サーバー (ApacheDS など) を設定し、実行します。
  • LDAP サーバーを使用する場合は、以下の LDAP ユーザーを作成します。

    • krbtgt ユーザーを作成します。

      dn: uid=krbtgt,ou=Users,dc=example,dc=com
      objectClass: top
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: krb5principal
      objectClass: krb5kdcentry
      cn: KDC Service
      sn: Service
      uid: krbtgt
      userPassword: secret
      krb5PrincipalName: krbtgt/EXAMPLE.COM@EXAMPLE.COM
      krb5KeyVersionNumber: 0
    • ldap ユーザーを作成します。

      dn: uid=ldap,ou=Users,dc=example,dc=com
      objectClass: top
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: krb5principal
      objectClass: krb5kdcentry
      cn: LDAP
      sn: Service
      uid: ldap
      userPassword: randall
      krb5PrincipalName: ldap/localhost@EXAMPLE.COM
      krb5KeyVersionNumber: 0
    • HTTP ユーザーを作成します。

      dn: uid=HTTP,ou=Users,dc=example,dc=com
      objectClass: top
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: krb5principal
      objectClass: krb5kdcentry
      cn: HTTP
      sn: Service
      uid: HTTP
      userPassword: secretpwd
      krb5PrincipalName: HTTP/localhost@EXAMPLE.COM
      krb5KeyVersionNumber: 0
    • ユーザー hnelson (テストユーザー) を作成します。

      dn: uid=hnelson,ou=Users,dc=example,dc=com
      objectClass: top
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: krb5principal
      objectClass: krb5kdcentry
      cn: Horatio Nelson
      sn: Nelson
      uid: hnelson
      userPassword: secret
      krb5PrincipalName: hnelson@EXAMPLE.COM
      krb5KeyVersionNumber: 0

5.2.2. Kerberos クライアントの設定

  1. /etc ディレクトリーに krb5.conf 設定ファイルを作成し、以下をファイルに追加します。

    [logging]
      default = FILE:/var/log/krb5libs.log
      kdc = FILE:/var/log/krb5kdc.log
      admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
      default_realm = EXAMPLE.COM
      default_tgs_enctypes = des-cbc-md5,des3-cbc-sha1-kd
      default_tkt_enctypes = des-cbc-md5,des3-cbc-sha1-kd
      dns_lookup_realm = false
      dns_lookup_kdc = false
      allow_weak_crypto = yes
      ticket_lifetime = 24h
      renew_lifetime = 7d
      forwardable = yes
    
    [realms]
      EXAMPLE.COM = {
        kdc = localhost:60088
        admin_server = localhost:60088
      }
    
    [domain_realm]
      .example.com = EXAMPLE.COM
      example.com = EXAMPLE.COM
  2. 以下の内容を含む JBCS_HOME/httpd/conf ディレクトリーにキータブを作成します。

    # ktutil
    ktutil: addent -password -p HTTP/localhost@EXAMPLE.COM -k 0 -e des-cbc-md5
    Password for HTTP/localhost@EXAMPLE.COM: secretpwd
    ktutil: list
    slot KVNO Principal
    ---- ---- ---------------------------------------------------------------------
       1    0               HTTP/localhost@EXAMPLE.COM
    ktutil: wkt JBCS_HOME/httpd/conf/krb5.keytab
    ktutil: quit
重要

環境変数は ktutil プロンプト内では拡張されません。ユーザーは JBCS_HOME 変数の完全パスを置き換える必要があります。

root ユーザーとして以下のコマンドを実行し、正しいグループとパーミッションをキータブに適用します。

# chgrp apache JBCS_HOME/httpd/conf/krb5.keytab
# chmod 640 JBCS_HOME/httpd/conf/krb5.keytab
  1. 以下のホスト設定が /etc/hosts ファイルに含まれていることを確認します。

    127.0.0.1 localhost

5.2.3. mod_auth_kerb の設定

JBCS_HOME/httpd/conf.d/ ディレクトリーに auth_kerb.conf 設定ファイルを作成し、以下の設定をファイルに追加します。

#
# The mod_auth_kerb module implements Kerberos authentication over HTTP, following the "Negotiate" protocol.
#

# The LoadModule statement is done in conf.d/10-auth_kerb.conf
# LoadModule auth_kerb_module modules/mod_auth_kerb.so

<Location /kerberostest>
  AuthType Kerberos
  AuthName "Kerberos Login"
  KrbMethodNegotiate On
  KrbMethodK5Passwd Off
  KrbAuthRealms EXAMPLE.COM
  KrbServiceName HTTP
  Krb5KeyTab $JBCS_HOME/httpd/krb5.keytab
  require valid-user
</Location>
重要

環境変数は、設定ファイル内で拡張されません。ユーザーは JBCS_HOME 変数の完全パスを置き換える必要があります。

5.2.4. Kerberos 認証のテスト

  1. JBCS_HOME/httpd/www/html/kerberostest/auth_kerb_page.html という名前のテストページを作成します。
  2. 以下のコンテンツをテストページ (auth_kerb_page.html) に追加します。

    <html>
    <body>
        <h1>mod_auth_kerb successfully authenticated!</h1>
    </body>
    </html>
  3. オプション: JBCS_HOME/httpd/conf/httpd.conf でデバッグするログレベルを設定します。
  4. Apache HTTP Server を開始します。詳細は 『インストールガイド』 を参照してください。
  5. 以下のように認証をテストします。

    1. テストユーザー hnelson の Kerberos 認証を開始します。

      $ kinit hnelson
    2. テストユーザー hnelson の詳細を表示します。

      $ klist

      以下のような結果が表示されます。

      Ticket cache: FILE:/tmp/krb5cc_18602
      Default principal: hnelson@EXAMPLE.COM
      
      Valid starting     Expires            Service principal
      06/03/13 14:21:13  06/04/13 14:21:13  krbtgt/EXAMPLE.COM@EXAMPLE.COM
      renew until 06/10/13 14:21:13
    3. 以下のように Apache HTTP Server Kerberos 認証をテストします。

      $ curl --negotiate -u : http://localhost/kerberostest/auth_kerb_page.html

      正常に機能している場合は、以下の結果が表示されます。

      <html>
      <body>
          <h1>mod_auth_kerb successfully authenticated!</h1>
      </body>
      </html>

mod_auth_kerb の詳細は、http://modauthkerb.sourceforge.net/ を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.