跳转到内容

Apache/安全性

来自维基教科书,开放世界中的开放书籍

许多机器人试图破解某些数据库(例如通过 PhpMyAdminWordPress)。为了防止它们,我们可以利用几个标准。

例如,要禁止查看没有索引文件的目录(例如:.html、.php),请添加代码:Options -Indexes

通过来源保护

[编辑 | 编辑源代码]

只授权两个 IP 读取目录

使用 Require[1] 白名单

[编辑 | 编辑源代码]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_authz_core.c>
            <RequireAny>
                Require all denied
                Require ip 127.0.0.1
                Require ip 127.0.0.2
            </RequireAny>
        </IfModule>
    </Directory>

使用 allow 白名单(Apache 2.4 中已过时)

[编辑 | 编辑源代码]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_access_compat.c>
            deny from all
            allow from 127.0.0.1
            allow from 127.0.0.2
        </IfModule>
    </Directory>

如果授权范围与禁止范围有一些地址重叠,最好指定它们的优先级(.htaccess 文件中的行顺序不会改变任何内容)

order allow, deny
先从授权开始,然后开始禁止,以免禁止先前允许的操作。
order deny, allow
相反的做法限制较小。

使用 Require[2] 黑名单

[编辑 | 编辑源代码]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_authz_core.c>
            Require all granted
            Require not ip 127.0.0.1
        </IfModule>
    </Directory>

使用 deny 黑名单(Apache 2.4 中已过时)

[编辑 | 编辑源代码]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_access_compat.c>
            order allow,deny
            allow from all
            deny from 127.0.0.1
        </IfModule>
    </Directory>

通过密码保护

[编辑 | 编辑源代码]

身份验证配置

[编辑 | 编辑源代码]

必须允许在 Apache 设置中修改身份验证参数。

父目录的 AllowOverride 指令必须包含 AuthConfig[3] 选项。

要放在 .htaccess 中的指令是

AuthType basic
普遍采用的身份验证类型,但安全性较差。
AuthName "我的消息"
作为对话框中邀请的文本。
AuthUserFile /etc/apache2/my_passwd
密码文件路径。
Require valid-user
指定需要有效帐户才能访问文件夹。

我们也可以使用 Require user toto sasa 来只授权两个帐户 totosasa

basic 身份验证类型使用未加密的密码。

还存在其他一些更安全的类型,例如 digest,建议与 HTTPS 结合使用。

第一个请求将发送到受保护的目录,并会导致显示对话框,用户应在其中进行身份验证(使用登录名和密码)。

  • 如果密码无效,则会再次显示对话框。
  • 如果有效,则浏览器可以记录它,并且直到下次重新启动之前都不会再次询问。

密码文件

[编辑 | 编辑源代码]

以下命令创建一个名为 的密码文件,其中包含一个用户 toto

htpasswd -c /home/user/www/.htpasswd toto

要添加或修改用户

htpasswd /home/user/www/.htpasswd sasa

然后,使用以下命令告诉 .htaccess .htpasswd 文件的路径

 AuthName "Protected page"
 AuthType Basic
 AuthUserFile "/home/user/www/.htpasswd"
 Require valid-user

参考文献

[编辑 | 编辑源代码]
  1. https://httpd.apache.ac.cn/docs/2.4/en/howto/access.html
  2. https://httpd.apache.ac.cn/docs/2.4/en/upgrading.html
  3. https://httpd.apache.ac.cn/docs/2.2/mod/core.html#allowoverride
华夏公益教科书