最新記事

カテゴリ

全記事(数)表示

全タイトルを表示

リンク

カテゴリ内記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

カテゴリ「スポンサー広告」の記事一覧

Apacheのアクセス制限でNTLM認証を利用する方法①

ApacheのアクセスにWindows統合認証(NTLM認証)してSSO(シングルサインオン)を行う方法について記載します。

※注意
シングルサインオンを行うにはもちろんクライアントはActiveDirectoryドメインに参加しておく必要があります。
ドメインユーザ以外からのアクセスでは当然SSOは出来ません。

 

作業手順

実際の大きな作業手順は以下になります。

1.サーバをActiveDirectoryドメインへ参加

2.ApacheにNTLM認証モジュールの組み込み

3.Apacheの設定

 

1.WEBサーバをドメインへ参加させる

まずはじめに、サーバをドメインに参加させます。

ドメインに参加させる方法は

LinuxサーバをActiveDirectoryドメインに参加させる方法

を参照してください。

 

次からは、

2.ApacheにNTLM認証モジュールの組み込み

の作業を行っていきます。

 

以上。

スポンサーサイト

タグ : Apache Linux ActiveDirectory アクセス制限


カテゴリ「Apache」の記事一覧

Apacheのアクセス制限にNTLM認証を利用する方法②(mod_auth_ntlm_winbind組み込み)

2.Apacheのモジュールの組み込み

次にApacheにNTLM認証を行うためのモジュールを組み込みます。

利用するモジュールは「mod_auth_ntlm_winbind 」といいます。

 

mod_auth_ntlm_winbind モジュールダウンロード
http://samba.org/ftp/unpacked/lorikeet/mod_auth_ntlm_winbind/
から必要なファイルをダウンロードしてきます。

必要なファイルは以下の3つです。
  ①mod_auth_ntlm_winbind.c
  ②configure.in
  ③500mod_auth_ntlm_winbind.info
  ④Makefile.in

これらを適当なディレクトリ内に保存します。ここではmod_auth_ntlm_winbindディレクトリとします。

 

Apacheへ「mod_auth_ntlm_winbind」の組み込み

# cd mod_auth_ntlm_winbind
# autoconf  ← autoconfコマンドがインストールされてない場合には、インストールしてください
# ./configure
# make
# make install

 

正しく確認組み込まれた事を確認します。
/usr/lib/httpd/modules/mod_auth_ntlm_winbind.so
が存在することを確認します。

 

次が最後です。「3.Apacheの設定」を行います。

 

以上。

タグ : Linux Apache アクセス制限 ActiveDirectory


カテゴリ「Apache」の記事一覧

Apacheのアクセス制限にNTLM認証を利用する方法③(Apacheの設定)

3.Apacheの設定

最後にApacheの設定を行います。

 

が、、、、、

 

設定を行う前に「/var/cache/samba/winbindd_privileged」ファイルのアクセス権を確認します。

所有者:

root:apache

 

権限:

750

# cd /var/cache/samba
# ls -l
drwxr-x--- 2 root apache 4096 9月 2 19:12 winbindd_privileged

※注意
上記の設定以外にはしない事!
例えば777とかにした場合にもエラーをはいてwinbindが起動しなくなる可能性があるので注意。

 

という事で、

 

/etc/httpd/conf/httpd.confを編集します。

LoadModule auth_ntlm_winbind_module modules/mod_auth_ntlm_winbind.so ← これを追記します。

(略)

Alias /ntlm_auth "/var/www/html/ntlm_auth"
<Directory "/var/www/html/ntlm_auth">
Options +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Please Enter ActiveDirectory Account"
NTLMAuth on ←これでNTML認証モジュールを読み込みます。
NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
← SquidのNTLMヘルパースクリプトを使用します。
NTLMBasicAuthoritative on
AuthType NTLM
require valid-user

</Directory>

 

ユーザ単位でアクセス制限を行いたい場合には、以下の様に記載します。

require user ユーザ名 ユーザ名 ユーザ名

 

グループも同様です

require group グループ名 グループ名 グループ名

 

参考:
apxsで組み込まれているモジュールを確認する方法

# /usr/sbin/httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

 

これで認証が正しく動作しない場合には、以下を確認して下さい。

・httpd.confの設定がKeepAliveが有効になっているか?

 → NTLM認証ではKeepAliveが有効になっている必要があります。

 

・winbindやsambaが起動しているか?

 

・SSLサイトの場合

SSLサイトでのApacheのNTLM認証について(IEの動作について)

 

以上。

タグ : Apache Linux apache アクセス制限


カテゴリ「Apache」の記事一覧

SSLサイトでのApacheのNTLM認証について(IEの動作について)

SSLサイトにてApahceでNTLM認証を行った場合に、動作せずに失敗することがあります。

その場合には以下の対応を行うことで動作します。

 

SSLサイトでNTLM認証を設定した場合には、IEではデフォルト認証できません。

FireFoxなど他のブラウザの場合は対応しており動作OKです。

SSLのApacheの設定内に以下の様な、環境変更が設定されていることが原因です。

/etc/httpd/conf.d/ssl.confを修正

# SetEnvIf User-Agent ".*MSIE.*" \ #ブラウザがIEの場合に適用
# nokeepalive ssl-unclean-shutdown \ # Keep-Aliveしない
# downgrade-1.0 force-response-1.0


NTLM 認証では、Keep-Aliveがonになっている事が必要なので、nokeepaliveをコメントアウトする必要がある。

 

そのため以下の設定に変更した。

SetEnvIf User-Agent ".*MSIE.*" ssl-unclean-shutdown

※「downgrade-1.0 force-response-1.0」 の記載があったときにもだめだった。NTLMに関係があるのか?(下参照)

(補足)上の設定がそもそもなんであるかの意味
調査したところ、どーやら、IEのSSL3.0とKeep-Aliveの実装に問題があるらしい、

それを回避するためにブラウザのUser-Agentをチェックし、IEだった場合に

"nokeepalive"でKeep-Aliveを切り、
"ssl-unclean-shutdown"でSSL3.0のclosure alertを無効にして、
"downgrade-1.0"と"force-response-1.0"でHTTP/1.0

の使用を強制する様にしているみたいです。

 

以上。

タグ : Apache 認証 Linux apache


カテゴリ「Apache」の記事一覧

WEBアクセスしたときに、末尾のスラッシュを補完するようにする設定方法

例えば、アクセス時アドレス欄に

「http://www.hogehoge.co.jp」でアクセスした場合に、自動的に「http://www.hogehoge.co.jp/」で補完してアクセスくれる。

UseCanonicalName On
ServerName www.hogehoge.co.jp:80

→補完する際には上記で設定したサーバ名にて補完されます。

 

以上。

タグ : Apache


カテゴリ「Apache」の記事一覧

Apache2.0での文字化け対応

Apache2ではデフォルトで文字コードが設定されています。

そのため、例えHTML内でMETAタグを使って文字コード指定した場合でも文字化けが発生してしまいます。

以下のAddDefaultCharset行をコメントアウトしておけばいいだけです。

#AddDefaultCharset ISO-8859-1

 

これでも直らない場合もあります。その場合には言語設定の順番を変更します。

AddLanguage
AddLanguage en .en
とか
AddLanguage da .dk
という記述がずらっと並んだところで、
AddLanguage ja .ja
を先頭行に持ってきます(なければ追加)。

LanguagePriority
LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw
という行で ja を先頭に持ってきます(なければ追加)。

AddDefaultCharset
AddDefaultCharset off
または、
AddDefaultCharset shift_jis
と設定します(または AddDefaultCharset EUC-JP など)。

AddCharset
AddCharset shift_jis .sjis
AddCharset EUC-JP .euc-jp
という2行を先頭行にします(なければ追加。ただ、ここは先頭行でなくてもいいと思いますが)。

以上。

タグ : Apache Linux


カテゴリ「Apache」の記事一覧

Apacheでhttp://*のアクセスを全てhttps://にリダイレクトする方法

セキュリティ上、https://*でのアクセスしか許可させたくない場合があります。


そんな場合にはApacheの設定で、http://*へアクセスがあった場合には、

https://*へリダイレクトさせてしまいます。

 

Apacheのモジュール、RewriteCondとRewriteRuleを使用します。

 

/etc/httpd/conf/httpd.confを編集します。

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*)?$ https://%{HTTP_HOST}/$1 [L,R]

 

以上。

タグ : Apache


カテゴリ「Apache」の記事一覧

Apacheでページを強制的にリダイレクトさせる方法

Apacheで指定したパス以下にアクセスがあった場合に、

強制的に指定したページにリダイレクトさせる方法について記載します。

RewriteEngineを使用します。

 

例として、/redirect/以下への全アクセスを/end.htmlへリダイレクトする方法を示します。

 

/etc/httpd.confを修正します。

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
RewriteRule (^/redirect/.*) /end.html [R] # /redirect/以下を/end.htmlへ強制リダイレクト

 

以上。

タグ : Apache


カテゴリ「Apache」の記事一覧

Apacheでページを強制的にリダイレクトさせる方法 (時間での制御)

Apacheで指定した時間内で特定パス以下にアクセスがあった場合に、

強制的に指定したページにリダイレクトさせる方法について記載します。

RewriteEngineを使用します。

 

サーバのメンテナンス時などで、作業時間中は特定のページ(メンテナンス中お知らせページなど)

を表示させたりする時に利用できます。

 

例として時間帯が「2010/10/10 1:00 ~ 2010/10/10 5:00」 の間に、

/test/以下へのアクセスを/mainte.htmlへリダイレクトする方法を示します。

 

/etc/httpd.confを修正します。

RewriteEngine on
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} >201010100100 # 2010/10/10 01:00
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} <201010100500 # 2010/10/10 05:00
RewriteRule (^/test/.*) /mainte.html [R] # /test/以下を/mainte.htmlへ強制リダイレクト

 

以上。

タグ : Apache


カテゴリ「Apache」の記事一覧

ApacheでRefererによるアクセス制限の方法

ApacheでRefererによるアクセス制限を行う方法について記載します。

例えば、規約ページを経由しないと次に進めない様にしたい場合等・・・

特定のサイトからの不正アクセスを禁止する事が出来ます。

 

例として、http://hogehoge.com/acl_ok.htmlからリンクしてアクセスする以外は
/var/www/html/referer_check/ディレクトリ内のページへアクセスできない様する方法を示します。

 

/etc/httpd.confを修正します。
SetEnvIf Referer ^http://hogehoge.com/acl_ok.html acl_ok # 環境変数からRefererをとり、指定したページ以外を拒否する様に設定
<Directory "/var/www/html/referer_check"> # /var/www/html/referer_checkディレクトリに対して
Order Deny,Allow
Deny from all
Allow from env=acl_ok # Refererが「acl_ok」にマッチした場合のみ許可
</Directory>

 

以上。

タグ : Apache


カテゴリ「Apache」の記事一覧

ApacheでLDAP認証を行う方法

ApacheでLDAP認証を行う方法について記載します。

これによって、LDAPで一元管理されたユーザでアクセス制限可能となります。

パスワードとかの管理もApache側でしなくてよくなります。

 

注意!
但し、認証方式はBasic認証となりますので、セキュリティ的にはお勧めできません。
NTLM認証にてアクセス制限をする事をお勧めします。

 

ApacheでLDAP認証を行うのには「openldap」がインストールされている必要があります。

以下のコマンドから最低以下の3パッケージがインストールされている事を確認して下さい。

# rpm -qa | grep openldap
openldap-servers-2.3.27-8.el5_2.4
openldap-clients-2.3.27-8.el5_2.4
openldap-2.3.27-8.el5_2.4

 

もしもインストールされてなければyumとかでインストールして下さい。

# yum install openldap*

 

次にApacheの設定を行います。認証は「mod_authnz_ldap」モジュールで行います。

例として以下の環境とします。
・「/var/www/html」以下に対してLDAP認証を行う。
・LDAPサーバーは「192.168.1.1」
・検索対象は「ou=Users,ou=Ldap Accounts,dc=hogehoge,dc=com」でその「mail」要素で認証を行う。
・メールアドレス「ldapuser01@hogehoge.com」が登録されている事とする。
・認証をクリアした全ユーザ(Valid User)に対してアクセスを許可します。

 

はじめに以下コマンドから正しくLDAP接続ができるか確認しておきましょう。

# ldapsearch -x -H ldap://192.168.1.1 -b "OU=Users,OU=LDAP Accounts,DC=hogehoge,DC=com" -s sub "(mail=ldapuser01@hogehoge.com)"

上記ができた事が確認できたら、

/etc/httpd/conf/httpd.confを修正します。

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so # モジュールが組み込まれていることを確認します。
LoadModule ldap_module modules/mod_ldap.so

<Directory "/var/www/html">
Options Indexes FollowSymLinks Includes ExecCGI
AuthName "LDAP 認証"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://192.168.1.1/ou=Users,ou=Ldap%20Accounts,dc=hogehoge,dc=com?mail? # 空白は%20で表記します
Require valid-user
</Directory>

 

httpdを再起動または再読み込みします。

# /etc/rc.d/init.d/httpd reload

 

以上。

タグ : Apache


カテゴリ「Apache」の記事一覧


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。