Apache/安全性
外观
< Apache
许多机器人试图破解某些数据库(例如通过 PhpMyAdmin 或 WordPress)。为了防止它们,我们可以利用几个标准。
例如,要禁止查看没有索引文件的目录(例如:.html、.php),请添加代码:Options -Indexes
。
只授权两个 IP 读取目录
<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>
<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
- 相反的做法限制较小。
<Directory /usr/share/phpmyadmin/>
<IfModule mod_authz_core.c>
Require all granted
Require not ip 127.0.0.1
</IfModule>
</Directory>
<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
来只授权两个帐户 toto 和 sasa。
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