user-key's top pageへ site top pageへ

apache memo (忘れないためのメモとも言う(^^;)

お問い合わせ先:(C)

各ユーザーさんがCGIを使えるように正規表現を使って設定する。

最初は、

<Directory /home/*/public_html>Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Options
の記述をしていたので、ユーザーさんで.htaccessで記載してもらおうと思ったんですが、 わりかし危なそうなんで、ScriptAliasを使って設定すれば良いと思ったんだけど、ユーザーの数だけ書く必要が有りめんどい(^^;ので

ScriptAliasMatch ^/~(.*)/cgi-bin/(.*) /home/$1/public_html/cgi-bin/$2
と正規表現で記載して、一行で済ました。
これで、
/home/ユーザー名/cgi-bin/ディレクトリに入れておいたCGIを
~ユーザー名/cgi-bin/置いておいた.cgiで使用できます。

nimdaやcode red等のアタックログやproxy探しを別のlogファイルに記録する。

少しはマシになるかと思っていたんですが、相変わらずnimdaやcode redは未だに来るし、外部から使えるproxyが無いかを探しているログの確認が面倒になって来たんで別のlogファイルに記録するように設定する。

webを漁っていると、


SetEnvIf Request_URI "default\.ida" worm
SetEnvIf Request_URI "cmd\.exe" worm
SetEnvIf Request_URI "root\.exe" worm

CustomLog /var/log/apache/access.log combined env=!worm
CustomLog /var/log/apache/worm.log combined env=worm

とSetEnvIfを使ってRequest_URIに対象の文字列が有るかどうかを調べて環境変数にセットしてログに吐きだす時に環境変数の有無でログを分けば良いと判った。

しかし、その書き方では、

って、事で


SetEnvIfNoCase Request_URI "\.(exe|ida)($|\?)" attack_log
SetEnvIfNoCase Request_URI "http://www\.(intel)|(yahoo)|(s3)|(ebay)\.com" attack_log
CustomLog /var/log/httpd/access_log combined env=!attack_log
CustomLog /var/log/httpd/attack_log combined env=attack_log

とした。しかし、たまにCORD REDのログがaccess_logに残ってしまう。なじぇ(?_?;)

自宅のローカルからのアクセスログは別のlogファイルに保存する。

アタックのログは別ファイルにしたので思ったより確認しやすくなったんですが、テストの為ローカルからのマシンからのアクセスログが目障りになって来たのでこれもaccess.logと別ファイルにする。

最初は、


SetEnvIfNoCase Request_URI "\.(exe|ida)($|\?)" attack_log
SetEnvIfNoCase Request_URI "http://www\.(intel)|(yahoo)|(s3)|(ebay)\.com" attack_log
SetEnvIf Remote_Addr "192\.168\.1\.[0-9]+" local_log
CustomLog /var/log/httpd/access_log combined env=!attack_log env=!local_log
CustomLog /var/log/httpd/local_log combined env=local_log
下線部を追加すれば、良いかぁとか思ったんだけど、`CustomLog'に`env='は複数記述出来ないようで(考えてみればandやorの記述も要るしなぁ)って事で、

SetEnvIfNoCase Request_URI "\.(exe|ida)($|\?)" attack_log no_access_log
SetEnvIfNoCase Request_URI "http://www\.(intel)|(yahoo)|(s3)|(ebay)\.com" attack_log no_access_log
SetEnvIf Remote_Addr "192\.168\.1\.[0-9]+" local_log no_access_log

CustomLog /var/log/httpd/access_log combined env=!no_access_log
CustomLog /var/log/httpd/attack_log combined env=attack_log
CustomLog /var/log/httpd/local_log combined env=local_log

とSetEnvIf側に`no_access_log'を追記し、access.logのは`no_access_log'環境変数がセットされない時にした。