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
- 此功能可在 Webinoly 配置文件 禁用
- 您还可以 添加白名单IP地址 选择性地跳过验证
保护自定义目录或文件
您可以对任何目录或文件设置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