CentOS 6およびApache 2上のModSecurityおよびOWASP

ModSecurityは、IIS、Apache2、Nginxと連携するように設計されたWebアプリケーションレイヤーファイアウォールです。これは、Apacheライセンス2.0の下でリリースされた無料のオープンソースソフトウェアです。ModSecurityは、Webサイトのトラフィックを監視および分析することにより、Webサーバーを保護するのに役立ちます。これはリアルタイムで行われ、正規表現を使用してほとんどの既知のエクスプロイトからの攻撃を検出してブロックします。ModSecurity自体は、限定された保護を提供し、保護を最大化するためにルールセットに依存します。

Open Web Application Security Project(OWASP)コアルールセット(CRS)は、あらゆるWebアプリケーションに基本レベルの保護を提供する一連の一般的な攻撃検出ルールです。ルールセットは無料でオープンソースであり、現在Spider Labsが提供しています。

OWASP CRSは以下を提供します。

  • HTTP保護-HTTPプロトコルおよびローカルに定義された使用ポリシーの違反を検出します。
  • リアルタイムブラックリストルックアップ-サードパーティのIPレピュテーションを利用します。
  • HTTPサービス拒否保護-HTTPフラッディングと遅いHTTP DoS攻撃に対する防御。
  • 一般的なWeb攻撃の保護-一般的なWebアプリケーションのセキュリティ攻撃を検出します。
  • 自動化検出-ボット、クローラー、スキャナー、その他の表面の悪意のあるアクティビティを検出します。
  • ファイルアップロードのAVスキャンとの統合-Webアプリケーションを介してアップロードされた悪意のあるファイルを検出します。
  • 機密データの追跡-クレジットカードの使用状況を追跡し、漏洩をブロックします。
  • トロイの木馬保護-トロイの木馬を検出します。
  • アプリケーションの欠陥の特定-アプリケーションの設定ミスに関するアラート。
  • エラーの検出と非表示-サーバーから送信されたエラーメッセージを偽装します。

取り付け

このガイドでは、Apache 2を実行するCentOS 6にModSecurityおよびOWASPルールセットをインストールする方法を示します。

まず、システムが最新であることを確認する必要があります。

 yum -y update

Apache 2をインストールしていない場合は、ここでインストールしてください。

 yum -y install httpd

ModSecurityを機能させるには、いくつかの依存関係をインストールする必要があります。サーバー構成によっては、これらのパッケージの一部またはすべてがすでにインストールされている場合があります。Yumは、所有していないパッケージをインストールし、パッケージがすでにインストールされているかどうかを通知します。

 yum -y install httpd-devel git gcc make libxml2 pcre-devel libxml2-devel curl-devel

ディレクトリを変更し、ModSecuity Webサイトからソースコードをダウンロードします。現在の安定版は2.8です。

 cd /opt/
 wget https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz

パッケージを抽出し、そのディレクトリに移動します。

 tar xzfv modsecurity-2.8.0.tar.gz 
 cd modsecurity-2.8.0

ソースコードを構成してコンパイルします。

 ./configure
 make
 make install

デフォルトのModSecurity構成とUnicodeマッピングファイルをApacheディレクトリにコピーします。

 cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
 cp unicode.mapping /etc/httpd/conf.d/

ModSecurityを使用するようにApacheを構成します。これを行うには2つの方法があります。

 echo LoadModule security2_module modules/mod_security2.so >> /etc/httpd/conf/httpd.conf

...またはnanoなどのテキストエディタを使用します。

 nano /etc/httpd/conf/httpd.conf

そのファイルの最後に、別の行に次の行を追加します。

 LoadModule security2_module modules/mod_security2.so

これでApacheを起動して、起動時に起動するように構成できます。

 service httpd start
 chkconfig httpd on

このガイドを使用する前にApacheをインストールしていた場合は、再起動するだけです。

 service httpd restart

これで、OWASPコアルールセットをダウンロードできます。

 cd /etc/httpd
 git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

次に、OWASPルールセットを構成します。

 cd modsecurity-crs
 cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf

次に、ルールセットをApache構成に追加する必要があります。繰り返しますが、これには2つの方法があります。

 echo Include modsecurity-crs/modsecurity_crs_10_config.conf >> /etc/httpd/conf/httpd.conf
 echo Include modsecurity-crs/base_rules/*.conf >> /etc/httpd/conf/httpd.conf

...またはテキストエディタで:

 nano /etc/httpd/conf/httpd.conf

別の行のファイルの下部にこれを追加します。

 Include modsecurity-crs/modsecurity_crs_10_config.conf
 Include modsecurity-crs/base_rules/*.conf

Apacheを再起動します。

 service httpd restart

最後に、インストールファイルを削除します。

 yum erase /opt/modsecurity-2.8.0
 yum erase /opt/modsecurity-2.8.0.tar.gz

ModSecurityの使用

デフォルトでは、ModSecurityは検出専用モードで実行されます。つまり、すべてのルール違反がログに記録されますが、アクションは実行されません。これは、Apacheエラーログで生成されたイベントを監視できるように、新規インストールに推奨されます。ログを確認したら、保護モードに移行する前に、ルールセットを変更するか、ルールを無効にするか(下記を参照)を決定することができます。

Apacheエラーログを表示するには:

 cat /var/log/httpd/error_log

ApacheエラーログのModSecurity行は、9つの要素に分かれています。各要素は、イベントがトリガーされた理由に関する情報を提供します。

  • 最初の部分は、どのルールファイルがこのイベントをトリガーしたかを示しています。
  • 2番目の部分は、ルールファイルのどの行でルールが開始するかを示します。
  • 3番目の要素は、トリガーされたルールを示します。
  • 4番目の要素は、ルールのリビジョンを示します。
  • 5番目の要素には、デバッグ用の特別なデータが含まれています。
  • 6番目の要素は、このイベントの重大度のロギング重大度を定義します。
  • 7番目のセクションでは、発生したアクションと発生したフェーズについて説明します。

サーバーの構成によっては、一部の要素がない場合があることに注意してください。

ModSecurityを保護モードに変更するには、テキストエディターでconfファイルを開きます。

 nano /etc/httpd/conf.d/modsecurity.conf

...そして変更:

 SecRuleEngine DetectionOnly

に:

 SecRuleEngine On

ModSecurityの実行中にブロックが発生した場合は、HTTPエラーログでルールを特定する必要があります。「tail」コマンドを使用すると、ログをリアルタイムで監視できます。

 tail -f /var/log/httpd/error_log

ログを見ながら、ブロックを引き起こしたアクションを繰り返します。

ルールセットの変更/ルールIDの無効化

ルールセットの変更は、このチュートリアルの範囲外です。

特定のルールを無効にするには、3番目の要素([id = 200000]など)にあるルールIDを特定し、Apache構成ファイルでそれを無効にします。

 nano /etc/httpd/conf/httpd.conf

...ルールIDを含むファイルの最後に以下を追加します。

<IfModule mod_security2.c>
SecRuleRemoveById 200000
</IfModule>

ModSecurityがWebサイト上のすべてのアクションをブロックしている場合、「コアルールセット」はおそらく「自己完結型」モードになっています。これを「異常検出」に変更する必要があります。これは、異常のみを検出してブロックします。同時に、「自己完結型」オプションを確認し、必要に応じて変更できます。

 nano /etc/httpd/modsecurity-crs/modsecurity_crs_10_config.conf

「検出」を「自己完結型」に変更します。

ログを作成せずにIPがWebアプリケーションファイアウォール(WAF)を通過できるようにModSecurityを構成することもできます。

 SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" phase:1,nolog,allow,ctl:ruleEngine=Off

...またはロギングあり:

 SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" phase:1,nolog,allow,ctl:ruleEngine=DetectionOnly


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。