このチュートリアルでは、Modsecurity 2.9と混同しないようにlibmodsecurity(Modsecurity 3.x)を使用して最新バージョンのNginxをコンパイルする方法を示します。また、OWASP ModSecurityコアルールセット(CRS)も統合します。
Libmodsecurityは、パフォーマンスと安定性を向上させるModSecurityの主要な書き直しです。 Modsecurity 2.9.xはさまざまなプラットフォームに提供されていましたが、Apacheを使用したデプロイと他のプラットフォームを使用したデプロイでは、パフォーマンスを犠牲にしてさまざまなサードパーティの依存関係が必要でした。 Libmodsecurityは、ゼロから書き直すことですべてを変えます。 Libmodsecurityの詳細については、こちらをご覧ください。
このガイドは、Ubuntu16.0464ビットの新しい更新されたインスタンスがすでにあることを前提としています。
1。前提条件をインストールする
前提条件をインストールする
apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev
2。 ModSecurityをダウンロード
Git clone Modsecurity、checkout and build libmodsecurity
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
make
make install
Modsecurity-nginxコネクタのクローンを作成します
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
これで、Modsecurity-nginxコネクタを含む次のディレクトリが作成されます
/opt/ModSecurity-nginx
3。 Nginxをダウンロード
最新のNginx安定ソースをダウンロード
http://nginx.org/en/download.htmlにアクセスして、Nginxの最新の安定バージョンへのリンクを取得します。この記事の執筆時点で、最新の安定バージョンはnginx-1.12.0.tar.gzでした。特定のバージョンに合わせて、以下の手順を調整してください。ダウンロードして抽出
cd /opt
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
4。 Nginxの構成とインストール
Modsecurity-nginxコネクタを使用してNginxを構成してインストールします
./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx
make
make install
以前にダウンロードしたModSecurityソースコードには、いくつかの推奨設定を含むサンプルmodsecurity.confファイルが含まれています。このファイルをNginx構成ファイルのあるフォルダーにコピーします
cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
/ usr / local / nginx / sbin/nginxから/bin/ nginx
へのシンボリックリンクを作成しますln -s /usr/local/nginx/sbin/nginx /bin/nginx
次のディレクトリを作成します:
mkdir /usr/local/nginx/conf/sites-available
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx
/ usr / local / nginx / conf / ssl / etc / nginx / ssl
からのシンボリックリンクを作成しますln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl
conf/nginx.confファイルのバックアップコピーを作成します
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak
/usr/local/nginx/conf/nginx.confファイルを構成します
vi /usr/local/nginx/conf/nginx.conf
「server{」で始まり、最後から2番目の閉じ中括弧「}」で終わるすべてのエントリを見つけて削除します。つまり、最後の中括弧はそのままにしておきます。
最後の中括弧の真上に、以下を挿入します。これにより、Nginxは「/ usr / local / nginx / conf/sites-enabled」ディレクトリでサイト構成を検索するように指示されます
include /usr/local/nginx/conf/sites-enabled/*;
したがって、ファイルの終わりは次のようになります(終了}が存在することを確認してください):
include /usr/local/nginx/conf/sites-enabled/*;
}
無効になっている場合は「#」プレフィックスを削除して「user」ディレクティブを有効にし、デフォルトの「nobody」ではなくユーザー「www-data」に設定されていることを確認して、次のようにします。
user www-data;
ファイルを保存します。
nginxサービスを管理するためのJasonGiedyminのNginxinitスクリプトをダウンロードし、サービスとして構成します
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults
このスクリプトは、Nginxサービスを管理するための次のオプションを提供します。
# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy
5。 OWASPModSecuirtyコアルールセットをインストールする
現在のバージョンのOWASPルールセットと構成をNginxに複製してコピーします
cd /opt/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs/
cp -R rules/ /usr/local/nginx/conf/
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf
OWASPModSecuirtyコアルールセットを使用してNginxを構成する
/usr/local/nginx/conf/modsecurity.conf
を編集しますvi /usr/local/nginx/conf/modsecurity.conf
ファイルの最後に、以下を貼り付けます。
#Load OWASP Config
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350
Nginx modsecurity.confファイルまたは個々のサーバーconfファイルで、サーバーブロックまたはロケーションブロックのいずれかに次のように入力します。以下の例は、サーバーブロックとロケーションブロックの両方にエントリを追加する組み合わせを示しています。
server {
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}
Nginx構成をテストする
service nginx configtest
エラーがない場合は、Nginxをリロードまたは再起動します
service nginx reload
これで、ModSecurityイベントの/var/log/modsec_audit.logを表示できます
tail -f /var/log/modsec_audit.log
満足している場合は、/ usr / local / nginx / conf / modsecurity.confファイルを編集し、以下のように「SecRuleEngine」を「DetectionOnly」から「On」に設定します
SecRuleEngine On
これでこのガイドは終わりです。
Dino Edwardsは、連邦、州、および民間部門で20年以上の経験を持つITプロフェッショナルです。彼はプログラミングに手を出すことでも知られています。
彼は特定のプロジェクトを終えた後にガイドやハウツーを書く傾向があります。主な理由は、彼の記憶が悪く、同じプロジェクトをもう一度やらなければならない場合に車輪の再発明をしたくないからです。
連絡を取る
作成者のウェブサイト フォローする メール