クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

naxsiの導入

nginx用のWeb Application Firewallであるnaxsiを導入してみました。

カスタムrpmを作って、naxsi-coreを入れてみました。
nginx最新版のソースRPMをまずインストール。

rpm -ivh nginx-1.4.1-1.el6.ngx.src.rpm

次に、naxsiのソースを展開。

zcat naxsi-core-0.49.tgz | tar xvf - 

nginxのSPECファイルを編集。

vi nginx.spec

–with-debugがないconfigureの引数に「–add-module=/root/naxsi-core/naxsi_src」を追加します。


./configure \
 --prefix=%{_sysconfdir}/nginx \
 --sbin-path=%{_sbindir}/nginx \
 --conf-path=%{_sysconfdir}/nginx/nginx.conf \
 --error-log-path=%{_localstatedir}/log/nginx/error.log \
 --http-log-path=%{_localstatedir}/log/nginx/access.log \
 --pid-path=%{_localstatedir}/run/nginx.pid \
 --lock-path=%{_localstatedir}/run/nginx.lock \
 --http-client-body-temp-path=%{_localstatedir}/cache/nginx/client_temp \
 --http-proxy-temp-path=%{_localstatedir}/cache/nginx/proxy_temp \
 --http-fastcgi-temp-path=%{_localstatedir}/cache/nginx/fastcgi_temp \
 --http-uwsgi-temp-path=%{_localstatedir}/cache/nginx/uwsgi_temp \
 --http-scgi-temp-path=%{_localstatedir}/cache/nginx/scgi_temp \
 --user=%{nginx_user} \
 --group=%{nginx_group} \
--with-http_spdy_module \
 --with-http_ssl_module \
 --with-http_realip_module \
 --with-http_addition_module \
 --with-http_sub_module \
 --with-http_dav_module \
 --with-http_flv_module \
 --with-http_mp4_module \
--with-http_gunzip_module \
 --with-http_gzip_static_module \
 --with-http_random_index_module \
 --with-http_secure_link_module \
 --with-http_stub_status_module \
 --add-module=/root/naxsi-core/naxsi_src \
 --with-mail \
 --with-mail_ssl_module \
 --with-file-aio \
 --with-ipv6 \
 --with-cc-opt="%{optflags} $(pcre-config --cflags)" \
 $*

rpmbuildをして、生成したrpmをインストール。

naxsi_core.rulesをインクルード。

 vi /etc/nginx/nginx.conf

 

http {
 include /etc/nginx/mime.types;
 include /etc/nginx/naxsi_core.rules;

</pre>
LearningMode; #Enables learning mode
SecRulesEnabled;
#SecRulesDisabled;
DeniedUrl "/RequestDenied";

include "/tmp/naxsi_rules.tmp";

## check rules
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
<pre>
vi /etc/nginx/conf.d/default.conf
</pre>
server {
 listen 80;
 server_name totalsolution.biz;

#charset koi8-r;
 access_log /var/log/nginx/totalsolution.biz.access.log ltsv;
 error_log /var/log/nginx/totalsolution.biz.error.log;

location / {
 include /etc/nginx/test.rules;
<pre>

最後に、nginxを再起動して終了。

error_logに以下のようにnaxsiのログが書き出されれば成功。

</pre>
2013/09/07 08:19:46 [error] 25875#0: *6319 NAXSI_FMT: ip=123.218.123.177&server=xxx.js&learnin
g=1&total_processed=1490&total_blocked=366&zone0=HEADERS&id0=1005&var_name0=cookie
&zone1=HEADERS&id1=1010&var_name1=cookie&zone2=HEADERS&id2=1011&var_name2=cookie&z
one3=HEADERS&id3=1315&var_name3=cookie, client: 123.218.123.177, server: totalsolu
tion.biz, request: "GET /cms/wp-content/plugins/wp-slimstat/wp-slimstat.js HTTP/1.
1", host: "www.totalsolution.biz", referrer: "http://www.totalsolution.biz/cms/wp-
login.php"

コメントは受け付けていません。