○ modsecurity-apacheのインストール

*apache(httpサーバ)への不正アクセスを監視します
*modsecurity-apache_2.5.11をソースからインストールし、設定します
*xoopsなどのユーザからの書込で、不正アクセスになる場合があります
*make はメンテナンスマシンで行っています

*httpリクエストにhtmlのタグを含めるとエラーになる場合が多い
*不特定多数の書き込みが発生する動的なサイトにはむかない

**以降はコメントです
*新規インストールした openssl を使います
*ソースの取得、削除は省略します
*エディタ、ファイラーの操作は省略します
*ソースを展開したら説明文 (英文) を読みましょう
*Enterキーを省略します

*ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
*設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:modsecurity-apache_2.5.11.tar.gz  (http://www.modsecurity.org/)
:lua-5.1.4-3.fc11.src.rpm (http://ftp.riken.jp/Linux/fedora/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
httpd/phpのインストール

○インストール環境

:OS CentOS 5.4
:selinux disabled or permissive
:インストール先 
:作業 /usr/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

*メンテナンスの場合は一般ユーザから行います



○lua-5.1.4

*modsecurity-apache_2.5.11で必要です
*fedoraのパッケージをCentOS用にアレンジします
*md5チェックができないので、--nomd5オプションでインストールします

# cd /usr/src
# mkdir lua
# rpm -ivh --nomd5 lua-5.1.4-3.fc11.src.rpm
# cd redhat/SPECS
# rpmbuild -ba --clean --rmsource --define 'dist .C54' lua.spec
# mv lua.spec /usr/src/lua
# cd ../RPMS/i386

*作成されたパッケージ
 lua-5.1.4-3.C54.i386.rpm
 lua-devel-5.1.4-3.C54.i386.rpm
 lua-static-5.1.4-3.C54.i386.rpm

# rm *debuginfo*
# mv *.rpm /usr/src/lua
# cd ../../SRPMS

*作成されたパッケージ
 lua-5.1.4-3.C54.src.rpm

# mv *.rpm /usr/src/lua

*インストール

# cd /usr/src/lua
# rpm -Uvh lua-static* lua-devel* lua-5.1.4-3.C54.i386.rpm

○キャッシュ情報の更新と確認

# ldconfig
# ldconfig -p | grep lua



○modsecurity-apache_2.5.11

○ソースの展開・インストール

*apr-1-config、apu-1-configスクリプトのリンクを作ります

# cd /usr/local/bin
# ln -s /usr/local/apache2/bin/apr-1-config apr-config
# ln -s /usr/local/apache2/bin/apu-1-config apu-config

# cd /usr/src
# tar zxvf modsecurity-apache_2.5.11.tar.gz
# chown -R root:root modsecurity-apache_2.5.11
# cd modsecurity-apache_2.5.11/apache2
# ./configure
# make
# make test
# make install

*ルールのコピー

# mkdir /etc/httpd/modsecurity
# cd ../rules
# cp -a *.conf /etc/httpd/modsecurity
# cp -a base_rules/* /etc/httpd/modsecurity
# cd /usr/src
# tar jcvf modsecurity-apache_2.5.11-100120.tar.bz2 modsecurity-apache_2.5.11/



○modsecurityの設定

○apacheのconfigファイルの修正

:/etc/httpd/conf/httpd.conf

*省略

Include /etc/httpd/conf/extra/mod_security.conf

:/etc/httpd/conf/extra/mod_security.conf

*et_sql_injectionとet_web_rulesはSNORT_RULESから作成されたものです
*有効にする場合は #記号 を外します

LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua-5.1.so
LoadModule security2_module modules/mod_security2.so

<IfModule security2_module>
    Include /etc/httpd/modsecurity/modsecurity_crs_10_config.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_10_global_config.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_20_protocol_violations.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_21_protocol_anomalies.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_23_request_limits.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_30_http_policy.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_35_bad_robots.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_40_generic_attacks.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_41_phpids_filters.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_41_sql_injection_attacks.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_41_xss_attacks.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_45_trojans.conf
#   Include /etc/httpd/modsecurity/modsecurity_crs_46_et_sql_injection.conf
#   Include /etc/httpd/modsecurity/modsecurity_crs_46_et_web_rules.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_47_common_exceptions.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_48_local_exceptions.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_49_enforcement.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_50_outbound.conf
    Include /etc/httpd/modsecurity/modsecurity_crs_60_correlation.conf
</IfModule>

○modsecyurityのconfigファイルの修正

*レスポンスボディをバッファして解析するかどうか(SecResponseBodyAccess)
*ステータスコードでaudit_logへの出力を制御 (SecAuditLogRelevantStatus)
*ログの出力先をapacheの設定に合わせます

:/etc/httpd/modsecurity/modsecurity_crs_10_config.conf

*省略

SecResponseBodyAccess Off

*省略

SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus "^(?:5|40[^4]|41[^0]|42)"

*省略

SecAuditLog /var/log/httpd/modsec_audit_log
SecAuditLogParts "ABIFHZ"

*省略

SecDebugLog /var/log/httpd/modsec_debug_log

*省略

*id番号により、ルールを無効にする

:/etc/httpd/modsecurity/modsecurity_crs_48_local_exceptions.conf

# 特定のリモートアドレスからのアクセスを無視する
SecRule REMOTE_ADDR "^192\.168\.0\.3$" \
phase:1,nolog,allow,ctl:ruleEngine=Off

# IPアドレスによるアクセスの警告が気になる場合
SecRuleRemoveById 960017

# mod_deflateに対する警告が気になる場合
SecRuleRemoveById 960903

# Xoopsのpico、multipart/form-dataへの対応
SecRule &TX:/arg_name_content_id/ "@gt 0" \
"phase:2,t:none,nolog,pass,setvar:tx.anomaly_score=-20"

# Xoopsのmynews(pico)のアップデートへの対応
SecRule &TX:/arg_name_dirname/ "@gt 0" \
"phase:2,t:none,nolog,pass,setvar:tx.anomaly_score=-20"

SecRule REQUEST_BODY ".mynews=" \
"phase:2,t:none,nolog,pass,setvar:tx.anomaly_score=-20"

*modsecurityを無効にする場合

:/etc/httpd/modsecurity/modsecurity_crs_10_config.conf

SecRuleEngine Off

○selinuxヘの対応 (selinuxが有効の場合)

*新規インストールファイルのselinuxラベルを修正

# restorecon -Rv /etc
# restorecon -Rv /usr/local

○apacheのリスタート

# service httpd configtest
# service httpd restart

○ Copyright(c) 528p.com All Rights Reserved.