ModSecとも呼ばれるModSecurityは、ApacheWebサーバー用の無料のオープンソースWebアプリケーションファイアウォールです。 ModSecurityは、SQLインジェクション、XSS、トロイの木馬、ボット、セッションキャプチャ/ハイジャックなど、さまざまな種類の攻撃からWebサーバーを保護するのに役立つApacheモジュールです。 ModSecurityは、リアルタイムのWeb監視、ロギング、およびアクセス制御を備えた強力なルールセットを提供します。
このチュートリアルでは、Ubuntu18.04にApacheを使用してModSecurityをインストールおよび構成する方法を示します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の新しいUbuntu18.04VPS。
- サーバーに構成されている静的IPアドレス。
ステップ1–Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu18.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 18.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–LAMPスタックをインストールする
まず、サーバーにLAMPスタックをインストールする必要があります。次のコマンドを実行してインストールできます:
apt-get install apache2 mariadb-server php7.2-mysql php7.2 libapache2-mod-php7.2 unzip git -y
LAMPをインストールした後、Apacheサービスを開始し、次のコマンドを使用してシステムの再起動後にサービスを開始できるようにします。
systemctl start apache2 systemctl enable apache2
この時点で、ApacheWebサーバーがサーバーにインストールされて実行されています。
ステップ3–ModSecurityをインストールする
apt-get install libapache2-mod-security2 -y
インストールが完了したら、Apacheサービスを再起動して変更を適用します。
systemctl restart apache2
次に、次のコマンドを実行して、モジュールがロードされているかどうかを確認することもできます。
apachectl -M | grep security
次の出力が得られるはずです:
security2_module (shared)
ステップ4–ModSecurityを構成する
デフォルトで設定されているセキュリティルールはないため、最初に有効にする必要があります。これを行うには、ModSecurityのデフォルト構成ファイルの名前を/etc/modsecurity/modsecurity.confに変更します-/etc/modsecurity/modsecurity.confに推奨されます。
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
次に、お好みのテキストエディタを使用してファイルを編集します:
nano /etc/modsecurity/modsecurity.conf
次の行を見つけます:
SecRuleEngine DetectionOnly
次のように置き換えます:
SecRuleEngine On
終了したら、ファイルを保存して閉じます。次に、変更を有効にするためにApacheサービスを再起動します。
systemctl restart apache2
ステップ5–ModSecurityコアルールをダウンロードして構成する
ModSecurityのデフォルトのルールセットは/usr/ share / modsecurity-crsディレクトリ内にありますが、GitHubから新しいルールセットをダウンロードすることをお勧めします。
まず、次のコマンドで古いルールを削除します。
rm -rf /usr/share/modsecurity-crs
次に、次のコマンドを使用して最新のルールセットをダウンロードします。
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
次に、apache構成でこのルールセットを有効にする必要があります。ファイル/etc/apache2/mods-enabled/security2.confを編集することで有効にできます:
nano /etc/apache2/mods-enabled/security2.conf
「」
の行の上に次の行を追加しますIncludeOptional "/usr/share/modsecurity-crs/*.conf IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf
ファイルを保存して閉じます。次に、Apacheサービスを再起動し、Apacheヘッダーモジュールが変更を実装できるようにします。
a2enmod headers systemctl restart apache2
この時点で、ModSecurityはApacheWebサーバーと連携するように構成されています。
ステップ6–ModSecurityのテスト
ModSecurityを構成した後、Webブラウザーで悪意のあるスクリプトを実行して、ModSecurityルールがトリガーされるかどうかを確認できます。
Webブラウザーを開き、URL http://your-server-ip/index.html?exec=/bin/bashを入力します 。次のページに禁止されたエラーメッセージが表示されます。
シミュレートされたXSS攻撃から保護するためのModSecurityのルールをテストするには、URL http:// your-server-ip /?q =”> にアクセスします。 Webブラウザから。次の画面が表示されます。
Nessusスキャンに対してModSecurityのルールをテストするには、以下に示すように、Nessusスキャナーでcurlコマンドを使用して、ApacheサーバーにHTTPリクエストを送信します。
curl -i http://your-server-ip -A Nessus
ModSecurityがユーザーエージェントをNessusスキャンとして識別したため、403Forbidden応答が返されるはずです。
HTTP/1.1 403 Forbidden Date: Sat, 21 Dec 2019 04:17:24 GMT Server: Apache/2.4.29 (Ubuntu) Content-Length: 278 Content-Type: text/html; charset=iso-8859-1
ステップ7–ModSecurityから特定のドメインを除外する
場合によっては、特定のドメインをModSecurity保護から除外する必要があります。特定のドメインのModSecurityを無効にするには、特定のドメインのApache仮想ホスト構成ファイルを開きます。
nano /etc/apache2/site-enabled/your-domain.conf
<IfModule security2_module> SecRuleEngine Off </IfModule>
ファイルを保存して閉じます。次に、Apacheサービスを再起動して変更を適用します。
systemctl restart apache2
結論
悪意のある攻撃からApacheWebサーバーを保護するためにModSecurityをインストールおよび構成する方法を確認しました。詳細については、ModSecurityのModSecurityドキュメントをご覧ください。