Category Archives

20 Articles

解决Android 6.0 Marshmallow中Xposed的模块列表为空

2   317 转为繁体

Solve Xposed module list become empty on Android 6.0 Marshmallow

English Version

升级Nexus5 到6.0.1 (M4B30Z, Dec 2016)之后,Xposed的模块列表变成空的了,所有的模块也都失效了。没有xposed,怎么种庄稼。于是我打开logcat看了一眼。

rovo89在xda的QA帖中说一般情况下这个文件会在启用任意一个模块后创建。然而现在它并没有被创建。于是我去建了一个,然后chmod 644以及chown到应用到uid(可以通过启动应用之后ps|grep xposed查看uid,形如u0_a??),重启了一下,再瞄了一眼logcat。

好像哪里不对

想起来Android从萝莉棒开始SELinux就是enforce了,所以大概是这个问题。(我们可以通过dmesg|grep audit来查看被SELinux过滤的各种奇怪操作。)于是看了一下默认的文件context和我们刚创建的文件的context:

那么我们把这个conf/modules.list也改成u:object_r:app_data_file:s0:c512,c768这个context好了

restorecon是toybox中带的一个applet,我们也可以用chcon来手动更改context。


Recently I found module list in Xposed become empty after I upgrade my Nexus5 to 6.0.1 (M4B30Z, Dec 2016). And all the modules are not activating. So I open logcat and see the following:

Rovo89 said on a xda post that this file should be created if any module is activated. But somehow it didn’t do so on my Nexus5. So I create one myself and set correct permission (0644) and uid (you can run the Xposed Installer app and check the uid through ps |grep xposed). Then I reboot and check logcat again:

Looks like it’s still not working.

Then I realise that Android started to set SELinux to enforce from Lollipop (5.0) so this should be the problem. (We can use dmesg|grep audit to check if the problem really related to SELinux. ) I compared a random file under /data/data to the file we just created:

So all we need to do is to change this conf/modules.list to u:object_r:app_data_file:s0:c512,c768 as well

restorecon is a applet shipped with toybox, we can also use chcon to manually set SELinux context.

被害妄想症如何保护服务器安全

15   1119 转为繁体

自从有次过海关的时候电脑被TSA开包检查硬盘还掉下来了之后,我的被害妄想症就越来越没救了。

这篇文章假设有人可以物理接触你的电脑,以及你所在的网络不可信,这种情况下应该怎么保护你的服务器数据安全。

 

  • 使用代理登录SSH以隐藏服务器IP。如果有多台服务器,选择一个位置最近的做跳板机,加密它的文件系统(OpenVZ再见)。设置另外机器的hosts.deny和hosts.allow为仅允许跳板机IP登录;如果使用不支持tcpwrapper的服务如dropbear,需手动设置iptables。
  • 登录跳板机的方式要和登录另外机器的方式不同。
    • 使用密码+google authenicator登录跳板机,然后通过公钥登录别的机器。设置跳板机的sudo需要密码,且设置为不同于当前账户的密码;方法是在/etc/passwd中添加一行toor:x:0:0:root:/root:/usr/sbin/nologin,使用passwd修改toor的密码,在/etc/sudoers中添加一行Defaults        runas_default=toor, runaspw。
    • 使用密钥A登录跳板机,使用另一个密钥B登录别的机器。密钥B应保存在本地,通过ssh-agent转发到跳板机。不同设备上的密钥B可以设置不同的passphrase。dropbear不支持ed25519,而ecdsa据都市传说可能存在NSA的后门。
  • 每三个月更换一次密钥。
  • 保证密钥的passphrase的强度;不使用任何云服务保存密码和密钥;如果实在记性太差,在本地AES加密一次,然后做好伪装(比如将二进制密文附到图片文件之后或压缩文件之前,[密文|!Rar…] 或 [\xFF\xD8…\xFF\xD9|密文])。
  • 设置fail2ban。
  • 监控跳板机/var/log/wtmp中的登录IP。
  • 如果没有必要,关闭SSH和其他各类开放端口。
  • 所有明文服务尽可能走tls。如果客户端支持SNI,配置假证书以防止被猜测域名。可以使用lua-resty-sniproxy

欢迎交流

离线下载一条龙

9   1201 转为繁体

因为怕死 遵纪守法,所以不在自家bt下新番和剧。目前的架构是这样的,造福一下海外党

  1. 一个offshore的DMCA不敏感的服务器。RSS爬取某两个网站添加磁力链接到deluge。nginx添加一个下载目录的location,记得要https,并且给default_server加上假证书,参见这篇博客
  2. 家里一个树莓派或者类似的硬件,运行aria2,开放aria2 rpc端口到公网,加上token。或者ssh转发aria2的端口到一个跳板机。
  3. deluge使用execute插件,在Torrent Complete事件执行shell脚本添加到家里的aria2,并且设置pause值为true。
  4. 树莓派crontab半夜执行aria2.unpauseAll开始下载

搭建一个不被审查的串流站点

17   35118 转为繁体

原标题:被害妄想症该如何生存

先看配置:

假设:

审查机关拥有运营商级别的入侵检测设备(比如GFW)

说明:

  1. 全站使用https,关闭SSLv3,关闭弱加密组件
  2. default_server开启80端口,使用自签名证书;真实需要访问的域名(example.com)必须使用有效的证书,或者在本地信任根证书。注意example.com不能开启80端口,且与default_server使用的证书不能相同。不要使用泛域名证书。这是为了防止审查机关通过直连IP查看返回的证书中的Common Name来得到真实域名。这样配置之后,直连IP https://xxx.xxx.xxx.xxx默认是返回自签名证书,无法得到真实example.com。
  3. 选择性开启autoindex,通过cookie鉴别。注意也可以通过HTTP Basic Authenication认证。对匹配文件夹的uri(”/”结尾)做认证,示例中只有带cookie coo=coo的请求才会返回autoindex,否则返回404。
  4. 在location /中禁用目录末尾自动加斜杠,因为如果自动加斜杠,审查机关可以通过暴力猜测出服务器上有哪些目录确实存在(返回了301到末尾加/的url)。方法是if (-d $request_filename)返回404。