跳转至

HTTP 基本验证(httpauth 指令)

HTTP 基本验证

通过 “HttpAuth” 命令,您可以管理用户访问受 HTTP 身份验证方法保护的页面的权限,此外还可以控制在phpMyAdmin、wp-admin或wp-login等工具访问页面中启用此附加安全层。
简而言之,这将能够以特定用户名+密码访问,来保护站点的某个特定路径的访问权限。

如果想进一步了解这种身份验证方法,请阅读 维基百科条目:基本访问身份验证.

命令格式:

sudo httpauth <选项>

选项:

  • -add
  • -delete
  • -list
  • -path
  • -whitelist
  • -wp-admin

示例:

# Create user
sudo httpauth -add

# Disable WP Auth
sudo httpauth example.com -wp-admin=off

# Protect a folder/file
sudo httpauth example.com -path=/folder

创建用户

要创建用户和密码以访问受 HTTP 基本验证保护的部分,请使用此命令。

sudo httpauth -add
# 提示:对于无人值守脚本参数
sudo httpauth -add=[user,password]

您还可以创建一个只能访问特定域名的受限用户。

sudo httpauth example.com -add

在您为特定域名创建一个或多个用户后,只有这些用户才能访问此域名
具有全局访问权限的用户将在此站点中不会启用。

删除用户

要删除一个用户请使用此命令:

sudo httpauth -delete
# 提示:对于无人值守脚本参数
sudo httpauth -delete=user

# 从特定域名中移除用户
sudo httpauth example.com -delete

列出任何用户

显示所有人为创建的可访问 HTTP 身份验证的用户列表。

sudo httpauth -list
# 列出特定域名下的用户
sudo httpauth example.com -list

# 列出所有受保护的路径、区域或目录
sudo httpauth example.com -list=protected

# 列出所有白名单 IP
sudo httpauth -whitelist -list

HTTP 基本验证与 WordPress 登录页

默认情况下,初始安装WordPress也会启用 wp-admin 目录的访问保护验证.

尽管我们知道 HTTP 身份验证并非最可靠的安全保护方案,
但之所以对 WordPress 管理部分采用双重身份验证,是因为这类页面总是会受到自动化攻击;
而且HTTP基本验证的方式,对最终用户来说也是上手最简便的方案。

如果您有一个上线了一段时间的 WordPress 站点,不妨看一看服务器上的访问日志,
你肯定能发现一堆访问失败的日志记录。
由于这些日志对应的几乎都是自动抓取整个互联网的人机(自动化机器人),而当它们遇到这种额外保护的情况,就会放弃当下的盗猎行为、寻找下一个目标。

值得一提的是,这种安全措施无法保护您免受复杂攻击,
也无法抵御那些具备相关知识的高手攻击。网络安全是一个非常严肃的问题,
如果您认为您的服务器和网站包含敏感数据或信息,则建议您寻求相关安全专家的帮助。

启用基本身份验证后,WordPress REST API、应用程序密码和 XML-RPC 接口可能无法正常工作。这可能需要进行额外设置。

我们也知道,这种额外的安全措施比较麻烦,可能会让某些用户感到非常气愤(恼),
而若您需要在现有的 WordPress 站点登录页面启用或关闭 HTTP 身份验证,请按照以下步骤操作:

sudo httpauth example.com -wp-admin=off

保护自定义目录或文件

您可以对任何目录或文件设置HTTP身份验证。

sudo httpauth example.com -path=/folder

使用 -path=/ 保护整个网站或域名。

您同时可用 -exact 选项定义URI与特定位置 ( location ) 的精确匹配.

"EXACT" 选项有何作用?

比方说访问 /news

https://example.com/news (匹配)
https://example.com/news/local/our-city (匹配)

若您使用“精确匹配”选项:
https://example.com/news (匹配)
https://example.com/news/local/our-city (不匹配)
# 要保护特定文件,则应使用以下精确选项:
sudo httpauth example.com -path=/folder/file.php -exact

# 支持子目录
sudo httpauth example.com -path=/one/folder/ -subfolder=/one

如果省略 -subfolder 选项来指定 子目录站点 的路径,则将导致意外重定向,尤其是基于 PHP 和 WordPress 的站点。

要从保护列表中移除对目录或文件的保护,使用 -purge 选项:

# 移除特定目录
sudo httpauth example.com -path=/folder -purge

# 移除全部访问验证
sudo httpauth example.com -path=all -purge

使用 -purge 选项时无需使用 -exact 选项,它会直接移除所有匹配的路径。

白名单IP

#whitelist

将IP地址添加到安全列表中,经过HTTP身份验证时可避免要求输入凭据。

sudo httpauth -whitelist

或直接传递IP地址参数: sudo httpauth -whitelist=10.126.196.2

您可以使用逗号作为分隔符传递多个值 sudo httpauth -whitelist=1.1.1.1,2.2.2.2

如您想移除之前添加的IP地址:

sudo httpauth -whitelist -purge