OTRS 4.0.10。 Ubuntu + AD + Kerberos + SSOを使用します(パート1)

記事が大きすぎることが判明したという事実を考慮して、さらにいくつかのニュアンスを追加したいので、いくつかの部分に分けて、追加部分を個別の部分として公開します。

パート1:システムの準備
パート2:OTRSのインストールと設定
パート3:パンを固定するジャムを修正する

導入する代わりに


遅かれ早かれ十分に大きな組織は、チケットシステムまたはヘルプデスクを実装する必要に直面します。 そして、私たちの組織も例外ではありません。それに関連して、管理者はシステムの選択と実装を任されました。

率直に言って、選択について特に疑いはありませんでした;個人的な理由で、選択はOTRSに落ちました。 経営陣が非常に愛している膨大な数のレポートを備えた強力で柔軟な機能。 しかし、判明したように、それを導入することは完全に重要な作業です。 苦痛は2週間続き、大量の情報がシャベルにかけられ、さまざまなマニュアルが試されましたが、私は完全なオタクか2人のどちらかであるように見えました。すべてのマニュアルとレビューの山で、すべてが完全に機能し、完全に機能していると主張したためそれは設定可能ですが、私とは異なります。

実際、これらすべてのマニュアルの問題は、すべてがあなたのものと同じように見えることですが、どこかでパッケージのバージョンが少し異なっているか、ADの構造がほとんど同じであるなどです。石の花はほとんど加算されません。 一言で言えば、試行錯誤によって、ドキュメントの読み方とマニュアルの分析、私自身の非常に効果的な方法が開発されました。

ベースラインと要件



既に述べたように、企業メールとJabberはネットワーク上で機能する標準的な要件のセットであり、追加の要件はOTRSをそれらと統合することでした。 しかし、この記事は巨大であることが判明したため、OTRSとそれらの統合について説明するときに、OTRSとそれらの統合について説明します。

実際、OTRSを配置することは難しくなく、一度にADと統合することもできます。スナッグ全体は正確にエンドツーエンド認証(SSO)でした。 このテーマに関する一連のマニュアルがネットワーク上で見つかりましたが、さまざまな理由で私にふさわしいものはありませんでした.1つのOTRSがWindowsにインストールされ、もう1つのOTRSの古いバージョンでは、3番目では未知の人といつによって書かれたアダプタモジュールが使用されました
一般に、エンドツーエンド認証を実装するには4つの方法があります。

  1. 1つ目はSSPIですが、WindowsでのOTRS用のモジュールであるため適合しません
  2. 2つ目は、自己記述型のADSSOモジュールであり、基本的にはドープされたLDAP認証モジュールであり、私の意見では松葉杖です。
  3. 3つ目は、OTRS用の自己記述NTLM認証モジュールで、これも松葉杖です。
  4. 最後の1つは、Kerberos認証を使用する企業の標準OTRS HTTPBasicAuthモジュールです。

これが私の意見の最後の(そして多くの人が私に同意するだろうと思う)最も正確で安全なものです。 したがって、ソースデータ:

OTRS構成とは異なる構成も可能です。ユーザーとエージェントの他の場所用に構成する方法はご自身で理解できます。

OTRSサーバーは、ユーザーotrs.adminに代わってLDAPから情報を読み取ります。セットアップ期間中、ドメイン管理者の権利を与えます。構成後、それらを選択し、マシンにログインする権利さえも、LDAPから情報を読み取ることができる必要があります。

1.システムの準備


1.1このような設定でUbuntu Serverを配置します(これらは私の設定です。他にも設定があります)


最後の段階で、インストールはいくつかのソフトウェアをプレインストールするかどうかを尋ねます。OpenSSHサーバーのインストールを選択します。

1.2。 SSHを介して新しいサーバーに固執する

ssh 192.168.10.14 -l helpdesk 

キーを受け入れ、ヘルプデスクを使用してパスワードを入力することに同意します
ルートへの権利を上げる
 sudo su 

注意! suからさらにすべてのアクションを実行し、システムを再起動した後、root権限を再度上げることを忘れないでください。

/ etc / hostnameおよび/ etc / hostsファイル内の情報の関連性を確認ます。最初の文字は大文字のマシン名で、2番目の文字は127.0.0.1 helpdesk.domain.ru helpdeskのようなエントリを持つ必要があります

何かが間違っている場合-正しい。 ここで、すべてのドメインコントローラーに対して、IP(完全名および省略名)でpingを試行します。 全員にpingを実行する必要があります。 そうでない場合は、ネットワーク設定を処理します。

1.3。 更新してmcを置く

 apt-get update && apt-get -y upgrade && apt-get install -y mc 

経験のない人は、コマンドを順番に実行できます
 apt-get update apt-get -y upgrade apt-get install -y mc 

2.マシンをドメインに入力し、ドメイン認証を構成します。 Samba、Kerberos、およびWinbindを構成します。


このテーマに関する優れた記事は、Ubuntuテクニカルサポートサイトにあります: help.ubuntu.ru/wiki/%D0%B2%D0%B2%D0%BE%D0%B4_%D0%B2_%D0%B4%D0%BE%D0% BC%D0%B5%D0%BD_windows

2.1。 Kerberosをインストールおよび構成します

必要なパッケージを配置します。
 apt-get install krb5-user samba winbind libpam-krb5 libpam-winbind libnss-winbind ntp smbclient rlwrap 

Kerberosが機能するためには、コンピューターのクロックが同期して実行され、時差が5分を超えないことが非常に重要です。 /etc/ntp.confファイルでドメインコントローラーとの時間同期を構成します

名前が示すように、ファイルはシステムクロックを定期的に調整するntpデーモンの設定を担当します。 正確なタイムサーバーserverディレクティブによって設定されるため、そこにある正確なタイムサーバーを示すすべての行をコメント化して、独自のものを入力する必要があります。
 mcedit /etc/ntp.conf 

サーバーで始まるすべての用語についてコメントします。
 #server 0.ubuntu.pool.ntp.org #server 1.ubuntu.pool.ntp.org #server 2.ubuntu.pool.ntp.org #server 3.ubuntu.pool.ntp.org # Use Ubuntu's ntp server as a fallback. #server ntp.ubuntu.com 

そしてあなたのものを入力してください:
 server 192.168.10.1 server 192.168.10.2 

2つのドメインコントローラーがあり、それぞれで正確なタイムサービスが発生します。 その後、ファイルを保存し、新しい設定でデーモンを再起動します。
 service ntp restart 

出力は次のようになります。
 root@HELPDESK:/home/helpdesk# service ntp restart * Stopping NTP server ntpd [ OK ] * Starting NTP server ntpd [ OK ] 

デーモンは新しい設定で起動し、クロックを同期します。 Kerberosは、 krb5.confファイルを編集して構成します。
 mcedit /etc/krb5.conf 

まず、ログを有効にします。これのために、ファイルの最初にセクションを追加します。
 [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log 

そして、Kerberosがどのドメイン(Kerberosの用語で-どの領域)で動作し、誰がこの領域を駆動するかを説明する必要があります。 これを行うには、セクションを編集します。
 [libdefaults] default_realm = DOMAIN.RU #(    ) [realms] #    DOMAIN.RU = { #.   .    kdc = ad1.domain.ru #     kdc = ad2.domain.ru #.   ,    admin_server = ad1.domain.ru admin_server = ad2.domain.ru default_domain = domain.ru } [domain_realm] #     .domain.ru = DOMAIN.RU #  () domain.ru = DOMAIN.RU 

ここで、設定の機能を確認する必要があります。そのために、一部のユーザーのドメインでkerberosチケットを取得しようとします。
 kinit username@DOMAIN.COM # username —   , !  ! 

その後、彼女はパスワードを要求し、チケットを取得しようとします。 すべてがうまくいった場合、チームは沈黙したままになります。つまり、出力は空になります。 このようなもの:
 root@HELPDESK:/home/helpdesk# kinit otrs.admin@DOMAIN.RU Password for otrs.admin@DOMAIN.RU: root@HELPDESK:/home/helpdesk# 

チケットを受け取ったかどうかを確認し、次を入力します。
 klist 

そして、次のようなものが表示されます。
 root@HELPDESK:/home/helpdesk# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: test@DOMAIN.RU Valid starting Expires Service principal 10.08.2015 15:46:01 11.08.2015 01:46:01 krbtgt/DOMAIN.RU@DOMAIN.RU renew until 11.08.2015 15:45:57 

ご覧のとおり、チケットは正常に受信され、すべて問題ありません。 したがって、構成は機能しています。 チケットをクラッシュさせます。今のところ必要ありません。
 Kdestroy 

出力も空であり、チケットが破棄されたことを意味します(コマンドはキャッシュ内のすべてのチケットを破棄することに注意してください)。

2.2それでは、SAMBAを構成してドメインに接続します。

これを行うには、/ etc / samba / smb.confファイルを編集します。
 mcedit /etc/samba/smb.conf 

ここで、[global]セクションを編集します。
 [global] #         ,  workgroup  #    ,  realm -    workgroup = RUS realm = DOMAIN.RU #          AD security = ADS encrypt passwords = true #   dns proxy = no socket options = TCP_NODELAY #    ,             , #    ,           domain master = no local master = no preferred master = no os level = 0 domain logons = no #    load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes 

次のコマンドで正しい構成を確認します。
 testparm 

出力は次のようになります。
 Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[printers]" Processing section "[print$]" Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions 

Enterを押すと、コンパイルされたsmb.confが表示されます (つまり、コメントはありません)。

「rlimit_max:rlimit_max(1024)をWindowsの最小制限(16384)に増やしますというメッセージは、WindowsとUbuntuの制限プールの違いが原因で発生します。制限を修正するときに、少し後で削除します。

ドメインを直接入力してみてください。 これを行うには、次のコマンドを実行します。
 net ads join -U username -D DOMAIN #username -   

彼女は最初にユーザーのパスワードを要求し、すべてが正常であれば、出力は次のようになります。
 Using short domain name -- RUS Joined 'HELPDESK' to dns domain 'domain.ru' 

次のコマンドを使用して、ドメインへの正しい接続を確認できます。
 net ads testjoin 

彼女の結論は次のようになります。
 Join is OK 

ドメイン内の任意のマシンの共有リソースのインデックスを作成することにより、この段階で設定が正しいことを確認できます。 チケットを取得します:
 kinit username@DOMAIN.COM 

そして、ファイルサーバーなどのマシンのリソースを調べてみてください。
 smbclient -k -L //File-server 

-kスイッチは、kerberosを使用する必要があることを示します。File-serverは、共有リソースを持つドメイン内のマシンの名前です。 コマンドの出力には、指定されたマシンの共有リソースのリストが表示されるはずです。はいの場合、すべては問題ありません。これまでのところ、すべてが正しく実行されています。 次に、次のコマンドでチケットを破棄します。
 kdestroy 

2.3 Winbindの構成

これを行うには、同じ/etc/samba/smb.confを編集し、次の行を[global]セクションに追加します。
 #           Winbind. #       . idmap config * : range = 10000-20000 idmap config * : backend = tdb #     . winbind enum groups = yes winbind enum users = yes #       .        #    , ..  username - DOMAIN\username. #      ,      . winbind use default domain = yes #          #,    ,    shell'   #/bin/false template shell = /bin/bash #     Kerberos  pam_winbind.so    winbind refresh tickets = yes #           kerberos #       (     # ),      «passdb backend = tdbsam»   : kerberos method = system keytab dedicated keytab file = /etc/krb5.keytab 

設定が正しいことを確認します。
 testparm 

そして、すべてが問題なければ、デーモンを(この順序で)再起動します。
 service winbind stop service smbd restart service winbind start 

サービスが正常に再起動した場合、出力は次のようになります。
 root@HELPDESK:/home/helpdesk# service winbind stop winbind stop/waiting root@HELPDESK:/home/helpdesk# service smbd restart smbd stop/waiting smbd start/running, process 4859 root@HELPDESK:/home/helpdesk# service winbind start winbind start/running, process 4871 

あなたは同じですか? 次に進みます。 それでは、Sambaが誓う制限を修正します。 これらは/etc/security/limits.confファイルで修正されています。 ファイルの最後に2行追加する必要があります。
 * - nofile 16384 root - nofile 16384 

この操作の後、マシンを再起動する必要があります。
 shutdown -r now 

または
 reboot 

誰が好きですか。

再起動後、マシンがドメインとの信頼を確立しているかどうかを確認します。
 wbinfo -t 

出力は次のようになります。
 checking the trust secret for domain DCN via RPC calls succeeded 

すべてのコマンドがルートとして実行されることを思い出させてください。 リブート後にsuにアップグレードするのを忘れたため、最初はこの段階でギャグがありました。 すべてのシークレット(チケットなど)は、rootのみがアクセスできるsambaベース/var/lib/samba/private/*.tdbアクセスに保存されます。 したがって、リブート後に権限を増やすことを忘れないでください。スーパーユーザーからすべてのコマンドを実行します。 また、winbindがドメイン内のユーザーとグループを認識していることも確認します。
 wbinfo -u 

そして
 wbinfo -g 

2.4。 まあ、別のボーナス

マシンをドメインに入力しているため、ドメインアカウントでマシンにログインする機能を追加します。 これを行うには、 / etc / nsswitch.confファイルにwinbindデータソースを追加します。 また、ローカルユーザーとしてドメインユーザーを操作する機会を提供します。これは、ドメインユーザーをオブジェクトの所有者として任命し、アクセス権を与えることを意味します。 これにより、Linuxマシンでボールを上げることが可能になります。 次の行を指定します。
 passwd: compat group: compat 

気にする
 passwd: compat winbind group: compat winbind 

また、ファイルの最後に行を追加することをお勧めします。
 files: dns mdns4_minimal[NotFound=return] mdns4 

このステージは、次のコマンドでユーザーとグループのリストを要求することで確認されます。
 getent passwd 

そして
 getent group 

出力では、ドメインユーザーとグループを探しており、見つかった場合はすべて問題ありません。 そして最後:ドメインユーザーにセッションを開く機会を与えます。以前のバージョンでは、ubuntuはパーカッション楽器を使った非自明なダンスが必要でしたが、PAM.Dは/etc/pam.d/common-sessionファイルに次の行を追加できます
 session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077 

ここで再起動し、ドメインアカウントでログインしてみてください。判明した場合は、前の手順はすべて正しく完了しています。

3. Kerberosキーを作成し、HTTPプリンシパルをドメインに追加します。


次の3つのステージでは、何が起きているのかがわかるまで2週間を費やしました。 よくあることですが、すべてが非常にシンプルで最初に起動したことが判明したため、大量の情報を分析し、それを単一のアクションシーケンスに削減する必要がありました。
この3つの段階で、 この記事は非常に役立ちました。

したがって、Kerberosプロトコル、これは、ディレクトリが私たちに言うように、第三者に対する信頼の原則に基づいたネットワーク認証プロトコルです。 これはどういう意味ですか? つまり、認証プロセスでは、デフォルトで相互作用参加者が信頼するサードパーティが表示されます。サーバー側にアクセスする前に、クライアントがKDCメッセージを送信し、セッションの各参加者にセッションのコピーを送信する方が簡単な場合、こちら側はキー配布センターと呼ばれますキーは短期間有効です。 これらのキーの目的は、クライアントとサーバーを認証することです。

暗号化に精通している人にとっては、Kerberosエンジン全体はPKIエンジンの完全なコピーよりも少し大きいと言えます。 実際、他の仕事のためだけに投獄されるのは彼です。 この場合、認証局の代わりにのみキー配布センター(KDC)があります。 通常、ドメインコントローラー上にあります。

新しい用語「プリンシパル」は、Kerberosの用語で、いわゆるネットワークインタラクションの参加者、つまりキーをKDCに頼る人たちです。

このステップは、2つの複雑で簡単な方法で完了できます。 何らかの理由で、ネットワーク上のすべてのマニュアルには、より複雑な方法、つまりktpassユーティリティ(信じられないほどの数のキーを持つ恐ろしい獣)を使用してドメインコントローラーにKerberosキーを作成し、それをLinuxマシンにコピーする方法が記載されています。 このパスの標準的な正確さは否定しませんが、よろしければ、コマンドは数行で取得されますが、それを使用するときにZenを理解できませんでした。

判明したように、もっと簡単な方法があります-Linuxマシンで直接キーを作成します。 ネットワークで彼について言及したのは1つだけで、たぶん見た目が悪いのですが、うまくいきました。

また、この段階で正確性を制御するには、ドメインコントローラーで何かをする必要があります。
まず、コントローラーにアクセスして、「ADユーザーとコンピューター」スナップインを開き、コンテナーをコンピューターで開き、Linuxマシンを探します。ドメインに含めた後、そこに表示されるはずです。 発見-約 続けましょう。

次に、ADSIエディターが必要です。コマンドラインを開き、次のように入力します。
 adsiedit.msc 

そして、インターを押します。 コンソールツリーがその構造にADコンソールをコピーしているのがわかります。 ここでマシンを見つけ、そのプロパティを開き、リストでservicePrincipalName属性を探します。 これで、 HOST / hepldesk.domain.ruHOST / helpdeskのような2つのエントリがあるはずです。

どちらもHOSTでマシンの短縮名で始まり、別のマシンで完全になります。つまり、マシンはHOST、つまりドメイン内の通常のマシンになります。

次に、Linuxマシンに移動して、コマンドを実行します。
 net ads keytab create 

コマンドからの出力は空ですが、実行後、 専用のkeytabファイルディレクティブのsmb.confファイルで指定した内容に応じて、ファイル/etc/krb5.keytabを作成する必要があります。 しかし、OTRS、これはWebアプリケーションであり、Linuxマシンはhttpサービスを提供するため、別のHTTP原則を追加する必要があります。 すぐに言ってやった:
 net ads keytab add HTTP 

ドメインのマシンのプロパティでプリンシパルのリストを見ると、そこにさらに2つ追加されていることがわかります -「 HTTP / helpdesk.domain.ru 」と「 HTTP / helpdesk 」(小さなニュアンス:ADSIエディターウィンドウの情報は自動的に更新されません。したがって、マシンのプロパティを閉じ、F5を押して再度開きます)。

原則として、これはすでに追加が成功したことを意味します。 ただし、keytabにあるものを見てみましょう。
 klist -ek /etc/krb5.keytab #     keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 2 host/helpdesk.domain.ru@DOMAIN.RU (DES cbc mode with CRC-32) 2 host/helpdesk.domain.ru@DOMAIN.RU (DES cbc mode with RSA-MD5) 2 host/helpdesk.domain.ru@DOMAIN.RU (ArcFour with HMAC/md5) 2 host/helpdesk@DOMAIN.RU (DES cbc mode with CRC-32) 2 host/helpdesk@DOMAIN.RU (DES cbc mode with RSA-MD5) 2 host/helpdesk@DOMAIN.RU (ArcFour with HMAC/md5) 2 HELPDESK$@DOMAIN.RU (DES cbc mode with CRC-32) 2 HELPDESK$@DOMAIN.RU (DES cbc mode with RSA-MD5) 2 HELPDESK$@DOMAIN.RU (ArcFour with HMAC/md5) 2 HTTP/helpdesk.domain.ru@DOMAIN.RU (DES cbc mode with CRC-32) 2 HTTP/helpdesk.domain.ru@DOMAIN.RU (DES cbc mode with RSA-MD5) 2 HTTP/helpdesk.domain.ru@DOMAIN.RU (ArcFour with HMAC/md5) 2 HTTP/helpdesk@DOMAIN.RU (DES cbc mode with CRC-32) 2 HTTP/helpdesk@DOMAIN.RU (DES cbc mode with RSA-MD5) 2 HTTP/helpdesk@DOMAIN.RU (ArcFour with HMAC/md5) 

確かに、新しく確立されたプリンシパルのKDCからKerberosチケットを取得できます。
 kvno HTTP/web.domain.ru@DOMAIN.RU HTTP/web@DOMAIN.RU HTTP/web.domain.ru@DOMAIN.RU: kvno = 2 HTTP/web@DOMAIN.RU: kvno = 2 

チームでチケットを確認します。
 klist -e 

結論は現在利用可能なチケットの完全なリストになります。その中にHTTPチケットがあります。もしあれば、すべては問題ありません。完璧主義者でなければ、次のステップに進むことができます。

残りの部分については、私は完璧主義者であり、すべてのキーを1つのファイルに保存するのは適切ではないと思います。HTTPに関するすべてを別のキーファイルにハイライトしましょう。これはktutilで実行できます。 高度な編集機能をサポートしていないため、 rlwrapを使用して起動できます。
 rlwrap ktutil 

keytabファイルの内容をダウンロードします。
 ktutil: read_kt /etc/krb5.keytab 

私たちが今持っているものを見てみましょう:
 ktutil: list 

HTTPで始まるすべてに興味があり、不要なものはすべて削除します。
 ktutil: delent 1 # 1     

次のようになります。
 ktutil: list slot KVNO Principal ---- ---- --------------------------------------------------------------------- 1 2 HTTP/helpdesk.domain.ru@DOMAIN.RU 2 2 HTTP/helpdesk.domain.ru@DOMAIN.RU 3 2 HTTP/helpdesk.domain.ru@DOMAIN.RU 4 2 HTTP/helpdesk.domain.ru@DOMAIN.RU 5 2 HTTP/helpdesk.domain.ru@DOMAIN.RU 6 2 HTTP/HELPDESK@DOMAIN.RU 7 2 HTTP/HELPDESK@DOMAIN.RU 8 2 HTTP/HELPDESK@DOMAIN.RU 9 2 HTTP/HELPDESK@DOMAIN.RU 10 2 HTTP/HELPDESK@DOMAIN.RU 

次に、残っているすべてを別のファイルに保存します。
 ktutil: write_kt /etc/httpd.keytab 

そして、ユーティリティを終了します。
 quit 

4. Apache2とモジュールを配置します。 (ランプ)+ Perl


Ubuntu 14 でのサービスのセットアップに関する優れたマニュアルはこちら

私はあなたのためにどのようにしたらいいのかわかりませんが、私にとっては、Webサーバー、 LAMPの場合、特にMySQLとApacheが必要なため、スタック全体を一度に配置します。phpには便利な関数phpinfo() 環境変数を監視します。

行きましょう。 Apacheを置きます

 apt-get install mysql-server apache2 php5 libapache2-mod-php5 libapache2-mod-auth-mysql php5-mysql php5-cgi libapache2-mod-php5 php5-common php-pear 

mysql-serverのインストール中に彼はmysqlスーパーユーザー( root @ localhost )のパスワードを設定するように求めます。両方ともrootであり 、異なるユーザーであるにもかかわらず、システムスーパーユーザーと混同しないようにお願いします。 誰も同じパスワードを指定することを禁止していませんが。 そのため、このパスワードを指定して覚えておいてください。それでも必要です。

すべてのパッケージが配信されたら 、すぐにMySQLを少し構成する必要があります。そのために、 / etc / mysql / my.cnfファイルを開きます。
 mcedit /etc/mysql/my.cnf 

ファイルには、受信パケットの最大サイズを示す2行があります。 行はmax_allowed_pa​​cket始まります。 デフォルトでは、このartibootは16メガバイトに設定されており、両方の行で20 MBに変更されます。
 max_allowed_packet = 20M 

また、 innodbログファイルのサイズを変更する必要があります。これは、MS SQLのトランザクションログに類似していると理解しているためです。 これを行うには、次の行を見つけます。
 # * InnoDB 

そして、次の内容の別の行を追加します。
 innodb_log_file_size = 512M 

あなたはもっとすることができますが、OTRSはまさにそのようなボリュームをお勧めします。 ちょっとしたニュアンス:古いログファイルがある限り、MySQLは新しいファイルを作成できず、それに応じてボリュームを増やすことができないので、 / var / lib / mysqlフォルダーに移動し、どこにでも削除または移動します(移動する方が良いため、常に削除する時間がある) ib_logfile0やib_logfile1などの名前

次に、MySQLを再起動します。
 service mysql restart 

古いログファイルの代わりに、増加したボリュームの新しいログファイルが作成されたことを確認し、すべてが正常であることを確認します。 その後、隣接するマシンでブラウザーを開き、 ヘルプデスクにアクセスして、Apache2スタートページを開きます。 開いた? これですべて問題ありません— Apacheがインストールされました。

今Perl。

apt-get install perl libapache2-mod-perl2 libdbd-mysql-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libsoap-lite-perl libgd-text-perl libgd-graph-perl libapache-dbi-perl libyaml-libyaml-perl

ApacheがPHPおよびPERLスクリプトをどう処理するかを説明しましょう。これを行うには、/ etc / apache2 / mods-enabled / mime.confファイルの220行目のAddHandler行のコメントを外して、フォームに追加します。
 AddHandler cgi-script .cgi .pl 

また、この種類の別の1つを追加します。
 AddHandler php5-script .php 

php5、perl、およびcgiモジュールを有効にして、Apacheを再起動します。
 a2enmod php5 a2enmod perl a2enmod cgi service apache2 restart 

次に、すべてが機能するかどうかを確認しましょう。 これを行うには、 / var / www / htmlに 2つのディレクトリを作成します。
 mkdir /var/www/html/php mkdir /var/www/html/perl 

そして、それぞれにテストファイルを作成します。
 touch /var/www/html/php/index.php touch /var/www/html/perl/index.cgi 

次のように入力する最初のファイル(index.php):
 cat /var/www/html/php/index.php <html> <body> <div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;"> <?php print Date("Y/m/d"); echo "<br>Path :".$_SERVER['PHP_SELF']; echo "<br>Remote User :".$_SERVER['REMOTE_USER']; echo "<br>Auth type :".$_SERVER['AUTH_TYPE']; echo "<br>Auth User :".$_SERVER['PHP_AUTH_USER']; ?> </div> <?php phpinfo(); ?> </body> </html> 

2番目では、次のように記述します。
 cat /var/www/html/perl/index.cgi #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n<body>\n"; print "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">\n"; print "CGI Test Page"; print "\n</div>\n"; print "</body>\n</html>\n"; 

権利を設定します。
 chmod 755 /var/www/html/php/index.php chmod 755 /var/www/html/perl/index.cgi 

そしてもう1つのニュアンス:スクリプトが/ var / www / html / perl /ディレクトリにあり、それらを実行できることをApacheに説明する必要があります。 これを行うには、 DocumentRoot行の後に/etc/apache2/sites-available/000-default.confファイルに次のブロックを追加します。
<Directory "/var/www/html/perl">
AllowOverride All
Options +ExecCGI
Require all granted


そして、apachephp5を再起動します。
 service apache2 restart 

ここで、ブラウザでhelpdesk / perl / index.cg iおよびhelpdesk / php / index.phpアドレスを開こうとします 。 開く必要があります。phpスクリプトに注意してください。ページの最上部に小さなブロックがあり、現在の日付といくつかの環境変数があります。このブロックは、Kerberos認証をデバッグするときに役立ちます。

また、短い名前ではページが開かない場合があります 。コンピューターのフルネーム、つまりhelpdesk.domain.ru/php/index.phphelpdesk.domain.ru/perl/index.cgiを入力する必要があります 。 これを修正する方法は検討しませんが、トピックに関係ないので、DNSとApacheの設定の方向を掘り下げる必要があるとだけ言います。

5. Apache2でKerberos認証を構成します。 認証パフォーマンスの確認。 透過認証を設定します。


このアイテムを使用すると、すべてがさらにシンプルになります。 モジュールを配置します。
 apt-get install libapache2-mod-auth-kerb 

オンにします:
 a2enmod auth_kerb 

Apacheを再起動します。
 service apache2 restart 

そして、phpスクリプトがあるフォルダーの承認を追加します(実際、phpスクリプトで環境変数の出力を備えたハリネズミがあるので、それをデバッグします)。これを行うには、/ etc / apache2 / sites-available / 000-default.confを再度開き、perlフォルダーのブロックの後にphpフォルダーに別のブロックを追加します。ApacheにKerberosキーでファイルを読み取る権限を与えます。
<Directory /var/www/html/php>
AuthType Kerberos
AuthName "Kerberos Authntication"
KrbAuthRealms DOMAIN.RU
Krb5Keytab /etc/httpd.keytab
KrbMethodNegotiate Off
KrbSaveCredentials Off
KrbVerifyKDC Off
Require valid-user



 chmod 644 /etc/httpd.keytab 

Apacheを再起動します。
 service apache2 restart 

ここで、helpdesk / php / index.phpのブラウザーに移動します。すべてが正常であれば、承認要求が表示されます。ドメインユーザーの資格情報を入力すると、アクセスが許可されます。空で、ページの上部のRemote_user、Auth_type、Auth_userの行に対応する値が表示されている場合、すべてが素晴らしいです。Kerberos認証が機能します。

残っているのは、この認証を透過的にすることです。つまり、ユーザーはユーザー名とパスワードを入力せず、ドメインのセッションから直接取得されます。

これを行うには、まず/etc/apache2/sites-available/000-default.confファイルでの行修正します。
KrbMethodNegotiate Off


KrbMethodNegotiate On

次に、ユーザーのブラウザーを構成します。
IE

IEでは、リソースを追加する必要があり、ヘルプデスクhelpdesk.domain.ruを、信頼に:

画像

[セキュリティ]タブで、Windows統合認証を許可する必要があります。

画像

その後、IEを再起動してスクリプトにログインします。ユーザー名とパスワードを要求するのではなく、すぐにユーザーを認証する必要があります。

Firefox

Mozilla Firefoxのセットアップに移りましょう。ここでは、再起動することなくすべてが簡単になります。アドレスバーに「about:config」、フィルターバーに「network.neg」と入力します。図に示すように、2行でドメインを入力します。



もう一度、ブラウザでhelpdesk / php / index.phpを開きます。ユーザー名とパスワードを要求せずにすぐにページが開き、上のブロックに完全なユーザーログインが表示された場合、おめでとうございます、透過認証が設定されています。すべての作業で最大かつ最も困難な段階を完了しました。

注意! ブラウザでのすべての操作は、ドメインアカウントでドメインにログインしているマシンから実行する必要があります!

Source: https://habr.com/ru/post/J264617/


All Articles