suEXEC設定
http://httpd.apache.org/docs-2.0/ja/suexec.html参照。
ユーザが複数居る環境だったらsuEXEC化した方が良いからメモ。
CGIの作ったログファイル消えないって良く言われるのよね。
再コンパイルが必要だから、rpmとかで入れてたらちゃんと抜いておいてね。
$ tar zxvf httpd-2.0.50.tar.gz $ cd httpd-2.0.50 $ ./configure --enable-suexec \ --with-suexec-caller=nobody \ --with-suexec-userdir=public_html \ --with-suexec-docroot=/usr/local/apache2/htdocs \ --with-suexec-logfile=/usr/local/apache2/logs/suexec_log \ --with-suexec-uidmin=500 \ --with-suexec-gidmin=500 $ make $ su # make install
他のオプションは自分で決めてね?
細かい説明に行くわよ。
- --enable-suexec
suEXEC有効化のオプションよ。
これを付けないとそもそも意味が無いわ。
- --with-suexec-caller
Apache2自身を動かすユーザを指定するわよ。
上の例だとnobodyね。
- --with-suexec-userdir
UserDirディレクティブに対してアクセスする場合に必要よ。
たとえば、http://hogehoge/~hoge/ってアクセスね。
UserDirディレクティブに設定したディレクトリ名を指定すれば良いわよ。
たとえば、デフォルトだと「public_html」ね。
- --with-suexec-docroot
こっちはドキュメントルートを指定するわ。
httpd.confと同じようにドキュメントルートを指定してあげてね。
- --with-suexec-logfile
これはsuEXECの動作のログを吐き出す場所をしていするオプションね。
デフォルトで「/usr/local/apache2/logs/」に吐き出されるから、名前とか変えなくてもいいんだったら使わなくてもいいわよ。
- --with-suexec-uidmin
これはsuEXECを有効にするuidの最低値ね。
Fedora Coreだったら500以降がユーザのはずだから、500って指定すれば良いわね。
- --with-suexec-gidmin
こっちはsuEXECを有効にするgidの最低値ね。
こっちも500以降がユーザのgidのはずだから、500でいいわよ。
他にもオプションはあるのだけど、それは./configure --helpで確認してね。
suEXECが動いているかを確認する方法は、Apacheを起動させた後にエラーログを見てみてね。
tail /usr/local/apache2/logs/error_log : : suEXEC mechanism enabled (wrapper: /usr/local/apache2/bin/suexec)
suEXECが動いてることが確認できたら、ちゃんとファイルの権限を確認しておかなきゃ駄目よ?
下にリストを用意しておくから、確認してちょうだい。
- ユーザディレクトリ:755
- public_html:711
- 実行ファイル:701
- ログファイル:600
- ロックフォルダ等:701
検索エンジン対策
http://fuga.jp/~densuke/hiki/hiki.cgi?Apache参照。
Googlebotは通すけど、GoogleBotは弾くわよ。
GoogleBotは某NaverBOTの詐称なの。
SetEnvIf User-Agent "pompos.html" BadRobot nolog SetEnvIf User-Agent "WWWC" BadRobot nolog SetEnvIf User-Agent "WebFetch" BadRobot nolog SetEnvIf User-Agent "htdig" BadRobot nolog SetEnvIf User-Agent "ia_archiver" BadRobot nolog SetEnvIf User-Agent "Openfind" BadRobot nolog SetEnvIf User-Agent "TurnitinBot" BadRobot nolog SetEnvIf User-Agent "dloader" BadRobot nolog SetEnvIf User-Agent "FAST-WebCrawler" BadRobot nolog SetEnvIf User-Agent "Sidewinder" BadRobot nolog SetEnvIf User-Agent "Mercator" BadRobot nolog SetEnvIf User-Agent "BaiDuSpider" BadRobot nolog SetEnvIf User-Agent "WISEnutbot" BadRobot nolog SetEnvIf User-Agent "mogimogi" BadRobot nolog SetEnvIf User-Agent "Rumours-Agent" BadRobot nolog SetEnvIf User-Agent "Openbot" BadRobot nolog SetEnvIf User-Agent "Scooter" BadRobot nolog SetEnvIf User-Agent "SideWinder" BadRobot nolog SetEnvIf User-Agent "CyberSpider" BadRobot nolog SetEnvIf User-Agent "Gaisbot" BadRobot nolog SetEnvIf User-Agent "InternetLinkAgent" BadRobot nolog SetEnvIf User-Agent "slurp@inktomi.com" BadRobot nolog SetEnvIf User-Agent "NPBot" BadRobot nolog SetEnvIf User-Agent "searchhippo" BadRobot nolog SetEnvIf User-Agent "grub-client" BadRobot nolog SetEnvIf User-Agent "MSNBOT" BadRobot nolog SetEnvIf User-Agent "www.kokotoi.org" BadRobot nolog SetEnvIf User-Agent "Tkensaku" BadRobot nolog SetEnvIf User-Agent "HenryTheMiragoRobot" BadRobot nolog SetEnvIf User-Agent "GoogleBot" BadRobot nolog Deny from env=BadRobot CustomLog logs/access.log combined env=!nolog CustomLog logs/badrobot.log combined env=BadRobbot
画像直リン対策
画像への直リンは大嫌いなので禁止してみる。
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://自分のアドレス/.*$ [NC] RewriteRule .*?.gif$ - [F] RewriteRule .*?.png$ - [F] RewriteRule .*?.jpg$ - [F]
mod_rewriteが入ってなかったら画像フォルダに.htaccessを置いておいて、リファラーを見て対応できるわよ。
リファラー取れないブラウザはちゃんとした経由でアクセスしてても見えないけどね。
SetEnvIf REFERER "http://以降のアドレス" Chris Order Deny,Allow Deny from all Allow from env=Chris
ワーム対策編
ワームのログや画像のログが邪魔だから、ロギングしないように調整するわね。
#画像とスタイルシートをログに出力しない SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)$" nolog #ワームはworm.logに記録 SetEnvIf Request_URI "default.ida" worm nolog SetEnvIf Request_URI "root.exe" worm nolog SetEnvIf Request_URI "cmd.exe" worm nolog SetEnvIf Request_URI "Admin.dll" worm nolog SetEnvIf Request_URI "mem_bin" worm nolog SetEnvIf Request_URI "vti_bin" worm nolog SetEnvIf Request_URI "msadc" worm nolog SetEnvIf Request_URI "MSADC" worm nolog SetEnvIf Request_URI "scripts" worm nolog #ローカルからのアクセスは記録しない SetEnvIf Remote_Addr 192.168.12. nolog SetEnvIf Remote_Addr 127.0.0.1 nolog #ログの出力先 CustomLog logs/worm.log common env=worm CustomLog logs/access.log combined env=!nolog