记录无效的登录尝试——htpasswd

记录无效的登录尝试——htpasswd

.htaccess我使用and文件对 /www 根.htpasswd目录进行了密码保护,现在我想知道是否有可能登录无效的身份验证尝试。我的第一个想法是,成功和无效的尝试(包括提供的密码)都会被登录,/var/log/apache2/error_log但似乎只有用户名被登录到这个文件中。

我的服务器正在apache 2.2.21运行osx 10.7.4

答案1

你为什么要这样做?正如 mricon 所指出的,强烈不建议以明文形式记录密码,即使是为了调试。

mod_security可以通过记录 HTTP 标头以符合您的意愿的方式使用。但是,浏览器不会以明文形式传输密码,因此您必须解码 Base64 编码序列。

参见指令SecAuditLogSecAuditLogParts 这里

也许这更适合您的目标:保护 HTTP Auth 免受暴力攻击

答案2

我在网上搜索并偶然发现了关于如何实现这一目标的很好的解释。

首先是.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

记录所有 .htaccess/.htpasswd 登录

答案3

我的 apache2 安装有关于失败尝试的此类日志消息:

 access to / failed, reason: verification of user id 'qwdsad' not configured

您可以安装 fail2ban 来从日志中抓取这些消息并采取一些措施来阻止它。

相关内容