WAFの導入

WAFの導入と設定

 

WAFとは

WAF(Web Application Firewall)とは、Web アプリケーションにリクエストが送信される手前でリクエストを審査して、問題があればリクエストを拒否します。これにより仮に Web アプリケーションに脆弱性があったとしても WAFが、このリクエスト拒否をしてサイトを保護します。

ここで導入するのは、オープンソースのModSecurityです。ModSecurityは、Webサーバにインストールするホスト型のWAFで、Webアプリケーションの脆弱性を突いた攻撃を防ぎます。また、オープンソースで無償提供されており、自由に利用できるソフトウェアです。

ModSecurityのインストール

epelリポジトリからインストールします。インストール後、Apacheを再起動すれば、デフォルトでmod_securityの設定が有効になります

# yum –enablerepo=epel install mod_security mod_security_crs

Apache再起動
# systemctl restart httpd.service

ModSecurityの本格運用する前に、最初、遮断した場合に、不都合が無いか確認が必要です。

ModSecurityのファイル配置について
ModSecurityの設定ファイル: /etc/httpd/conf.d/mod_security.conf ・・・Modsecurityの設定ファイル
active ruleファイル: /etc/httpd/modsecurity.d/activated_rules/ ・・・このフォルダの下に有るのがルールを記述したファイルのリンクです
rulesファイルの実際の配置フォルダ: /usr/lib/modsecurity.d/base_rules/・・・ルールの実際のファイルがある場所です。ここから上記のフォルダにリンクを張ります

最初にModSecurityは運用モードで動作確認が必要

# vi /etc/httpd/conf.d/mod_security.conf

Include modsecurity.d/activated_rules/*.conf  <ーーー全ての設定を適用する

SecRuleEngine On     <ーーーセキュリティモードオン

この状態で、主にWordPressの動作確認をしましょう。一般ユーザーが正常にサイトが見えるか。また、編集作業に何か支障を生じないか、を確認することが必要です。確認するとしたら、動作ログ「/var/log/httpd/modsec_audit.log」の内容を確認してみましょう。。

なお、当サイトでは、WordPressにSiteGuardを導入している関係上、そのまま適用すると、ログイン画面を表示すること自体ができなくなりました。

その対応策は。特定のクライアント(編集を行うPCのIPアドレスを指定する)については、ModSecurity自体をスルーさせる事とし、それ以外のクライアントには、設定される全ての項目を有効化します。

特定のIPのみ許可する設定

ルールファイルを新しく作成します

# cd /usr/lib/modsecurity.d/base_rules
# touch modsecurity_crs_10_custom.conf
# vi modsecurity_crs_10_custom.conf
SecRule REMOTE_ADDR "@ipMatch 192.168.15.101,192.168.21.0/24" id:2000,phase:1,t:none,log,allow

実ファイルのルール定義のあるフォルダに移動し、定義ファイル modsecurity_crs_10_cuctom.comf を作成し、上記の内容を記入します。記載内容は、対象のIPアドレスにマッチするクライアントは審査をパスする設定です。IPアドレスを複数指定する場合は”,”で区切ります。
次に、実際に参照するフォルダにリンクを張ります

# ln -s /usr/lib/modsecurity.d/base_rules/modsecurity_crs_10_custom.conf /etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_10_custom.conf
# cd /etc/httpd/modsecurity.d/activated_rules/
# ls
・・・
modsecurity_50_outbound.data
modsecurity_50_outbound_malware.data
modsecurity_crs_10_custom.conf   ・・・リンクを張った内容が表示される事!
modsecurity_crs_20_protocol_violations.conf
modsecurity_crs_21_protocol_anomalies.conf
・・・
modsecurity_crs_60_correlation.conf

定義ファイルの修正

# vi /etc/httpd/conf.d/mod_security.conf
<IfModule mod_security2.c>
    # ModSecurity Core Rules Set configuration
     IncludeOptional modsecurity.d/*.conf
     IncludeOptional modsecurity.d/activated_rules/*.conf <ーーーー全ての項目を適用します
   
    # Default recommended configuration
    SecRuleEngine On
#    SecRuleEngine DetectionOnly
    SecRequestBodyAccess On
・・・

Apacheを再起動します

# systemctl restart httpd.service

動作確認

1)IPを設定したPCからログインが出来る事。編集作業が出来る事を確認します。
2)それ以外のIPのPCからドメイン指定でアクセスし、サイトの表示に支障が無いこと。又、ログインが出来ないことを確認します。

どちらも、上記の状態を確認出来ればModSecurityは正常に動作していると判断して良いでしょう。

タイトルとURLをコピーしました