WEBサーバを構築してみた

2014.3.14

Centos6 でWEBサーバを構築してみた。

yumでインストールするのは簡単ですが、今回は少しセキュリティ面を考慮したインストールと設定について記載します。

Apacheは、時々脆弱性等がみつかりバージョンアップします。標準リポジトリでインストールすると、現時点ではバージョン「2.2.15-29」が入りますがこれは少し古いものです。 セキュリティ対策の入ったなるべく新しい物をインストールするために、CentALTリポジトリを使用してApacheをインストールします。

CentALTリポジトリの追加

#rpm -ihv http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm

Apacheのインストール

#yum install httpd httpd-devel
#httpd -version
Server version: Apache/2.2.26 (Unix)

現時点(2014-03-14)では、バージョン「2.2.26」 がインストールされました。

リポジトリの優先順位設定

このままだと、他の物をインストールする際もCentALTリポジトリを使用してしまうので、「yum-plugin-priorities」をインストールして標準リポジトリが優先されてインストールされるようにします。

yum install yum-plugin-priorities

標準リポジトリ設定ファイルを修正します

すべてのセクションに「priority=1 」を追記します。

#vi /etc/yum.repos.d/CentOS-Base.repo

[base]
...
priority=1   #←追加
[updates]
...
priority=1   #←追加
[extras]
...
priority=1   #←追加
[centosplus]
...
priority=1   #←追加
[contrib]
...
priority=1   #←追加

その他Apacheの設定

TRACEメソッドを無効にする

「Cross Site Tracing」の脆弱性があり、TRACEメソッドが有効だとBasic 認証のパスワードが盗まれたりします。TRACEメソッドを使用する予定がないので無効にしておきます。

#vi /etc/httpd/conf/httpd.conf
TraceEnable Off #←追加

以下のようにtelnetで無効になっているか確認が出来ます。

# telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
OPTIONS / HTTP/1.0 ← #入力してエンター

HTTP/1.1 200 OK
Date: Fri, 14 Mar 2014 01:23:39 GMT
Server: Apache
Allow: GET,HEAD,POST,OPTIONS ← #ここに[TRACE]が無ければOK
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.

エラー画面等のOS、Apacheバージョンを非表示にする

攻撃者に対して余計な情報を与えることになるので非表示にしておきます。

#vi /etc/httpd/conf/httpd.conf
#ServerTokens OS
ServerTokens Prod

↓こうなります。

※「Apache Server」の表示を外すには、ソースからのインストールでオプション指定が必要なようです。ソースからインストールするとyum管理から外れる、アップデートや再インストール必要な場合の対応が大変なので、今回はCentALTリポジトリでインストールしてます。

以上