GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu16.04でlibmodsecurityとOWASPModSecurityコアルールが設定されたNginx

このチュートリアルでは、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プロフェッショナルです。彼はプログラミングに手を出すことでも知られています。

彼は特定のプロジェクトを終えた後にガイドやハウツーを書く傾向があります。主な理由は、彼の記憶が悪く、同じプロジェクトをもう一度やらなければならない場合に車輪の再発明をしたくないからです。

連絡を取る

作成者のウェブサイト フォローする メール


Ubuntu
  1. Ubuntu16.04にNginxを使用してHTTPGitサーバーをインストールする方法

  2. Ubuntu20.04にNginxを使用してHTTPGitサーバーをインストールする方法

  3. Ubuntu11.10にPHP5とMySQLを使用してNginxをインストールする方法

  1. Ubuntu20.04LTSでNginxを使用してModsecurityをデプロイする方法

  2. Ubuntu20.04LTSにNginxを使用してModsecurityをデプロイする

  3. Ubuntu 20.04にPHPとNginx(LEMP)をインストールしてセットアップする方法

  1. Ubuntu16.04にPostgreSQLとNginxを使用してMattermostをインストールする方法

  2. Ubuntu16.04でNginxとPHP-FPMを使用してWordpressをDocker化する

  3. Ubuntu に Git をインストールしてセットアップするにはどうすればよいですか?