我正在尝试使用 RequireAny 来允许从某个 IP 或某个用户名访问站点。但是,当我尝试运行 apache 时,出现以下错误:
Invalid command '<RequireAny', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
Run Code Online (Sandbox Code Playgroud)
我的带有身份验证的 apache 文件部分如下所示:
<Directory /var/www/web/>
Options Indexes FollowSymLinks
AllowOverride AuthConfig FileInfo Options
AcceptPathInfo On
AuthName "Protected Site"
AuthType Basic
AuthBasicProvider file
AuthUserFile /etc/apache2/.htpasswd
<RequireAny>
Require user dev
Require ip 71.198.111.188
</RequireAny>
#Order allow,deny
#allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
为什么在这种情况下使用 RequireAny 时会出现错误?
出于安全原因,应将 Web 应用程序的身份验证迁移到 SSL 客户端证书。应该可以使用用户名/密码或 SSL 登录。此外,应允许来自内网的用户无需额外身份验证即可使用该应用程序。
我们尝试根据官方文档实现这个场景,但是没有成功。
这是我们当前的配置
<Directory /opt/app/system/html>
RedirectMatch permanent ^/$ /exec/login.pl
Options -Indexes +FollowSymLinks
SSLVerifyClient optional
SSLVerifyDepth 2
SSLRequire %{SSL_CLIENT_I_DN_O} eq "Company_O"
SSLOptions +FakeBasicAuth
Satisfy any
AuthType Basic
AuthName "Zugriffsschutz"
AuthBasicProvider file
AuthUserFile /etc/apache2/htaccess/iapp.passwd
require valid-user
Order allow,deny
Allow from 10.20.0.0/255.255.0.0
Allow from 10.144.100
</Directory>
Run Code Online (Sandbox Code Playgroud)
使用此配置,甚至不需要客户端证书。如果我们删除基本身份验证配置,则 SSL 客户端身份验证运行良好。
我在 Linux 服务器上的 Apache 安装中配置了mod-auth-token。
我已经将它配置为在从服务器下载时启用访问文件的安全性。(根据其网站上给出的)。
阿帕奇配置:
ScriptAlias /downloads/ /usr/local/download/
<Location /downloads/>
AuthTokenSecret "SECURESTR"
AuthTokenPrefix /downloads/
AuthTokenTimeout 86400
</Location>
Run Code Online (Sandbox Code Playgroud)
我已经通过简单的java程序生成了用于从服务器下载文件的URL(与此处给出的示例相同)。
我有以下 URL 来访问文件
http://download.mysite.com/downloads/9fa653c32af806ba6f43d1a1fb73bfd0/5370c3b3/abc.zip
文件abc.zip
位于/usr/local/download/
文件夹。
当我尝试访问/下载此文件时,出现以下异常
[Tue May 13 02:07:28 2014] [error] (8)Exec format error: exec of '/usr/local/download/abc.zip' failed
[Tue May 13 02:07:28 2014] [error] Premature end of script headers: abc.zip
Run Code Online (Sandbox Code Playgroud)
我不知道是什么问题。有人知道如何解决这个问题吗?
我希望/htdocs/reserved/
仅允许从 192.168.1.193 到 192.168.1.254 (.193 --> .254) 的 IP 地址访问目录。
我已经在以下代码中编写了此代码httpd.conf
:
<Directory /htdocs/reserved/>
Order Deny, Allow
Deny from all
Allow from 192.168.1.193/254
</Directory>
Run Code Online (Sandbox Code Playgroud)
停止后,Apache 不会重新启动并引发此异常:
名为 Apache 的服务报如下错误:指定的网络掩码无效。
问题似乎是面具192.168.1.193/254
。
我也试过:
<Directory /htdocs/reserved/>
Order Deny, Allow
Deny from all
Allow from 192.168.1.193 192.168.1.254
</Directory>
Run Code Online (Sandbox Code Playgroud)
有用!apache 启动,但我不确定是否允许范围内的所有 IP 地址访问目录,或者只允许 192.168.1.193 和 192.168.1.254。
官方文档缺乏明确的信息(或者我太愚蠢而无法理解)。
问题是:允许 IP 地址范围在目录中访问的正确方法是什么?
旁注:我只使用了私人范围作为例子。
非常感谢并为我的英语感到抱歉。
我在 Ubuntu 服务器 14.04 上全新安装的 Apache 2.4 上安装了 CGI 脚本。如果对我来说配置文件没问题,Apache也会继续回复403 Forbidden。CGI 是 Monitorix 前端,一个用 Perl 编写的系统监控工具。
配置文件/etc/apache2/conf-enabled/monitorix.conf
是:
Alias /monitorix /var/lib/monitorix/www
ScriptAlias /monitorix-cgi /var/lib/monitorix/www/cgi
<Directory /var/lib/monitorix/www/cgi/>
DirectoryIndex monitorix.cgi
Options ExecCGI
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Allow from all
</IfModule>
</Directory>
Run Code Online (Sandbox Code Playgroud)
在所有文件/var/lib/monitorix/www
和/var/lib/monitorix/www/cgi
对所有至少读取权限。每次我尝试从 URL 访问时/monitorix
,在我的 Apache 日志中我都会看到以下几行:
[Mon Sep 01 06:57:52.995680 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58879] AH01630: client …
Run Code Online (Sandbox Code Playgroud)