1月 12

iPhone 手机控制linux服务器程序源码

  将远程连接SSH和数据库MySQL开放到外网很危险。
即使密码和KEY管理后都很安全了,但是还会有不少的扫描程序来扫描浪费资源。
但是我没有机器做跳板机或代理,也没有多余的IP和资源做VPN。
所以直接用防火墙把相应服务的端口对外网服务屏蔽,然后用个隐蔽的端口做中转。
中转服务需要就开放,不需要就关闭。这个服务当然也可以不用haproxy,直接关闭或打开防火墙。
也可以用这个服务管理其它的服务器上其它程序的启停。开始着手处理。

  服务端为Linux服务器(centos7),python2.7+tornado开发。客户端用swift2开发跑在iphone6上。

haprox安装后,跳转主要配置部分。
frontend ssh
bind x.x.x.x:20000
default_backend nat_ssh

backend nat_ssh
mode tcp
option tcpka
balance roundrobin
option httpchk
server ssh 192.168.1.222:22

服务端代码需要注意的部分:
服务端存放在/program/www/mydoor下。
文件myDoorServer.py的类MyDoorHandler中使用os.popen调用系统命令,绝对路径需要确认。Listen端口自行修改。
如:
line = “cd /program/www/mydoor;/usr/bin/python mydoor.py %s %s &” % (_se, _au)

文件mydoor.py中的kk为验证使用,自行修改,但是需要与swift中的kk值对应。执行命令的绝对路径需要根据系统确认。
要管理服务的命令,修改后就可以管理不同的应用。
使用“python myDoorServer.py &”启动服务。

客户端比较简单,修改kk值后,直接编译到手机上。需要的第三方的库,Alamofire和Crypto。
启动程序,输入开放时间,点击“敲”。实验成功。
mydoor20160107

服务端源码
iPhone客户端源码

11月 13

debian 增加 swap 区

在var中增加一个2G的区
root@test:~# dd if=/dev/zero of=/var/swap_file bs=1024 count=2048000
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB) copied, 40.1141 s, 52.3 MB/s
格式化为相应格式
root@test:~# mkswap /var/swap_file
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=7270b69d-6bc8-4311-bbc9-e78949327c21
加载交换分区
root@test:~# swapon /var/swap_file
如果要长期加载修改/etc/fatab配置,如下
UUID=7270b69d-6bc8-4311-bbc9-e78949327c21 none swap sw 0 0

9月 20

nginx1.9 etag修改

  之前用nginx和第三方etag模块,配置如下。

FileETag on;
etag_format “%X%X”;

  nginx1.3.3后原生就支持etag,默认开启。通过学习进行如下修改。

  RFC2616(ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt)对HTTP协议的规定,如果第一次请求资源正常,返回状态码200,第二次请求会在请求头里增加If-Modified-Since,如果If-Modified-Since是最后修改时间点,表示该资源没被修改,则http返回状态代码304,在相响应头中增加Last-Modified。这样该资源就不会被重复下载。nginx1.9.4配置修改如下。

location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|rar|css|js|zip|xml|txt|flv|swf|mid|doc|cur|xls|pdf|txt|)$
{
etag on;
expires 1h;
}
此部分内容应该是与权限无关的资源部分。如果是使用安全链接,保证session安全,请求链接会有随机数或算法变化,每次的链接都不同。此部分还会消耗CPU,就达不到节约带宽的目的了。

6月 23

zabbix 异常IP地址登陆告警

首先在服务器上建立白名单
比如连接是
http://www.simonzhang.net/whitelist.txt
可以访问的ip地址,一行一个
部分zabbix检查python代码如下。

login_status = 0
import urllib2
get_whitelist = urllib2.urlopen("http://www.simonzhang.net/whitelist.txt").read()
_whitelist = get_whitelist[:-1].split('\n')
get_last_list = os.popen("/usr/bin/last -10|head -10|awk ' ''{print $3}'").readlines()
for login_ip in get_last_list:
    if login_ip[:-1] not in _whitelist:
        login_status = 1
return login_status

如果有在白名单外的IP登陆则告警。因为是内网每5秒检查一下,白名单很小,所以不考虑访问频率问题。