群晖 Web Portal 多个封禁案例及解决方案
案例
使用 DSM 数年,
如下案例均有亲身经历, 😂
解决方法通过搜寻和尝试获得(见 Ref )。
一切的前提当然是你仍有 SSH 或 Console 权限。
假设用户名为
<USERNAME>
。
案例一:二步验证 (2FA) 无法登入或重试次数超限
Ref: Synology Forum
若 DSM 未正确配置 NTP ,
或遭遇 2FA 客户端问题以致二步验证总是失败,
除了通过提前配置好的邮件、短信等方式获取紧急验证码之外,
你也可以考虑自行获取——
SSH 登录机器后,
然后查看紧急验证码:
可见 DSM 用的 Google Authenticator 的方案。
cat /usr/syno/etc/preference/<USERNAME>/google_authenticator
格式如下:
<RANDOM_CODE>
" DISALLOW_REUSE <ANOTHER_RANDOM_CODE>
" TOTP_AUTH
<AUTH_CODE>
<AUTH_CODE>
<AUTH_CODE>
<AUTH_CODE>
<AUTH_CODE>
...
可从中复制 <AUTH_CODE>
出来使用,
尝试次数超限额之后亦可自行向末尾添加(建议事先备份)。
案例二:重试次数超限触发自动封禁 (Auto Block)
Ref: Synology Forum
自动封禁是 DSM 内置的简单安全功能,
即当重试次数过多便会将来源 IP 封禁。
因此建议对内网某些管理机器设置例外。
解决方法同样是 SSH 登录机器,
(若来源 IP 已被封禁,可更换 IP 登录或改用本地 Console )
备份后直接修改相关数据文件:
cp /etc/synoautoblock.db /etc/synoautoblock.db.bak
sqlite3 /etc/synoautoblock.db
显示表头,
查看 AutoBlockIP
表中所有被封禁的 IP :
.header on
select * from AutoBlockIP;
假设你想要解封的 IP 是 <IP_ADDR>
:
delete from AutoBlockIP where IP = '<IP_ADDR>';
.quit
重新登录试试。
案例三:不当的权限 (Privileges) 设置
Ref: Synology Forum
注意此贴中的封禁情形与本文所述并不相同,
请具体分析后进行修改。
我遭遇的情形是:
使用自行新建的管理员账户 <USERNAME>
,
但实际上主用户组是 User
。
在 Privileges 模块中若不慎将 User
组的 Desktop
应用访问权限设置为 Deny
,
此时就算单独对 <USERNAME>
或 Administrator
组设置 Allow
均会落入陷阱,
登录 Web Portal 会得到提示 You are not authorized to use this service 。
解决方法同样是 SSH 登录。
首先获得自己的 uid :
grep <USERNAME> /etc/passwd
假设为
<UID>
。
备份后直接修改相关数据文件:
cp /etc/synoappprivilege.db /etc/synoappprivilege.db.bak
sqlite3 /etc/synoappprivilege.db
显示表头,
查看 AppPrivRule
表中所有 SYNO.Desktop
(即 Web Portal )相关记录:
.header on
SELECT * FROM AppPrivRule WHERE App='SYNO.Desktop';
其考表结构如下:
0|Type|INTEGER|0||0
1|ID|INTEGER|0||0
2|App|varchar(50)|0||0
3|AllowIP|TEXT|0||0
4|AllowIPStd|TEXT|0||0
5|DenyIP|TEXT|0||0
6|DenyIPStd|TEXT|0||0
假设相关记录为:
1|100|SYNO.Desktop|||0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000
1|101|SYNO.Desktop|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
可见 User
组 (gid=100) 全禁止,
而 Administrator
组 (gid=101) 则全放行。
此情形下只需放行 User
组:
UPDATE AppPrivRule SET AllowIp='0.0.0.0',AllowIPStd='0000:0000:0000:0000:0000:0000:FFFF:0000:0000',DenyIp='',DenyIpStd='' WHERE ID = 100 AND APP = 'SYNO.Desktop';
.quit
重新登录即可。
你好作者,我在一本2016年版的物联网射频识别教材内容里举的例子中扫描出来了这个网址的二维码,我感到很奇特,故在此留言
@方方土大人
呃,幸会。
虽然我也一脸懵比。