トップ > 技術ナレッジのアーカイブ > 脱 PPAPへの挑戦 EDRを守る三つのセキュリティインフラ構築の実践(1)~WAF編

2022.03.02

脱 PPAPへの挑戦 EDRを守る三つのセキュリティインフラ構築の実践(1)WAF編

#メール #サイバーセキュリティ #フィッシング #スパイウェア #Saas #マルウェア

サイバー攻撃が近年増加傾向にありますが、その中でもメールからの標的型攻撃はメジャーな攻撃で、社員一人一人が気を付けることが重要です。
宛先不明の相手から送信された危険なURLをクリックしてサイバー攻撃が成功する事例は誰でも一度は聞いたことがあるとは思いますが、テクノプロ・デザイン社でもメールセキュリティの対策として、本文を送信した後にパスワードを別送するという方法を行っていました。
この方法は一般的で多くの企業で実施されていますが、この方法は一年前から内閣府情報化推進室の発表で廃止されており、対策方法として不完全なことが取り上げられています。
サイバーセキュリティは年々高度化・激化の一途を辿っており、その時代に合った適切な対策方法を行う必要があります。
本記事ではメールセキュリティの一環としてOSSで組めるセキュリティに特化したサーバ構成の一例を提示させていただきます。

話者紹介

小粥 淳

2019年度新卒でテクノプロ・デザイン社に入社。約4カ月のセキュリティ研修と2カ月OJT期間を経て現在のサイバーセキュリティ業務に配属。 TPTLチームの作業員かつWebアプリケーションやサーバ各種ネットワークの脆弱性診断業務を担当。
趣味は映画観賞、読書

本記事で想定しているケース

メールのやり取りをしている相手とファイルのやり取りをしているケースを想定しています。
自社で用意しているアップローダーのURLを事前の打ち合わせやメールの際に相手に伝えます。相手は貰ったURLからアップローダーにアクセスをしてファイルのアップロードを行いファイルのやり取りをします。

ネットワーク図

構築するネットワークの図です。
攻撃者はFW、IPS・IDS、WAFの三重のセキュリティを通り抜けて仮にマルウェアをアップロードすることができた場合でもダウンロードしたPCのEDRで守ることができます。

: 取引先相手・攻撃者

赤の線はファイルアップローダーに外部のユーザーがファイルをアップロードする動線を指し示しています。外部からファイルのアップロードができるのは アップローダーのURLを教えて貰うか何らかの方法で不正に入手する必要があります。

:セキュリティツール

青の線で囲っているのはセキュリティツールです。本記事で実装を行ったツールとなります。これらのソフトウェアは外部からの不正なIPからのアクセスのブロックや、通信の監視を行います。

:内部のPCやソフトウェア

黄色の線はセキュリティ製品以外の業務で使用されているソフトウェアやPCです。

:セキュリティエンジニア

緑の線は、青の線で囲っているセキュリティソフトの監視を行うセキュリティエンジニアです。セキュリティソフトに何か問題が発生した際にログの収集やインシデント対応行います。

構築サンプル

アップローダー(FileShelter)のインストール

FireShellterはインターネットを介してファイルを簡単に共有できるセルフソフトウェアです。 詳しい説明はこちらをご参照下さい。

注:このソフトには、WT4がシステムにインストールされている必要があります。WT4のインストールについては、こちら を参照してください。

依存ソフトをインストールします。

	  
  1. #sudo apt-get install build-essential autoconf automake libboost-dev libconfig++-dev libzip-dev

ソースからダウンロードしてビルドします。

  1. #git clone https://github.com/epoupon/fileshelter.git fileshelter
  2. #cd fileshelter
  3. #autoreconf -vfi
  4. #mkdir build
  5. #cd build
  6. #../configure --prefix=/usr

注:configureコマンドは、エラーが発生した場合に通知を行いますので、ターミナルに下記のように出力されていることを確認してください。

configureがエラーなく実行されたら、管理者権限でこれらのコマンドを続行してください。

  1. #sudo su
  2. #make
  3. #make install
  4. #useradd --system --group fileshelter
  5. #cp /usr/share/fileshelter/fileshelter.conf /etc/fileshelter.conf
  6. #cp/usr/share/fileshelter/fileshelter.service/lib/systemd/system/fileshelter.service
  7. #mkdir /var/fileshelter
  8. #chown fileshelter:fileshelter /var/fileshelter

最後に、下記のコマンドを入力してアップロードWeb アプリケーションを起動します。

  1. #systemctl enable fileshelter

ローカル上でアクセスする場合には内部IPアドレスを使ってウェブアプリケーションにアクセスすることもできます。例えば、このマシンのIPアドレスが192.168.0.150の場合、以下のようになります。「http://192.168.0.150」でサイトにアクセスすることができます。

このウェブアプリケーションの主な機能は、アップロードされたファイルをリンクで共有することです(以下の図を参照)。このリンクには、ネットワークを介してアクセスすることができます。

このウェブアプリケーションには、有効期間や最大ダウンロード数を設定できるオプションもあります。(以下の図を参照)
Validity period:有効期限
Max downloads:最大ダウンロード数

WAF(modsecurity)

これでアップローダーを作成することができました。次に作成したアプリケーションを守るWAFの設定を行います。

使用するWAF

Apacheのmodsecurityを使用します。そこでまず、Apacheがインストールされていることを確認します。 下記の画像のような出力があれば、Apacheがインストールされています。

次に、modsecurityをインストールします。

  1. #sudo apt-get install libapache2-mod-security2

インストール後、以下のコマンドを入力して、正しくインストールされているかどうかを確認してください。

  1. #sudo service apache2 restart
  2. #sudo apachectl -M | grep security

上記のような行が表示されていれば、続けてください。
これからmodsecurityの設定ファイルを編集して、脅威を検出した場合に、送信者にForbiddenエラーを送信するようにします。 “DetectionOnly "を "On "に置き換えて、保存して終了します。

次に、modsecurityのルールをダウンロードして、Apacheの設定ファイルに追加します。

上記のように、設定ファイルに以下の行を追加します。

  1. #IncludeOptional /usr/share/modsecurity-crs/*.conf
  2. #IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf

その後、Apacheを再起動します。

  1. #sudo service apache2 restart

この時点で、modsecurityはApacheの上で動作しているはずです。modsecurityが正しく設定されているかどうかを確認するには、まずApacheのデフォルトページ(http://localhost, http://127.0.0.1)にアクセスします。その後、悪意のあるコードを入力しようとすると、modsecurityはForbiddenページを返すはずです。
通常のアクセスは以下のようになります

このURL(http://127.0.0.1/index.html?exec=/bin/bash)での悪意あるコードアクセスは以下のようになります。

modsecurityとアップローダー Web アプリケーションの接続

ここでは、WebアプリケーションをApacheにプロキシして、modsecurityによる保護を受けられるようにします。
これはFWでは検出することのできないアプリケーションの攻撃を防ぐためです。
FWはネットワークレベルのセキュリティ対策を行うツールで、IPアドレスの情報やポート番号に対してアクセスを制限します。
そのためポートスキャンなどの外部公開が不要なサービスを狙った攻撃をブロックすることは出来ますが、通信の中身まで検査できず、 正常なHTTP通信(port80)HTTPS通信(port443)への正常な通信を通して行われた攻撃をブロックすることは出来ません。
その点WAFはアクセス元とWebサーバーとの通信を「シグネチャ」と呼ばれる不正な攻撃パターンをまとめた定義ファイルを使用して検査することでWebアプリケーションを守ることができます。
なお、今回使用するWAFはホスト型WAF(ソフトウェア型WAF)を使用しています。
ホスト型WAFは既にあるWebサーバーに直接ソフトウェアをインストールする形態をとっており、他のハードウェアを導入する必要はないため、非常に安価に設定することが可能です。

では、まず、Webアプリケーションのbehind-reverse-proxyの設定ファイルをtrueに変更します。

  1. #sudo nano /etc/fileshelter.conf

次に、Apache用のリバースプロキシ (a2enmod)をインストールします。

  1. #sudo a2enmod proxy
  2. #sudo a2enmod proxy_http
  3. #sudo a2enmod proxy_balancer
  4. #sudo a2enmod lbmethod_byrequests
  5. #sudo systemctl restart apache2

次に、Apacheのデフォルトページを、ウェブアプリケーションに置き換えます。そのためには、Apacheの設定ファイルを以下のように編集します。

  1. #sudo nano /etc/apache2/sites-available/000-default.conf

これでWebアプリケーションには、Apacheへのアクセス方法と同じようにアクセスできるようになりました。最後に、Apacheを再起動して、Webアプリケーションがmodsecurityで保護されたかどうかを確認してください。

  1. #sudo service apache2 restart

攻撃実戦

コマンドインジェクションコード(exec=/bin/bash)を入力すると、Webアプリケーションは応答を返しません。これは、modsecurityが送信者へのアクセスをブロックしたことを意味します。

SQLコード(または'a'='a')を入力すると、WebアプリケーションはForbiddenページを返します。

閉じる