■セキュリティ■パスワード制限についてはこちら 特定のAgentだけを拒否するには
セキュリティと言っても,OSを約束どおり(サーバPCの設定を参照)インストールして,Apacheを使っているなら,問題ないように思います.
しかし,サーバなので,全ての人からアクセスできるようにしないといけません.じゃあ何をどうするか?
サーバのセキュリティとは,外部からの操作でサーバを勝手に動作させないための対策です.これはサーバに限ったことではありませんが...
考え付く限りの手段で対抗する気構えが必要です.
そうしないと,自分のPCが原因でインターネット網を麻痺させてしまう事態を招くかもしれません.そうなったら知らなかったでは済まされません.
最善の対策は一度でもそういう行為を見つけたら,そのIPアドレスでサーバにアクセスできない設定を追加することです.
これはApacheで可能です.
■今までに被害にあったか?
私のサーバでは被害はまだありませんが,被害を受けてからでは遅すぎます.危険な行為を繰り返しているIPアドレスを接続拒否しましょう.
■どのようなIPアドレスを拒否対象とするか?
いうまでもなく,コンテンツ以外のファイルにアクセスしているIPアドレスです.
しかし,最近はNIMDAやCODEREDといったウィルス感染IISサーバからのアタックが非常に多く,本人の意思と関係なく進入してくるものがあります.
しかし,不正アタックには変わりないので,とにかく私は拒否せざるを得ません.
エラーログを頻繁にチェックし,同じ行為を行ってくるIPアドレスは固定アドレスの可能性が大きいですが,一度やってきて以後やってこない
というのは固定アドレスじゃない可能性があります.
そういう固定アドレスじゃないIPアドレスを拒否してしまうと,善良なPCに,たまたまそのIPアドレスが割り振られた時,
私のサーバにアクセスできないという事になります.
今のところその可能性があるプロバイダはK-OPTICOMとYAHOO-BBです.
私もK-OPTICOMなので,再接続時に拒否したIPアドレスに当たるかもしれませんが....
2003.03.28追記

今月に入って,東京のBフレッツのニフティでのCodeRed-2攻撃が異常に(半端じゃなくほぼ1日中といった感じです)多くなり,現在接続拒否中.
依然として収束の様子が見られません.
■NIMDAとCODEREDアタックの見分け方
NIMDAやCODEREDはそのアタックの仕方が独特なので判別が非常に簡単です.
まずNIMDAの場合
"GET /scripts/root.exe?/c+dir HTTP/1.0" 403 288 "-" "-"
"GET /MSADC/root.exe?/c+dir HTTP/1.0" 403 286 "-" "-"
"GET /c/winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 296 "-" "-"
"GET /d/winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 296 "-" "-"
"GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 310 "-" "-"
"GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 327 "-" "-"
"GET /_mem_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 327 "-" "-"
"GET /msadc/..%255c../..%255c../..%255c/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 343 "-" "-"
"GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 309 "-" "-"
"GET /scripts/..%c0%2f../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 305 "-" "-"
"GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 309 "-" "-"
"GET /scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 309 "-" "-"
"GET /scripts/..%%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 400 289 "-" "-"
"GET /scripts/..%%35c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 400 289 "-" "-"
"GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 310 "-" "-"
"GET /scripts/..%252f../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 403 310 "-" "-"

このように一度の攻撃に16パターンあるのが特徴です.とにかくcmd.exeだけを探します.フォルダwinntを狙い撃ちです.
次にCODEREDの場合
"GET /default.ida?NN・・・(途中省略,NNNが延々と続きますので)・・・NNN
%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3
%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0" 400 326 "-" "-"

この"N"が延々と続くのが特徴です.
CODEREDの場合,アクセスログではNNNNNNNでわかりますが,エラーログではClient sent malformed Host headerと記録されます.
したがって,これさえ解れば,エラーログだけのチェックでも判断できます.
2003.03.28追記

Code Red-2 では,NNNNNNがXXXXXXXになっています.
エラーログには File does not exist: ○:/local/apache/htdocs/default.ida と記録されます.
■それ以外のアタック
これはある程度Apacheのコード番号の知識が必要です.まず200番台と300番台は目くじら立てる必要はないと思います.
問題は400番台です.また圧倒的に多いエラー時の番号は404です.(番号一覧はおまけページにあります
私の場合,アクセスログを見るエディターで404を強調表示するようにしています.(その他にも強調表示設定がありますが...)
そうすれば,それがNIMDAなのかCODEREDなのかがよく解ります.
それ以外のアタックとは,単にURL間違いでファイルを見つけられなかったというエラーを表示しているもの.
これはアタックではありません.が,見極める必要があります.
他には,わけのわからないスクリプトを実行しようとして失敗しているやつ.
自分のサーバに,そのようなスクリプトがない場合はアタックでしょう.たぶん.
■IPアドレスの拒否方法
Apacheのhttpd.confにDenyを追記します.
<Directory "X:/local/Apache/htdocs">
 Options Indexes FollowSymLinks MultiViews
 AllowOverride None
 Order allow,deny
 Allow from all
 Deny from 66.150.40.76
 Deny from crawl1.googlebot.com
</Directory>
このようにサーバルートのディレクトリ指定の中にDenyを複数行書き込みます.(例はいずれもサーチロボットです)
Windows版のApacheの場合は,拒否が許可より優先されるようです.したがってAllow from allは全く無視されています.
実際これで拒否できていますので,間違いはないと思います.
私の場合,毎日前日のエラーログをみて,Denyを追記しています.
その時にWhoisなどで,どこからの接続なのかを確認しておくことをお勧めします.知り合いかもしれませんからね.
でもまあ,たいていは中国,韓国,台湾です.CODEREDはヨーロッパもあります.
■メッセンジャサービスのスパム
最近流行っているらしいです.この迷惑なスパム.
突然サーバのディスプレイにポップアップが現れ,メッセージを表示するやつです.ほとんどがいかがわしいサイトへのお誘いです.
Windows2000Proの場合,なぜかこの機能がデフォルトでONになっています.
MSがセキュリティが甘いというのは,こういうサービスを無条件に開放しているところにあると思います.
で,自宅サーバにスパムが現れるようなら,このサービスを停止させます.
このように,スタートアップを無効にして,サービスを停止します.
コントロールパネル→管理ツール→サービスのmessengerのプロパティです.
特定のAgentを拒否するには【2004.08.07追記】
ある特定のAgentだけを拒否するには .htaccess を利用します.
ある特定のAgentとは,サーバに不必要に負荷を掛けてくる WWWC とかの更新チェッカーです.
これは1件2件ならともかく,数件がいっせいにやってくるとかなりの負荷になるようです.実害がないなら拒否の必要はないでしょうが,最近ログが
拾いきれないという障害が出始めたので,申し訳ないですがサーバを守るために拒否することにしました.
サーバPCをUPGRADEすればいいのでしょうが,その気は全くないので拒否を選択しました.
SetEnvIf User-Agent "WWWC" deny_ua
Order allow,deny
Allow from all
Deny from env=deny_ua

これを拒否するディレクトリの .htaccess に記入します.
しくみを理解すれば,複数のAgentを拒否することも簡単にできます.
.htaccessについては解説サイトがたくさんあるので,ここでの解説は省略します.

WWWCをお使いの方はむやみに複数ページを自宅サーバに対してチェックしないほうがいいかもしれません.
↑UP↑