/ wwwルートを.htaccess
および.htpasswd
ファイルを使用してパスワードで保護していますが、無効な認証試行にログインできないか疑問に思っていました。私が最初に行ったのは、提供されたパスワードを含めて、成功した試行と無効な試行の両方が/var/log/Apache2/error_log
にログインすることでしたが、ユーザー名だけがこのファイルにログインしているようです。
私のサーバーはApache 2.2.21
でosx 10.7.4
を実行しています。
私はウェブを検索して、これを達成する方法についての良い説明に出くわしました。
まず.htaccess
ファイル:
# script that will store invalid login attempts
ErrorDocument 401 /logging.php
AuthName "My Password Protected Site"
AuthUserFile /<FULLPATH>/.htpasswd
AuthType Basic
Require valid-user
# Set REMOTE_USER env variable on 401 ErrorDocument
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} ^401$
RewriteRule .* - [E=REMOTE_USER:%{ENV:REDIRECT_REMOTE_USER}]
次に、ログを記録する実際のスクリプト:
if (isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])):
$fp = fopen(MYLOGFILE, 'a+');
$password = $_SERVER['PHP_AUTH_PW'];
$username = $_SERVER['PHP_AUTH_USER'];
$time = date('y-m-d/H:i:s');
$request = $_SERVER['REDIRECT_URL'];
fwrite($fp, $time . "\t" . $request . "\t" . $username . "/" . $password . "\r\n");
fclose($fp);
endif;
ob_start();
header("HTTP/1.1 401 Authorization Required",1);
header("Status: 401 Authorization Required",1);
echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head><title>401 Authorization Required</title></head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you are authorized to
access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn\'t understand how to supply
the credentials required . </p>';
exit();
上記は問題なく機能し、無効なユーザー名とパスワードはすべて指定されたログファイルに保存されます。以下の例は機能しませんでしたが、続行方法についていくつかのアイデアが得られました。
出力ファイルの各行には、次のようなものが含まれます。
13-01-01/12:12:16 - /www/ - username/password
なぜこれをしたいのですか? mriconが指摘したように、パスワードをクリアテキストで記録することは、デバッグのためであっても、あまりお勧めできません。
mod_security
は、HTTPヘッダーをログに記録することにより、好みに合わせて使用できます。ただし、パスワードはブラウザによってクリアテキストで送信されないため、Base64でエンコードされたシーケンスをデコードする必要があります。
ディレクティブSecAuditLog
およびSecAuditLogParts
here を参照してください。
おそらくこれはあなたの目標により適しています: ブルートフォース攻撃からHTTP認証を保護する
私のApache2インストールには、失敗した試行に関するログメッセージがあります。
access to / failed, reason: verification of user id 'qwdsad' not configured
Fail2banをインストールして、ログからこれらのメッセージをgrepし、それを防ぐために何かをすることができます。