カテゴリの投稿: » Apache

メンテナンス中mod_rewrite

Written in 2014年05月26日 by | コメントする( 0件 )

メンテナンス中にメンテページにリダイレクトさせるよく使うmod_rewriteをメモしておこうっと。httpd.conf内のバーチャルホスト設定内に書く。自分のIPの場合はメンテページに飛ばさないようにしている。

<VirtualHost *:80>
  ( 略 )
  RewriteEngine On
  RewriteCond "%{REQUEST_URI}" "!^/maintenance.html" [NC]
  RewriteCond "%{REQUEST_URI}" "!.(jpg|gif|png|css)$" [NC]
  RewriteCond "%{REMOTE_ADDR}" "!111.222.111.222" [NC]
  RewriteRule "(.*)" http://www.somedomain.co.jp/maintenance.html [R,L]
</VirtualHost>

任意のドメイン、メンテページのパス、自分のIPを入れて設定する。

OpenSSLの脆弱性 The Heartbleed Bug

Written in 2014年04月09日 by | コメントする( 0件 )

OpenSSLの新しいバージョンにかなり危険な脆弱性が報告されています。早急に対処が必要です。

 

■対処バージョン

OpenSSL 1.0.1 から 1.0.1f

OpenSSL 1.0.2-beta から 1.0.2-beta1

 

■修正済みバージョン

OpenSSL 1.0.1g

Tarballs : http://www.openssl.org/source/

■JPCERTによる勧告

http://www.jpcert.or.jp/at/2014/at140013.html

OpenSSL Project が提供する OpenSSL の heartbeat 拡張には情報漏えいの

脆弱性があります。結果として、遠隔の第三者は、細工したパケットを送付す

ることでシステムのメモリ内の情報を閲覧し、秘密鍵などの重要な情報を取得

する可能性があります。

管理するシステムにおいて該当するバージョンの OpenSSL を使用している場合

は、OpenSSL Project が提供する修正済みバージョンへアップデートすること

をお勧めします。

 

■参考サイトURL

・Heartbleed解説ページ(英語)

http://heartbleed.com/

・参考となるブログ(記事をありがとう)

http://d.hatena.ne.jp/nekoruri/20140408/heartbleed

http://devlab.isao.co.jp/openssl_cve-2014-0160/

・脆弱性テストができるサイト

http://filippo.io/Heartbleed/#www2.millet.co.jp

 

■対策等

【1】以下のコマンドでバージョン確認

rpm -qa |grep openssl

openssl version

【2】RPM版ならyumでアップデート

CentOS6.5 では、opensslのRPMにおいてopenssl-1.0.1e-16.el6_5.7 で修正されている

http://lists.centos.org/pipermail/centos-announce/2014-April/020249.html

yum update openssl

※ソースならOpenSSL 1.0.1g 以降をインストールする。

【3】opensslのライブラリを使っているプロセスを確認

lsof | grep ssl

【4】それらのサーバプロセスを再起動

service crond restart

service httpd restart

service php-fpm restart

service fail2ban restart

service vsftpd restart

service mysql restart

service postfix restart

など。

出来れば、サーバマシンごと再起動がよい。

Apache2.2+PHP5.3+MySQL5.5環境でApacheが立ち上がらない

Written in 2011年03月23日 by | コメントする( 0件 )

最近、Apache2.2+PHP5.3+MySQL5.5の構築をしました。何度もしていたので甘く見てたら、Apache起動でOKと表示されるものの実際には立ち上がっておらず、ログにもエラーが出ていなかったので、とても困りました。

おそらくopensslの複数バージョンの混在が原因ではないかと思います。RPM版のopenssl0.9.8eが入っており、別途ソースインストールで、/usr/local/openssl にopenssl1.0.0cを入れていました。

MySQL5.5では、コンパイル時にCmakeを使うようになり、設定方法が以前と変わっており、opensslのインストールPREFIXを指定できずに(方法があるのかもしれませんが、、、)、デフォルトのディレクトリ/usr からライブラリを組み込むようで、RPM版のopenssl0.9.8eが組み込まれました。

一方、PHPではopensslのインストールディレクトリを指定できるので、/usr/local/openssl のopenssl1.0.0cを組み込もうとしたところ、MySQL5.5からクライアントライブラリを組み込む指定もしていたので、MySQL5.5のopenssl0.9.8eとPHP5.3のopenssl1.0.0cがコンフリクトして「セグメンテーション違反」となって、コンパイルできなかった。

なので、opensslは複数バージョンのDSOモジュールがあると競合するようだ。仕方なく、PHPには、/usrのパスを指定してopenssl0.9.8eを組み込んだ。

さて、Apache2.2には、opensslのパス指定ができるので、/usr/local/openssl のopenssl1.0.0cを組み込んでいました。このアパッチにlibphp5.soを読み込ませるわけだが、そうするとApache2.2のopenssl1.0.0cと、PHP5.3およびMySQL5.5に組み込まれたopenssl0.9.8eがコンフリクトするのではなかろうか。PHPコンパイル時のPHP x MySQLのコンフリクトのようにエラーが出ればいいが、Apache起動時にエラーも吐かずに立ち上がらないという状況はいかにも困った。

これらのopensslコンフリクトの仮説をもとに、Apache2.2もopenssl0.9.8eを組み込んでコンパイルし直し、PHP5.3も同様にコンパイルしなおしたところ、動きました。。。。

Apache2.0で、mod_cacheを後から追加

Written in 2010年03月29日 by | コメントする( 0件 )

ソースインストールしたApache2.0に後からmod_cache.so、mod_disk_cache.so、mod_file_cache.so、mod_mem_cache.soを後から追加する。

ソースディレクトリに行く。うちの例では以下の通り。

cd /usr/local/src/apache/httpd-2.0.61/modules/cache/

apxsコマンドで、モジュールをコンパイル&インストール

apxs -i -a -c mod_file_cache.c

ソースディレクトリに行く。うちの例では以下の通り。

cd /usr/local/src/apache/httpd-2.0.61/modules/experimental/

apxsコマンドで、モジュールをコンパイル&インストール

apxs -i -a -c mod_cache.c cache_util.c cache_storage.c
apxs -i -a -c mod_mem_cache.c cache_cache.c cache_hash.c cache_pqueue.c
apxs -i -a -c mod_disk_cache.c

「-c」オプションでモジュールのソースファイルを指定。
「-i」オプションでビルド完了後モジュールをモジュールディレクトリに移動。
「-a」オプションでhttpd.confにLoadModule文が1行が追加されます。

Apache2.0で、mod_proxyを後から追加

Written in 2010年03月29日 by | コメントする( 0件 )

ソースインストールしたApache2.0に後からmod_proxy.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_connect.soを後から追加する。

ソースディレクトリに行く。うちの例では以下の通り。

cd /usr/local/src/apache/httpd-2.0.61/modules/proxy/

apxsコマンドで、モジュールをコンパイル&インストール

apxs -i -a -c mod_proxy.c proxy_util.c
apxs -i -a -c proxy_http.c proxy_util.c
apxs -i -a -c proxy_ftp.c proxy_util.c
apxs -i -a -c proxy_connect.c proxy_util.c

「-c」オプションでモジュールのソースファイルを指定。
「-i」オプションでビルド完了後モジュールをモジュールディレクトリに移動。
「-a」オプションでhttpd.confにLoadModule文が1行が追加されます。

proxyのモジュールでは、proxy_util.cが必要となっている。
これをしないとapachectl configtest時や、apache再起動時にエラーが出る。