群晖 Web Portal 多个封禁案例及解决方案

案例

使用 DSM 数年,
如下案例均有亲身经历, 😂
解决方法通过搜寻和尝试获得(见 Ref )。
一切的前提当然是你仍有 SSHConsole 权限。

假设用户名为 <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

重新登录即可。

标签: DSM

添加新评论