Webサーバ(apache)の設定ファイルを見てみる
実行環境
[root@verify01 ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@verify01 ~]# uname -a
Linux verify01 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@verify01 ~]# httpd -version
Server version: Apache/2.2.15 (Unix)
Server built: Oct 16 2014 14:48:21
設定項目を確認する
ServerTokens
HTTPレスポンスヘッダの[server:]部分に表示される情報レベルを指定する.
指定できるパラメータは[Major|Minor|Min|Prod|OS|Full]であり,デフォルトは[OS]である.
一部のパラメータに設定し, レスポンスヘッダを確認してみる.確認方法はw3mでレスポンスヘッダのみ抽出する.
別のやり方としてはWireSharkにて見る方法もある.
以下は, w3m -dump_head [serverIP|URL]にて確認したヘッダである.
OS(デフォルト)
HTTP/1.1 200 OK
Date: Sat, 11 Apr 2015 11:25:44 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sat, 11 Apr 2015 11:25:14 GMT
ETag: "4064d-44-51371227cebe8"
Accept-Ranges: bytes
Content-Length: 68
Connection: close
Content-Type: text/html; charset=UTF-8
Prod
HTTP/1.1 200 OK
Date: Sat, 11 Apr 2015 11:29:21 GMT
Server: Apache
Last-Modified: Sat, 11 Apr 2015 11:25:14 GMT
ETag: "4064d-44-51371227cebe8"
Accept-Ranges: bytes
Content-Length: 68
Connection: close
Content-Type: text/html; charset=UTF-8
Full(全ての情報が表示される)
HTTP/1.1 200 OK
Date: Sat, 11 Apr 2015 11:30:09 GMT
Server: Apache/2.2.15 (CentOS) DAV/2
Last-Modified: Sat, 11 Apr 2015 11:25:14 GMT
ETag: "4064d-44-51371227cebe8"
Accept-Ranges: bytes
Content-Length: 68
Connection: close
Content-Type: text/html; charset=UTF-8
以上の結果より,セキュリティレベル向上のためにはProdが望ましい.逆を言うと,FullやデフォルトのOSでは,
ディストリビューションやミドルウェアの詳細情報を表示してしまうため,攻撃されてしまう可能性がある.
LogFormat/CustomLog
access_log/error_log等の出力形式や出力場所を指定するためのパラメータ.デフォルトのままでも良いが, 自分が意図した内容にすると解析に役立つ.
LogFormat
ログファイルに出力される情報のフォーマット(書式)を指定する.
デフォルトでは,以下が設定されている
構文:LogFormat formatnickname [nickname]
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
ただし(バックスラッシュ)でエスケープされた文字は,そのままログに記載される
%{hogehoge}i はHTTPリクエストヘッダのhogehogeを指定している
[LogFormat nickname1 nickname2]とする場合,nickname2はnickname1を参照する.
また,フォーマット文字列はそれぞれにおいて意味を持つ.デフォルトのcombinedでは,以下のような意味を持っている.
フォーマット | 意味 |
---|---|
%h | リモートホスト(HostnameLookupsがOFFになっている場合はIPアドレスになる) |
%l | リモートログ名(クライアントにidentdまたは類似デーモンが起動している場合に付与される) |
%u | HTTP認証時に認証したユーザ名 |
%t | リクエストを受け付けた時刻 |
%r | リクエストの最初の行("RequestMethod RequestURI RequestVersion") |
%>s | サーバが最後に返した応答コード(場合によっては301などによってリダイレクトされる場合があるため、どのタイミングかの考え方がある) |
%b | レスポンスのバイト数(HTTPヘッダを除いた,bodyのみ) |
%{Referer}i | 直前に開いていたWebページのURL |
%{User-Agent}i | ユーザのWebブラウザについての情報 |
CustomLog
ログのファイル名と書式を指定する.デフォルトでは以下のようになっている.
構文: CustomLog file|pipe format|nickname
CustomLog logs/access_log combined
この構文を解析するには,[ServerRoot]が関係してくる.デフォルトでは以下のような設定になっている.
ServerRoot "/etc/httpd"
ServerRootにより,httpd.confファイルに記載されているパスは,/etc/httpd配下を示している.
よって,CostomLogによりログファイルが保存される先は
/etc/httpd/logs/access_log
となる.しかし,logsはシンボリックリンクとなっている.最終的に保存される場所を確認してみる.
[root@verify01 httpd]# pwd
/etc/httpd
[root@verify01 httpd]# ll
合計 8
drwxr-xr-x. 2 root root 4096 4月 11 21:19 2015 conf
drwxr-xr-x. 2 root root 4096 4月 11 20:13 2015 conf.d
lrwxrwxrwx. 1 root root 19 4月 11 20:13 2015 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root 29 4月 11 20:13 2015 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 19 4月 11 20:13 2015 run -> ../../var/run/httpd
よって、アクセスログは以下に保存されている
/var/log/httpd/access_log
(名前ベースの)VirtualHost
特定のホスト名が指定されたリクエストを別の指定した処理を実施する.
指定したホスト名を持つURLでアクセスした際,他のドキュメントルートのコンテンツを表示させる際に有効な技術.
また,2つのWebサーバを1つに擬似的に集約することが可能.設定として,以下のような設定を行う.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.virtual1.com //待ち受ける名前
DocumentRoot /www/virtual1
</virtualHost>
<VirtualHost *:80>
ServerName www.virtual2.com
DocumentRoot /www/virtual2
</VirtualHost>
# www.virtual1.comでリクエストされた場合は,/www/virtual1のコンテンツを表示,
# www.virtual2.comでリクエストされた場合は,/www/virtual2のコンテンツを表示させるように設定することが可能である.