ラベル Apache の投稿を表示しています。 すべての投稿を表示
ラベル Apache の投稿を表示しています。 すべての投稿を表示

2013年3月9日土曜日

[Apache]WebDAV ディレクトリ下をブラウザから見られるようにする

webdav ディレクトリの設定にある Options に Indexes を追加する
Alias /webdav "/var/www/webdav/"
<IfModule mod_dav_fs.c>
 <Location /webdav>
 DAV On
 Options Indexes

 AuthType Basic
 AuthName "Login WebDAV"
 AuthUserFile "/var/www/secure/webdav/.htpasswd"
 Require valid-user

 Order deny,allow
 Deny from all
 Allow from all
 </Location>
 DAVMinTimeout 600

 # Location of the WebDAV lock database.
 DAVLockDB /var/lib/dav/lockdb
</IfModule>

[Apache]WebDAV 設定

  1. /etc/httpd/conf/httpd.conf で WebDAV モジュールが有効になっているか確認する
    /etc/httpd/conf/httpd.conf
    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module /modules/mod_dav_fs.so
  2. WebDAV の設定をする
    /etc/httpd/conf/httpd.conf
    #
    # WebDAV module configuration section.
    #
    Alias /webdav "/var/www/webdav/"
    <IfModule mod_dav_fs.c>
     <Location /webdav>
     DAV On
     Options None
    
     AuthType Basic
     AuthName "Login WebDAV"
     AuthUserFile "/var/www/secure/webdav/.htpasswd"
     Require valid-user
    
     Order deny,allow
     Deny from all
     Allow from all
     </Location>
     DAVMinTimeout 600
    
     # Location of the WebDAV lock database.
     DAVLockDB /var/lib/dav/lockdb
    </IfModule>
  3. ユーザ認証ファイルの作成
    # mkdir /var/www/secure
    # mkdir /var/www/secure/webdav
    # htpasswd -c /var/www/secure/webdav/.htpasswd user
  4. WebDAV の動作確認には DAV Explorer (http://www.davexplorer.org/) を使うとよい
    Windows の マイネットワーク → ネットワークプレースでは反応が鈍いので動作確認がし難い
  5. /var/www/webdav の所有権を apache:apache に変更する
    # chown apache:apache /var/www/webdav
  6. ファイルの書き込み時に SELinux が拒否してくる
    SELinux prevented httpd reading and writing access to http files.
    SELinux を強制的に無効にしている場合にはファイルの書き込みはできる。SELinux を無効にするには次のコマンドを実行
    # setenfoce 0
    SELinux を有効にしたままで WebDAV ディレクトリにアクセスできるようにする方法は調査中

[Apache]Client 証明書要求

  • conf.d/ssl.conf の以下の行に付いているコメントを外す
    conf.d/ssl.conf
    SSLVerifyClient require
  • CA 登録されていない client 証明書でも受け入れる場合は次のようにする
    conf.d/ssl.conf
    SSLVerifyClient optional_no_ca

[Apache]SSL 設定

Cipher suite
使用する Cipher suite は /etc/httpd/conf.d/ssl.conf の以下の箇所で指定する。

/etc/httpd/conf.d/ssl.conf
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCipherSuite 確認
SSLCipherSuite に指定している引数は openssl コマンドで確認できる。
$ openssl ciphers -v 'ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW'
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(256) Mac=SHA1
CAMELLIA256-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(128) Mac=SHA1
CAMELLIA128-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
KRB5-DES-CBC3-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=MD5
KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA SSLv3 Kx=DH Au=DSS Enc=SEED(128) Mac=SHA1
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=MD5
KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5
KRB5-DES-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=MD5
KRB5-DES-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=SHA1
EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1
EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1
DES-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1
この場合 IE8 で接続すると Client Hello (IE8 → Apache) の Cipher Suites で以下のものが指定される
TLS_RSA_WITH_RC4_128_MD5 (0x0004)
TLS_RSA_WITH_RC4_128_SHA (0x0005)
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
TLS_RSA_WITH_WITH_DES_CBC_SHA (0x0009)
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA (0x0064)
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA (0x0002)
TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x0003)
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 (0x0006)
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
TLS_DHE_DSS_WITH_DES_CBC_SHA (0x0012)
TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA (0x0063)
それに対する Apache の応答 Server Hello (Apache → IE8) の Cipher Suite は次のようになる
TLS_RSA_WITH_RC4_128_MD5 (0x0004)

MD5 サポートなしに設定する
MD5 を使用しない設定にする場合は /etc/httpd/conf.d/ssl.conf で次のように指定する

/etc/httpd/conf.d/ssl.conf
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!MD5:RC4+RSA:+HIGH:+MEDIUM:+LOW
$ openssl ciphers -v 'ALL:!ADH:!EXPORT:!SSLv2:!MD5:RC4+RSA:+HIGH:+MEDIUM:+LOW'
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(256) Mac=SHA1
CAMELLIA256-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(128) Mac=SHA1
CAMELLIA128-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA SSLv3 Kx=DH Au=DSS Enc=SEED(128) Mac=SHA1
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
KRB5-DES-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=SHA1
EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1
EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1
DES-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1
これで IE8 から Apache に接続すると Server Hello (Apache → IE8) の Cipher Suite は次のようになる
TLS_RSA_WITH_RC4_128_SHA

[Apache]SSL インストール

  1. mod_ssl をインストールする
    # yum install mod_ssl
  2. httpd 再起動
    # /etc/init.d/httpd restart
    Stopping httpd: [ OK ]
    Starting httpd: [ OK ]

[Apache]CGI をユーザーディレクトリで実行可能にする (未完了)

  1. httpd.conf 編集
    # user directory cgi
    ScriptAlias /~[ユーザー名]/cgi-bin/ "/home/[ユーザー名]/public_html/cgi-bin/"
    <Directory "/home/[ユーザー名]/public_html/cgi-bin">
    AllowOverride None
    # Options None
    Options ExecCGI
    Order allow,deny
    Allow from all
    </Directory>
  2. Apache 再起動
  3. public_html/cgi-bin にスクリプトを置く
  4. テスト
    Internal Server Error が発生する場合は、一旦 SELinux を無効にしてテストしてみる
    # setenfore 0
    これで成功する場合は SELinux の設定を変更する必要あり
  5. audit.log 確認
    /var/log/audit/audit.log を確認すると SELinux がブロックしたことが分かる
    type=AVC msg=audit(1288998630.696:106): avc: denied { execute } for pid=16405 comm="httpd" name="test00.cgi" dev=dm-2 ino=265416 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_user_content_t:s0 tclass=file
    SELinux を有効にしたままユーザーディレクトリの cgi を実行する方法は調査中

[Apache]ユーザーページ公開

  1. /home/[ユーザー名]/ の下に public_html ディレクトリを作成する
  2. /home/[ユーザー名] に o+x のアクセス権を与える
    $ chmod o+x /home/[ユーザー名]
  3. public_html ディレクトリも o+x になっているか確認する
  4. httpd.conf 編集
    public_html で検索すると以下のようになっているのでdisabled をコメントアウトし、public_html を有効にする。
    <IfModule mod_userdir.c>
        UserDir disabled
        # UserDir public_html
    </IfMdule>
  5. SELinux に homedir アクセスを許可する
    この状態で localhost/~[ユーザー名] にアクセスすると SELinux がアクセスブロックする
    # setsebool -P httpd_enable_homedirs true
  6. public_html のタイプラベル情報を変更する
    ls -Z でタイプラベル情報が表示できる
    $ ls -Z
    drwxrwxr-x. user user unconfined_u:object_r:user_home_t:s0 public_html
    何もしていないファイル/ディレクトリはタイプが user_home_t になっている。ここで表示される情報は以下の通り
    • user: unconfined_u
    • role: object_r
    • type: user_home_t
    restorecon でファイル/ディレクトリのタイプラベル情報を再帰的に適切なものに初期化する
    # restorecon -R /home/[ユーザー名]/public_html/
    $ ls -Z
    drwxrwxr-x. user user unconfined_u:object_r:httpd_user_content_t:s0 public_html
    タイプが httpd_user_content_t に変更され、Apache がアクセスできるようになる

[Apache]インストール

Fedora にはすでにインストール済みなので yum install は不要
  • 自動起動するように設定する
    # chkconfig --list httpd
    httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
    # chkconfig httpd on
    # chkconfig --list httpd
    httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  • 今回は手動で起動する
    # /etc/init.d/httpd start
    httpd を起動中: [ OK ]
  • /etc/httpd/conf/httped.conf で以下の設定を確認しておく
    • Listen: ポート番号
    • DocumentRoot: 公開するディレクトリ
    • DirectoryIndex: / をアクセスした時に表示されるファイル
  • Firewall で http, https のポートを開放する