在宝塔上有对目录加密的功能,但在appnode上只有对整站加密的功能。需要修改源文才能单独加密admin目录。

或许有人说修改admin目录名称一样安全,但我随便搜了下,有人发现typecho修改了admin目录名称后反而出现了漏洞,虽然有办法解决,但更麻烦了。
因此我决定用nginx的ngx_http_auth_basic_module模块实现让用户只有输入正确的用户名密码才允许访问admin目录,来加密typecho的登录目录。

这个文章算是appnode加密typecho的admin目录全网首发吧。

appnode安装完成后自带htpasswd工具,因此可以直接使用

htpasswd -c /data/basic/sites/vhost/conf/passwd admin
New password: 
Re-type new password: 
Adding password for user admin

来创建密码文件。
其中
/data/basic/sites/vhost/conf/passwd内的conf为appnode为每个网站(比如这里的vhost)单独创建的conf文件存放位置,所以我也把密码文件放这里了。
admin为用户名,可以自己设置。
New password为登录密码,需要输入两次,建议不要和typecho的密码重复。

使用:cat /data/basic/sites/vhost/conf/passwd能看到admin:{SHA}xxxxxxxxx,密码已被sha加密了。

前往网站设置-源文,自定义添加:

location /admin/ {
        index                 index.php;
        auth_basic            'Admin Auth';
        auth_basic_user_file  /data/basic/sites/vhost/conf/passwd;
    }

即可。
之前我没加 index index.php;导致网页一直认为/admin/是目录,从而导致403,经过提普ucw的提醒,和我的测试,最后得到了这个配置。
使用index index.php;指定网页默认文档加载index.php

经过测试,chrome自动填写密码能正确区分不同界面使用不同密码,并且,即使通过Cookie登录了后台,访问后台时依然需要输入nginx的密码才能访问。在两处密码不一样的情况下,基本上防御了普通暴力破解的攻击。

最后修改:2020 年 02 月 17 日 06 : 54 PM