最近又开始了异地工作和生活,
对我来说能随时管理家庭内网又成了比较重要的事。
(否则就浪费了近 100mbps 的上行?)

内网部分设备开启了 SSH 服务,
常见的方案就是利用路由器做“跳板”,
会比直接 dst-nat 到特定的 SSH 端口要“相对”更安全。

我使用的是 RouterOS (下称 ROS ),
下面来看看如何配置——

首先当然是准备公钥登录。
我们希望为跳板机使用独立的密钥对,
假设你已将其生成对并安全地存放于本地 ~/.ssh/id_rsa_bastion
请将其通过 WebFig 或 Winbox 上传至 ROS 存储区。

6.31rc10 之后 ROS 终于支持了 RSA 密钥,
因此建议放弃 DSA 并至少使用 RSA 2048 强度。

然后确保你在 ROS 开启了 SSH 服务并提升了安全要求:

/ip service enable ssh
/ip ssh set strong-crypto=yes

当然,很重要地,
请别忘了允许 SSH 转发:

需注意的是若之前曾将此项设为 yes 的话,
则之前某次 ROS 版本升级曾将其改为 remote
这是很多人(包括我)一开始失败的原因。
具体配置项含义请参考官网

/ip ssh set forwarding-enabled=local

现在可以先用现有账号 SSH 尝试登录试试。
若成功,
我们继续为跳板机新建一个仅有 SSH 权限的用户组,
如名叫 ssh_bastion

/user group add name="ssh_bastion" policy=ssh,!local,!telnet,!ftp,!reboot,!read,!write,!policy,!test,!winbox,!password,!web,!sniff,!sensitive,!api,!romon,!dude,!tikapp

/user
add

跟着交互式命令行我们增加一个用户,如 joe_black
将其加入刚建立的 ssh_bastion 组,
并为其导入之前已上传的公钥:

/user ssh-keys import public-key-file=id_rsa_ehome.pub user=chappell

最后我们修改 ~/.ssh/config 配置:

Host 1.home
    HostName 1.0.0.1
Host 2.home
    HostName 1.0.0.2
Host *.home
    ProxyJump bastion
    ForwardAgent no
    IdentityFile ~/.ssh/id_ed25519_home
Host home.bastion
    HostName ddns.example.tld
    User joe_black
    IdentityFile ~/.ssh/id_rsa_bastion
Host *
    PubkeyAuthentication yes

重新进行连接测试:

ssh 1.home -vvv

ROS 的 SSH 服务和 User 权限还可以增加 IP 段限制,
比如可以限定仅接受来自某些公网 IP 的访问来提升安全,
但终究仍让人觉得不够强大。
还请 ROS 高手不吝赐教。

最终我仍回到类似此文所述的方案,
优势是设置好规则之后便能适用于各种代理终端,
配合 Cloud-init 和 RancherOS 也方便部署 fail2ban, knock 等来进一步提升安全,
有空再另撰文总结。

案例

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

假设用户名为 <USERNAME>

案例一:二步验证 (2FA) 无法登入或重试次数超限

Ref: Synology Forum

若 DSM 未正确配置 NTP ,
或遭遇 2FA 客户端问题以致二步验证总是失败,
除了通过提前配置好的邮件、短信等方式获取紧急验证码之外,
你也可以考虑自行获取——







- 阅读剩余部分 -

前言

无意翻到 Let's Encrypt (下称 LE )已支持 OCSP Must-Staple 扩展的消息
再加上之前也想升级双证书
于是又有了重新折腾一次的动力。
记录如下——

特别提示:
如果仅是希望使现有证书支持 OCSP Must-Staple ,
用原私钥重新生成 CSR 申请证书即可。
详见 CSR 一节。

准备

服务器环境

推荐使用 nginx-autoinstall 脚本进行安装,
原 Repo 仅适用于 Debian 8
其它发行版需要稍作修改。

编译并安装完可以使用如下工具测试相关特性:

工具选择

CA 当然选择免费且开源的 LE
工具方面则依旧选用 ACME-Tiny
官方列表中亦罗列不少,
包括最近很流行的国人作品 ACME.sh
若选用其它工具则签发流程会有所变化(相应环节会稍作说明)。

密钥强度及算法选择

RFC5480 ,对 ECDSA 证书的推荐组合如下:













- 阅读剩余部分 -

介绍

Homebrew 其实不用介绍, OSX 用户必备。

BTW 其实它还有个 Linux 的 Fork
用过,哭过,往事毋庸再提……

所含公式

按照 Homebrew 体系的命名路数,
或许翻译为“配方”比较好?

nali

“珊瑚虫”的 Soff 所编写名为 nali (=哪里?)的程序,
官方的功能介绍是“dig ,traceroute 等命令的输出的 IP 附加上地理信息”。

使用示例如下:

$ dig google.com +short | nali
216.58.xxx.xxx[中国 香港]
$ nali 127.0.0.1
127.0.0.1[本机地址]

当然,最大的便利还是弃用珊瑚虫转而使用 IPIP.net 的免费版 IP 信息库(每半年更新),
使用该工具进行转换。
会定期更新,届时执行 nali-update 即可跟随更新。

2017-07-07 已更新至 2017-07 月 IPIP.net 的免费版数据。

提供一个选项:

  • --without-dnsutils-scripts: 如果你更习惯管道方式,而不是使用带 nali- 前缀的多个脚本的话。





- 阅读剩余部分 -

介绍

多年前写过一个 Firefox 扩展和一个油猴脚本
都是用来简化在浏览器上对“特殊链”的处理。
这么多年过去,
浏览器早已放弃 Firefox 改用 Chrome ,
“下载器”也从离线迅雷换到了 115 云
那么工具也该更新更新了。

之前的油猴脚本仍能够“部分”工作——
magnet: 之外的其它“特殊链”伪协议均不能注册到 Chrome 中。
于是抽空写了另一个脚本,
功能如下:

取名为 Specilink Remastered
是为了纪念之前的那个 Firefox 扩展。

配置项

脚本本身支持的配置项如下,
请打开脚本管理器在源码中编辑:

var Configs = {
    'enabled_handler'       : 'thunder', // “下载器”可选项:115, thunder, qq, miwifi
    'auto_add_task'         : true,      // 是否自动添加下载任务,否则需要你手动点击按钮
    'auto_add_task_timeout' : 10000,     // 自动下载的监听时间,单位毫秒
    'register_protocols'    : false,     // 是否注册为浏览器内置 Handler
    'debug_mode'            : false,     // 是否开启调试模式
};










- 阅读剩余部分 -