基于init的SS启动脚本

基于Systemd设置SSR开机启动

最近一段时间接触的CentOS 7和Debian 8都换成了Systemd作为系统服务的管理程序,于是根据SSR Wiki写了个服务控制脚本,放这里备忘。

我的SSR路径是 /usr/local/ssr,SSR单机版配置文件是 /etc/ssr.json
服务控制文件路径位于/lib/systemd/system,新建并编辑ssr.service

单用户版本:

多用户版(mudbjson)

Ctrl+O文件保存后,Ctrl+X退出nano,执行 systemctl daemon-reload 刷新守护进程。

使用命令如下:
启动服务: systemctl start ssr
停止服务: systemctl stop ssr
重启服务: systemctl restart ssr
设置自启: systemctl enable ssr
取消自启: systemctl disable ssr

我个人喜欢用系统里面比较【正统】的方法来做一些实现,所以其实更简单的是在 /etc/rc.localexit 0 之前加入一句

就好了……不用搞这么复杂的。

BTW,
吐槽一下,我的8刀阿里HKB今天零点就要到期了,8刀的日子将要一去不复返,但是看在CN2的份上,重新买了个月付19刀的HKC……算了一下100多块钱换得一个畅快的科学上网体验还是可以的~ 不过令人蛋疼的是,家里CMCC光纤访问HKB/HKC要绕路、会丢包、感觉卡……还好还有GCE助攻……我想吐槽CMCC线路GCE东亚节点为啥要绕日本……

-EOF-

NGINX 301跳转所有非IP访问至HTTPS

前几天入了个Vultr的$2.5方案用来放这个博客,然后看着每个站点的配置里面都要写一个443端口和一个80端口共两个server{}段,其中80只是用来做301跳转,显得有点,不是那么完美。

出于对NGINX的不太熟练,我研究了一个下午,突然在蹲坑的时候灵机一动,就给解决了,为了不让这个灵机跟着米田共一起冲走,我还是记下来比较好。

上配置:

这是个默认站点(80 default)配置,访问IP和任何不存在的站点,NGINX都会转向这个默认站点。

这个配置解决了这么三个问题:

  1. 如果访问的是IP地址,那么作为默认站点,显示的是 /usr/share/nginx/html/index.html ,我的是 Hello, World!
  2. 如果访问的是任意HTTP站点,就会强制带参数301跳转到同域HTTPS站点上,而且是个万能跳转器,谁把域名做个CNAME到我的IP都会跳。
  3. 每个站点的配置文件,只需要写一段443的server{},不用额外写跳转的站点。

如果认为上面第2条看起来不太安全,或者不太爽,那也可以稍微改一下。
把配置里面的

改成

Nginx就只会跳转到配置里面有的域名,没有的域名如果绑了你的IP,访问的是默认站点,不跳转。

BTW,
吐槽一下,Debian 8自带源也是不靠谱,默认编译的Nginx不带HTTP2,为了SSL Labs的A+评级,我只能用Nginx官方源的包……

-EOF-

批量下载阿里安全峰会资料

Update: Aug 17th, 2016
昨天写完后前思后想觉得不应该这么麻烦,毕竟pipe的魅力是无穷的,于是重新改了一下命令,既然都格式化两个参数出来了,那还是用一句话完事儿比较好……

两个方法只有细微的差别,比如下面的那个,文件有序号,文件名可以保留空格,这个都让我替换成“_”下划线了。
不过,文件名没空格才是好习惯~
——————————————————–
在微博看到一个发帖,内容是“OSX下批量下载BlackHat议题”

@riusksk
【OSX下批量下载BlackHat议题】由于迅雷for mac不支持网页内的链接文件批量下载,因此用个命令提取出所有pdf,复制到迅雷里就可以批量下载了: curl -s https://www.blackhat.com/us-16/briefings.html|grep -a pdf|awk -F ‘”‘ ‘{print $4}’

以及升级版

可以把zip后缀也加上:curl -s www.blackhat.com/us-16/briefings.html | grep -a “pdf\|zip” | awk -F ‘”‘ ‘{print $4}’

鉴于前阵子一直在看阿里安全峰会的67份PDF手痒想批量下载但是没动起来,看到这个微博正好就改了一下句子,自己测试通过,在这里就是记录一下省得回头忘记了。

大概获得以下内容:

2c94ab81b98306a8999605709579474f.pdf Webshell安全分析实践谈-陈中祥
20b623c9a435152ab70987b44caf490b.pdf 安全威胁情报如何敲开企业安全管理的大门-苏砫
3abaa34100744be60ef95a3e3e709c96.pdf 打赢企业信息安全这场仗-姚威
91bcff6737815f2f1874481df49d5d7a.pdf 风声与暗算-严雷
3b9b672c8f83e044b180e6df7417f600.pdf 攻击过程的威胁情报应对体系-王云翔
5bfa5e3cfef7062313b02dfb318cbb26.pdf 如何产生威胁情报高级恶意攻击案例分析-宋超
a791868be9fe2ddde9a4e5fd65a55794.pdf 网络安全情报在企业侧的落地与实践-叶蓬
62e43182f9d148a12ba9038f9ba4d953.pdf 威胁情报企业安全-聂万泉
b472caf0373b3c1e3af37b5475c01ffd.pdf 威胁情报如何通过漏洞管理在企业落地-刘然
…………

然后继续……

解压压缩包,完事儿。

-EOF-

一句话服务器

最近调试VPS需要转移文件,又不想特别去安装HTTP/FTP服务软件,于是找来了这些命令,一行可以启动一个HTTP/FTP服务器,Ctrl-C中止后服务器即停止,简单明了很方便。

1. Python

执行命令:

[YourPort] 修改为端口号即可,如80,8080等,执行命令时是把当前目录作为webroot同时支持目录遍历,貌似也没有多的参数了。

2. PHP

执行命令(PHP5.4.0+):

参数 -S 后面为监听的IP及端口, -t 后面为webroot路径,支持解析PHP脚本,不支持目录遍历,访问的时候需要同时包含完整路径。

3. Ruby

执行命令:

参数 -ehttpd 后为webroot路径, -p 后为监听端口,支持目录遍历,貌似没什么特别的功能。

4. Python/FTP

执行命令:

参数 -p 后为监听端口。这个命令运行的是一个FTP服务器,匿名登录。

-EOF-
——————–
引用参考:

  1. [渗透技巧] 一句话开启简单的服务器
  2. PHP Manual

替换Google Fonts&Google Libs为中科大源

由于众所周知的原因,WordPress在使用过程中,后台及模板都会调用到Google Fonts&Google Libs的文件,如果恰逢没有科学上网工具的时候看着一直都在Loading的浏览器会觉得真是生不如死……

0. 前情提要

之前我试用过Qihoo360的Replace Google FontsReplace Google Libs插件,满心欢喜的装好就丢着不管了,直到某日骚包地发现Chrome里面大标题Mr.21是宋体……要多难看有多难看,debug了一下发现是Qihoo360的字体库压根没!有!加!载!到!

直接访问插件替换出来的URL,居然提示证书错误(HTTPS),而且两个站的证书错误提示还不一样……

此服务器无法证明它是fonts.useso.com;其安全证书来自*.yiqifa.com。出现此问题的原因可能是配置有误或您的连接被拦截了。

此服务器无法证明它是ajax.useso.com;其安全证书来自res.0kee.com。出现此问题的原因可能是配置有误或您的连接被拦截了。

yiqifa.com和0kee.com都是360名下的站点,这得有多粗糙才能做出这样的服务来啊,而且压根自己就不用的对吧!对吧!对吧?!

1. 进入主题

我焚香祭拜谷歌大神,祂给我出了个主意,让我看看中科大LUG发布的Google Fonts加速服务,一看,深得我心,走HTTPS也不会有诡异的错误提示↑,这才是良心服务商应该有的样子~

按照文中说明,我应该将下面这些前面地址换成后面的地址

fonts.googleapis.com        fonts.lug.ustc.edu.cn
ajax.googleapis.com        ajax.lug.ustc.edu.cn
themes.googleusercontent.com   google-themes.lug.ustc.edu.cn
fonts.gstatic.com          fonts-gstatic.lug.ustc.edu.cn

我试过直接修改上面提到的两个插件里面的路径,但是发现没办法用HTTPS来走,而且会有替换不了的情况……

于是,我想另辟蹊径……

2. 另辟蹊径

好吧,我又烧香了,这次我也忘了从哪里找到的,说是可以直接在Nginx的配置里面http{}段增加几个句子,从WEB服务器层面直接把输出的上面几个原始地址替换为LUG@USTC提供的加速服务,于是我照做了……

首先,需要你的Nginx有一个叫substitutions_filter_module的模块,如果没有的话,按照这里编译安装一下吧……

Tips. 如果不知道之前Nginx编译的时候带了哪些参数和模块,可以用Nginx -V查看。

然后找到你的nginx.conf,如果不知道在哪里,可以用以下命令搜索

打开它,在http{}配置段中,寻找对应},在上方增加以下配置

保存,退出,重启Nginx看看效果。

3. 后话

有个比较,嗯,不太方便的地方就是,走Web输出的相关地址,都会被替换,比如说我编辑Plugins的代码,就会发现实际上是Google Fonts的地址自动的替换成USTC的……

此例用的是LUG@USTC提供的服务,当然你也可以找谷歌大神烧香问问“Google Fonts反代”,会发现有很多公益项目都提供了,包括下面【引用参考】部分的4、5都提供这样的服务。

下次说说,Mr.21 Blog升级为HTTPS加密访问了,用的是Letsencrypt的免费证书,三个月的证书期限有点蛋疼啊……
嗯,就这样。

-EOF-
——————–
引用参考:

  1. LUG@USTC Google Fonts 加速服务
  2. 编译nginx的源码安装subs_filter模块
  3. nginx_substitutions_filter project
  4. 常用前端公共库CDN服务
  5. 公益项目:CDNJS 库以及 Google Fonts、Ajax 和 Gravatar 反代

极路由改OpenWRT加GoAgent小记

去年手贱买了好几个极路由极壹,其中有个粉色的(这个比较娘炮的颜色买的时候没得挑了……),无意中了解到极路由的Firmwares是基于OpenWRT定制的,于是玩心大起,当时就把粉色极壹按照官方教程(也可参考这个教程)刷成OpenWRT,然后就丢在一边了,直到这个月中旬要进山出差就顺手带上了。

本PO主要记录一下在OpenWRT里面添加GoAgent的操作,此篇小记基本上可适用于所有OpenWRT路由器。

0. 前提

这篇POST的前提是,具备一个路由器,已经刷好OpenWRT系统。

我的是极路由极壹。通过 https://code.google.com/p/openwrt-hiwifi/ 获取编译好的OpenWRT新版固件,按照页面下方的刷机方法直接刷入路由器即可。其中,如果使用的是笔记本,最好关闭无线网卡。

我的极路由型号为HC6361,路由器名称为Yo_Pink,固件版本为OpenWrt Barrier Breaker r38140,操作的机器为Windows系统。

1. 准备

  1. 下载一份GoAgent备用,可通过这里下载,并上传服务器端到GAE,我使用的是3.1.5版。
  2. 刷好OpenWRT的路由器需配置并连上网络,因为需要下载一些组件。
  3. 安装一个趁手的SSH连接工具,我使用Xshell
  4. 准备一个可以打包文件为tar.gz或tar或tgz格式的压缩软件,我使用7 Zip
  5. 一个简单小巧的HTTP服务器软件,我使用HFS

2. 配置GoAgent

此步操作与PC上使用GoAgent相同,将下载的压缩包解压,编辑 local/proxy.ini 配置文件,需要修改两个地方

    Proxy.ini第二行修改:

    Proxy.ini第八行修改:

配置完成后可以在本机运行GoAgent.exe,并将浏览器的HTTP代理服务器设置为服务器地址127.0.0.1、端口8087进行测试是否有效可用。

3. 打包GoAgent

将GoAgent压缩包解压出来的以下文件打包为tar格式的文件,此处暂命名为go.tar

  • CA.crt
  • certs目录
  • dnslib-0.8.3.egg
  • proxy.ini
  • proxy.pac
  • proxy.py

4. 配置路由运行环境

GoAgent的客户端要在OpenWRT里面运行,需要安装几个组件,幸好OpenWRT提供了很方便的包管理工具opkg,不需要我们自己到处找组件包。

首先通过SSH连接你的路由器,一般就是你的网关了,我这里默认IP地址是192.168.1.1,在xshell里面,直接输入

然后执行 root@Yo_Pink:/# 之后的命令(后文均是如此)

等Xshell里面重新出现 # 符号,说明组件安装完成,继续。
Continue reading 极路由改OpenWRT加GoAgent小记

Ubuntu Network Manager的L2TP插件

因为最近比较无聊,打算用Ubuntu作为ThinkPad X200的主作业系统,但是身处的两个公司,一个用Cisco VPN一个用L2TP VPN,两者都要相互兼顾才行,前者的话,倒是有很方面的安装包可以实现(network-manager-vpnc),同时还集成在Network Manager里面,而另一个用apt-cache search后发现,没有合适的L2TP客户端,按照以往的经验,似乎要安装xl2tpd和用文本配置才行,这样未免太麻烦了。

于是放狗(Google)搜索,找到这么一篇文章可以实现用Network Manager来管理L2TP连接,特转来记录一下,相关版权归原作者Cherrot所有。

大概是这么回事儿,有个项目叫NetworkManager-l2tp,作为Network Manager的第三方插件出现,托管在github,可以以集成在Network Manager的方式实现对L2TP连接的图形化管理,让用户可以不用去写那一堆堆的配置文件,大概的安装步骤如下:

  1. 添加Ubuntu特有的PPA源:
  2. 更新系统的包管理器缓存数据:
  3. 安装需要的network-manager-l2tp:
  4. 同时停止xl2tpd服务并且禁止其开机自动启动:

之后,就可以通过Menu Bar里面的Network Manager来新建和使用、管理L2TP VPN连接了,与内置的PPTP及后装的Cisco VPN插件一样的方便快捷,不过原文作者提到了一个小问题,如果连接L2TP的VPN时提示“没有合法的 VPN Secret”的话,那么推荐重启一下你的Ubuntu,具体原因未知,据说可能是因为和其他正在运行的VPN客户端冲突导致的。

顺手截个图留念:

-EOF-

——————–
引用参考:
《Network manager的L2TP VPN插件,可选支持IPSec》
http://www.cherrot.com/2012/03/network-manager-l2tp-vpn-plugin-ipsec-supported

WordPress多用户模式子站点无法加载CSS?

21今天突然手闲,想试试传闻已久的WordPress多站点模式(WordPress Multisite),于是用手上的一个DirectSpace年付的VPS(性能?淡定……)临时搭建了一个LAMP,按照WordPress Codex的操作一步一步对WordPress进行修改,按照子目录的形式最后写入 .htaccess 并建立了子站点,但是出现一个问题,子站点可以访问,但是无法加载CSS和图片等东西。

初步判断应该是 .htaccess 里面Rewrite规则可能有问题,但那是官方提供的,不应该吧……
于是通过Google大神一番搜索,确定是Rewrite规则有问题,并将 .htaccess 文件替换为以下内容后工作正常:

WordPress Multisite Based Sub-folder Mode

————————————————我是分割线————————————————

我刚才重新弄了一下想重演故障,结果发现没问题了,记得看过一篇POST提到WP有个缓存机制导致了这个问题,不过我把 .htaccess 更新了以上代码后,就工作正常了,一时也没留意是否跟WP给出的范例代码是否有所不同,纠结了……放这儿备查吧。

————————————————我是分割线————————————————

Update: Jan 13th, 2011
终于发现问题所在了,由于我手欠,没有使用启用Network功能时 /wp-admin/network.php 提供的 .htaccess 内容,而直接使用了Codex.WordPress提供的Rewrite规则,于是 ……
来自Codex.WordPress的Rewrite规则呈现如下(无法工作的,仅供参考,别用……):

主要区别在于以下两句,正好影响到的是主题布景(Theme)、后台管理等功能:

有效的规则:

无效的规则:

-EOF-

——————–
引用参考:
WordPress Support: http://wordpress.org/support/topic/wp-multisite-htaccess-not-working
Perishable Pre: http://perishablepress.com/press/2010/07/07/htaccess-code-for-wordpress-multisite/
WordPress Codex: http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite
WordPress Codex: http://codex.wordpress.org/Create_A_Network