カテゴリー
Linux

Apache の mod_security を yum インストール【高いバージョン、リポジトリ】【性能測定】【CentOS 5.9】★わふー♪2★

Apache の mod_security をインストールしました。

  • yum で簡単にお手軽に mod_security をインストール
  • CentOS 5.9
  • できるだけ最新版のバージョンの mod_security を導入したい

以上の条件での記録を残します。

ポイント

  • 本家で紹介されているリポジトリ RHEL/CentOS Yum Repository (Jason Litka) よりも、EPEL の方がより最新のバージョンの mod_security を CentOS へインストールできる
  • ルールを設定しなくとも mod_security をインストールするだけで性能は落ちる

性能の低いサーバには入れないほうがよいという判断も充分にありえますわ。セキュリティのルールをたくさん設定しても性能は落ちるのでしょうけれども、インストールするだけで落ちますから。

実践!yum で mod_security 簡単導入♪

次の流れで進めていきました。

  1. リポジトリの確認、導入
  2. yum で mod_security インストール
  3. Apache Bench で性能確認

1.リポジトリの確認、導入

CentOS 5.9 です。できるだけ最新版の mod_security をインストールしたいです!となりますと、リポジトリの導入が必要であるとピンときます♪

スクリーンショット 2013-09-11 21.50.45.png

こちらの本家ページを拝見しますと、「RHEL/CentOS Yum Repository (Jason Litka)」という CentOS 用のリポジトリがございます。これ?ですの?

いいえ!

下にある「Fedora Core (Michael Fleming)」リポジトリを採用いたします。これ、実は EPEL です。以前、リポジトリについて調べました時に、EPEL を入れております。

実際に確かめてみましたところ、EPEL の方がより最新版です。

  • 「RHEL/CentOS Yum Repository (Jason Litka)」の utterramblings ⇒ 2.5.9
  • 「Fedora Core (Michael Fleming)」の EPEL ⇒ 2.6.8

「RHEL/CentOS Yum Repository (Jason Litka)」の utterramblings で確認しましたログです。

[root@localhost ~]# yum --enablerepo=utterramblings info mod_security
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi: mirror.smartmedia.net.id
 * rpmforge: mirror-fpt-telecom.fpt.net
 * updates: ftp.tsukuba.wide.ad.jp
Available Packages
Name       : mod_security
Arch       : i386
Version    : 2.5.9
Release    : 1.jason.1
Size       : 1.2 M
Repo       : utterramblings
Summary    : Security module for the Apache HTTP Server
URL        : http://www.modsecurity.org/
License    : GPLv2
Description: ModSecurity is an open source intrusion detection and prevention engine
           : for web applications. It operates embedded into the web server, acting
           : as a powerful umbrella - shielding web applications from attacks.

[root@localhost ~]#

つづいて、「Fedora Core (Michael Fleming)」の EPEL と比較して確認した時の模様です。

[root@localhost ~]# yum --enablerepo=epel,utterramblings info mod_security
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi: mirror.smartmedia.net.id
 * rpmforge: mirror-fpt-telecom.fpt.net
 * updates: ftp.tsukuba.wide.ad.jp
epel                                                                    | 3.6 kB     00:00    
Available Packages
Name       : mod_security
Arch       : i386
Version    : 2.6.8
Release    : 4.el5
Size       : 159 k
Repo       : epel
Summary    : Security module for the Apache HTTP Server
URL        : http://www.modsecurity.org/
License    : ASL 2.0
Description: ModSecurity is an open source intrusion detection and prevention engine
           : for web applications. It operates embedded into the web server, acting
           : as a powerful umbrella - shielding web applications from attacks.

[root@localhost ~]#

ですから、迷わず EPEL リポジトリでの mod_security 導入に決めました♪

もっとも、本当の最新版はバージョン 2.7.5 ですので、たとえ EPEL リポジトリを使用しても真の最新バージョンをインストールできませんこと、注意です!

2.yum で mod_security インストール

  • yum –enablerepo=epel install mod_security

とコマンドするだけですの、簡単ですの♪

なお、次で実際に行った時は、EPEL リポジトリを常にオンするように [epel] の enabled の値を「1」にしておりましたので「–enablerepo=epel」は記述しませんでしたこと、予めお断り申し上げますわ。

また、依存の関係で mod_security と同時に lua というパッケージもインストールされるようです。この lua がなにものであるかは、掘り下げませんの。

[root@localhost ~]# yum install mod_security
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi: mirror.smartmedia.net.id
 * rpmforge: mirror-fpt-telecom.fpt.net
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                    | 1.1 kB     00:00    
epel                                                                    | 3.6 kB     00:00    
extras                                                                  | 2.1 kB     00:00    
pgdg92                                                                  | 2.8 kB     00:00    
remi                                                                    | 2.5 kB     00:00    
rpmforge                                                                | 1.9 kB     00:00    
updates                                                                 | 1.9 kB     00:00    
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_security.i386 0:2.6.8-4.el5 set to be updated
--> Processing Dependency: liblua-5.1.so for package: mod_security
--> Running transaction check
---> Package lua.i386 0:5.1.4-4.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================
 Package                   Arch              Version                   Repository         Size
===============================================================================================
Installing:
 mod_security              i386              2.6.8-4.el5               epel              159 k
Installing for dependencies:
 lua                       i386              5.1.4-4.el5               epel              228 k

Transaction Summary
===============================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 387 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): mod_security-2.6.8-4.el5.i386.rpm                                | 159 kB     00:00    
(2/2): lua-5.1.4-4.el5.i386.rpm                                         | 228 kB     00:00    
-----------------------------------------------------------------------------------------------
Total                                                          538 kB/s | 387 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : lua                                                                     1/2
  Installing     : mod_security                                                            2/2

Installed:
  mod_security.i386 0:2.6.8-4.el5                                                             

Dependency Installed:
  lua.i386 0:5.1.4-4.el5                                                                      

Complete!
[root@localhost ~]#

3.Apache Bench で性能確認

mod_security インストール前に一度測定し、インストール後に

  • /etc/init.d/httpd restart

などで Apache を再起動しましてまた測定します。結果、性能が落ちました><。

  • mod_security インストール前 → Requests per second:    3.25 [#/sec] (mean)
  • mod_security インストール後 → Requests per second:    3.16 [#/sec] (mean)

インストール前の測定の詳細です。

[root@localhost ~]# ab -n 100 -c 10 http://192.168.56.111/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.56.111 (be patient).....done

Server Software:        Apache
Server Hostname:        192.168.56.111
Server Port:            80

Document Path:          /
Document Length:        44604 bytes

Concurrency Level:      10
Time taken for tests:   30.746842 seconds
Complete requests:      100
Failed requests:        1
   (Connect: 0, Length: 1, Exceptions: 0)
Write errors:           0
Non-2xx responses:      1
Total transferred:      4433864 bytes
HTML transferred:       4416059 bytes
Requests per second:    3.25 [#/sec] (mean)
Time per request:       3074.684 [ms] (mean)
Time per request:       307.468 [ms] (mean, across all concurrent requests)
Transfer rate:          140.79 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.2      0       4
Processing:   283 2992 7018.4    313   30160
Waiting:      183 2596 6483.2    204   29353
Total:        283 2992 7018.9    313   30164

Percentage of the requests served within a certain time (ms)
  50%    313
  66%    320
  75%    363
  80%    927
  90%  14852
  95%  25665
  98%  29768
  99%  30164
 100%  30164 (longest request)
[root@localhost ~]#

次に、インストール後の測定結果詳細です。

[root@localhost ~]# ab -n 100 -c 10 http://192.168.56.111/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.56.111 (be patient).....done

Server Software:        Apache
Server Hostname:        192.168.56.111
Server Port:            80

Document Path:          /
Document Length:        44604 bytes

Concurrency Level:      10
Time taken for tests:   31.610292 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      4478100 bytes
HTML transferred:       4460400 bytes
Requests per second:    3.16 [#/sec] (mean)
Time per request:       3161.029 [ms] (mean)
Time per request:       316.103 [ms] (mean, across all concurrent requests)
Transfer rate:          138.34 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   771 3062 6297.7   1251   31607
Waiting:      560 2791 6281.8   1048   31396
Total:        771 3062 6297.7   1251   31607

Percentage of the requests served within a certain time (ms)
  50%   1251
  66%   1336
  75%   1591
  80%   1829
  90%   2943
  95%  26894
  98%  31282
  99%  31607
 100%  31607 (longest request)
[root@localhost ~]#

測定回数はたったの 1 回ですけれども、ウェブページをウェブブラウザへ返すときに、セキュリティーのルールが設定されていなくとも mod_security が動くだけでその分性能が落ちる、というのは充分に納得がいきます。

おそらくそういうことなのでしょう。

おわりに

本投稿は以前の次の投稿を少しだけ進めたものになります。

mod_security はこれからが本番ですの。設定ファイル、CRS(Core Rule Set コア・ルール・セット)、わけがわかりませんの!

mod_security はインストールして終わりではなく、Tripwire のようにインストール後の設定、運用が大変なタイプと存じます。

つまづき、惑い、苦労しながら、でも確実に進めていきたいですわ。

以上です。

コメントを残す