分类 技术 下的文章

树莓派安装shadowsocks

之前我安装了一个 shadowsocks 服务端在远程的服务器上。现在来安装客户端到本地服务器,这样的话只要本地服务器开机就可以给全部的本地机器代理上网了。而不必每个本地机器都安装客户端。当然,如果你闲的蛋疼也可以给每个本地机器安装客户端。不过前面已经说了——没必要。

安装 Shadowsocks
apt-get install python-pip python-m2crypto
pip install shadowsocks

新建配置文件
sudo nano /etc/shadowsocks.json
配置文件内容如下。
{
"server":"SS服务器ip地址",
"server_port":443,
"local_address":"192.168.4.13",
"local_port":1080,
"password":"your-passwd",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false,
"workers":10
}

配置文件说明
SS服务器ip地址,请填你的服务器 IP 地址。不确定的话,去服务器上查看。
"server_port",请填写你的 SS服务 端口。不确定的话,去服务器上看你的SS配置。
"local_address":"192.168.4.13",这个是我树莓派在本地的 IP 地址,供给本地机器使用
"local_port":1080,是我供给本地机器使用的端口
"password":"your-passwd",填写服务密码。确保和服务器上写的一样。
"timeout":300,以下全部和远程服务器保持一致
"method":"aes-256-cfb",
"fast_open":false,
"workers":10

添加到开机自启动
sudo nano /etc/rc.local
在 exit 0 之前写入这一行
/usr/local/bin/sslocal -c /etc/shadowsocks.json -d start

重启树莓派
sudo reboot

在任一和树莓派同局域网内的本地机器
如这个 IP 的机器上:192.168.4.33
打开 Firefox 浏览器,在地址栏输入
about:preferences#advanced
选 网络 连接 配置 Firefox 如何连接至国际互联网,设置(E)..
手动配置代理(M)
选择 SOCKS主机
地址为192.168.4.13
端口1080
版本选 SOCKSv5
保存

然后就可以科学的打开一些网站了

阿里云异常登录问题排查记录

阿里云ecs使用的是ubuntu14.04系统,收到阿里云短信提醒,有异地ip登录可能被黑客攻击。登录阿里云云盾查看登录ip登录时间和登录名为git,基本确定如果出问题的话应该是gitlab的锅
首先,用自己的账号登录服务器,可以登录说明没有被大范围破坏。
然后查看/var/log/auth.log,发现登录ip和登录时间与阿里云提醒短信相符,而且log并没有被删除或修改。
在auth.log文件中
Apr 15 22:42:57 servername sshd[14983]: Accepted publickey for git from 60.10.71.xx port 7207 ssh2: RSA 15:07:f5:20:8e:40:ba:d5:60:92:6b:b7:b2:xx:xx:xx
Apr 15 22:42:57 servername sshd[14983]: pam_unix(sshd:session): session opened for user git by (uid=0)
Apr 15 22:42:57 servername sshd[15002]: Received disconnect from 60.10.71.xx: 11: disconnected by user
Apr 15 22:42:57 servername sshd[14983]: pam_unix(sshd:session): session closed for user git
通过搜索rsa指纹发现在工作时间有此指纹的机器通过办公网络ip登录,由此基本可以确定“黑手”来自内部。
然后就是通过rsa指纹找到这只“黑手”,通过在每台工作电脑上执行ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub,查看pubkey的指纹是不现实的的
想到gitlab保存了所有用户的公钥,通过搜索找到gitlab公钥存放位置,默认/var/opt/gitlab/.ssh/authorized_keys
打开文件将每个人的公钥复制出来保存为文件,执行ssh-keygen -l -E md5 -f [filepath]生成每个文件的指纹,对比日志中异常登录的指纹
最终确定“黑手”是谁,通过询问“黑手”得知相同时间通过自家宽带通网络push过代码,警报解除。

ps:由于像宽带通、鹏博士这些二级运营商的宽带对出口ip做了nat,使用周边省市的出口ip以减少成本,所以远程主机记录的登录ip会不准确,可以通过ip查询网站查询此ip属于哪个运营商,或者百度ip应该也有些收获
pps:阿里云的云盾防攻击保护确实有些作用,但是有些时候也有些夸大威胁,来推销自己安全防护服务的目的

阿里云坑啊!记dnsmasq安装配置

需要在阿里云vpc里配置一台dns服务器,使用dnsmasq,安装一切妥当,按照文章配置内网服务器域名,一切看起来都挺顺。
就在dig baidu.com的时候出了问题。居然没有answer section,而内网服务器一切正常。
谷歌,百度各种文章,发工单问是不是阿里云做了什么限制,均无果。
最后在某篇文章启发下去找日志,默认是不开日志的,日志的位置也很诡异,在syslog里。
通过日志发现,dnsmasq没有使用我配置的源dns服务器,通过ps -ef | grep dns看到dnsmasq默认使用文件/var/run/dnsmasq/resolv.conf作为上游名字服务列表文件,然而这个文件是空的,dnsmasq在没有源dns时返回refuse
即dig里没有answer section。
其实也是我没自习看dig的返回信息,看到status:refuse解决这个问题就会少走很多弯路。
知道问题所在就好办了,直接修改这个/var/run/dnsmasq/resolv.conf可以,修改默认环境变量屏蔽这个文件也可以。
在这说说我猜这个坑的由来,其实我在其他vps上试是没有问题的,同样的ubuntu14.04,同样的版本,同样的大小,效果就不同
/var/run/dnsmasq/resolv.conf这个文件其实是桌面版ubuntu的network-manager使用的,可是阿里云都应该是服务器版啊
是阿里云镜像有问题,还是偷懒把桌面源给了服务器,不得而知,可以预计同样的坑还会有不少,以后多加小心。

pritunl安装小结

pritunl被墙,所以安装遇到点障碍
基于ubuntu 14.04
https://github.com/pritunl/pritunl
https://github.com/pritunl/pritunl/releases
部分按官方指导

$ vi /etc/apt/sources.list.d/mongodb-org-3.0.list
deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse
$ apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7F0CEB10
$ apt-get update
$ apt-get install openvpn bridge-utils mongodb-org
$ wget https://github.com/pritunl/pritunl/releases/download/1.21.928.27/pritunl_1.21.928.27-0ubuntu1.trusty_all.deb
$ dpkg -i pritunl_1.21.928.27-0ubuntu1.trusty_all.deb
$ service pritunl start

pritunl服务监听443和80端口,通过ip地址打开,默认用户名密码pritunl