python 使用base64加解密

1.最简单的加解密实例,字符串

import base64 

str1 = ‘hello'

print str1

str2 = base64.b64encode(str1)

print str2

str3 = base64.b64decode(str2)

print str3


2.针对文件加解密

import base64

f1=open('1.txt','r')

f2=open('2.txt','w')

base64.encode(f1,f2)               #加密,把f1的内容加密后写入f2

#base64.decode(f1,f2)            #解密,把f1的内容解密后写入f2

f1.close()

f2.close()


采用rsync+inotify,实现多台web数据动态同步

背景:由于无存储共享设备,web集群中的代码均存放在本地,最终导致web节点之间的数据无法一致。

解决办法:采用rsync+inotify,实现多台web数据动态同步

解决思路:比如有a、b、c、d四台web,为解决哪台服务器为源数据服务器,我们在a服务器上安装rsync+inotify,然后将一个二级域名指向a服务器,这样以后网站编辑、开发人员之间访问二级域名进行日常网站更新,a服务器在检测到本地有数据更新时,便动态(触发式)向其它服务器发送更新数据

选择rsync+inotify的几大理由:在常规的数据同步应用案例中,大多数人会选择使用rsync来完成数据同步,笔者选择rsync+inotify的理由如下
1、服务器性能:rsync只能实现定时更新,无论网站有无文件更新,rsync都会按着定时任务去检查文件是否有更新,当数据文件较大时会使服务器性能下降;而rsync+inotify为触发式更新,也就是说只有当某个文件发生改动时才会更新,这样一来对服务器性能影响较小
2、数据实时性:如果选择rsync,每隔多长时间同步一次数据是个问题,时间越短,对性能影响就越大。时间太长,用户/编辑无法接受。采用rsync+inotify可实现实时更新,当a服务器文件有更新时,其它服务器立即更新

关于inotify介绍
Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify 是一种强大的、细粒度的

、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。必须内核支持,触发更新,对系统影响很小。

利用这种机制自己可以简单写一个,web杀毒,写文件的时候查看文件内容,根据关键词或者加密,判断文件。性能有所影响。

 

inotify 可以监视的文件系统事件包括:
IN_ACCESS,即文件被访问
IN_MODIFY,文件被 write
IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可写文件被 close
IN_CLOSE_NOWRITE,不可写文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,文件被移走,如 mv
IN_MOVED_TO,文件被移来,如 mv、cp
IN_CREATE,创建新文件
IN_DELETE,文件被删除,如 rm
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
IN_UNMOUNT,宿主文件系统被 umount
IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)
注:上面所说的文件也包括目录。


步骤:

环境拓扑
a:192.168.1.101
b:192.168.1.102
c:192.168.1.103
d:192.168.1.104
注:数据源服务器为a,目标服务器为b、c、d



一、目标服务器安装rsync (在b、c、d服务器上操作,安装配置均一样)

安装rsync
#tar zxvf rsync-3.0.8.tar.gz
#cd rsync-3.0.8
#./configure && make && make install


配置rsync
#vi /etc/rsync.conf    加入如下内容

uid = root
gid = root
use chroot = no
max connections = 20
strict modes = yes
log file = /var/log/rsyncd.log                             #指定日志文件,默认交给syslog。不想要的话,就关闭它,日志也很多。syslog里面
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log format = %t %a %m %f %b       
[web]
path = /usr/local/nginx/html/
auth users = rsync
read only = no
hosts allow = 192.168.1.0/24
list = no
uid = root
gid = root
secrets file = /etc/rsync.passwd
ignore errors = yes

创建认证
#vi /etc/rsync.passwd
rsync:rsync

#chmod 600 /etc/rsync.passwd

启动rsync,启动后使用netstat查看,会发现系统已启动873端口
# rsync --daemon --config=/etc/rsync.conf   

加入开机启动
# echo "rsync --daemon --config=/etc/rsync.conf" >>/etc/rc.local



二、源服务器安装rsync+inotify (在a服务器上操作)
安装rsync(仅安装即可,不需配置)
#tar zxvf rsync-3.0.8.tar.gz
#cd rsync-3.0.8
#./configure && make && make install
#echo "rsync" > /etc/rsync-client.passwd
#chmod 600 /etc/rsync-client.passwd


安装inotify
#tar zxvf inotify-tools-3.13.tar.gz
#cd inotify-tools-3.13
#./configure && make && make install

#vi /etc/rsync-web.sh   加入如下内容
#!/bin/sh
SRC=/usr/local/nginx/html/
DES=web
WEB2=192.168.1.102
WEB3=192.168.1.103
WEB4=192.168.1.104
USER=rsync
/usr/local/bin/inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F                
do
rsync -ahqzt --password-file=/etc/rsync-client.passwd  --delete $SRC $USER@$WEB2::web
rsync -ahqzt --password-file=/etc/rsync-client.passwd  --delete $SRC $USER@$WEB3::web
rsync -ahqzt --password-file=/etc/rsync-client.passwd  --delete $SRC $USER@$WEB4::web

done

#chmod +x /etc/rsync-web.sh
#nohup /etc/rsync-web.sh &       //必须使用nohup放入后台执行,否则关闭终端后此脚本进程会自动结束




三、测试
在a服务器/usr/local/nginx/html目录下进行增、添、改、删文件,看b、c、d服务器是否能得到同步

内网渗透利器--reDuh(webshell跳板)简单使用说明

很给力的工具,就是速度稍微有点慢,也不怕被墙。

 

作者:sai52[B.H.S.T]

国外大牛的作品,偶顺手写了个使用说明。E文好的看原文  http://www.sensepost.com/research/reDuh/

这个工具可以把内网服务器的端口通过http/https隧道转发到本机,形成一个连通回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。

本机-------客户端---------(http隧道)-----------服务端------------------内网服务器

服务端是个webshell(针对不同服务器有aspx,php,jsp三个版本),客户端是java写的,本机执行最好装上JDK。

把客户端文件解包,这里我把它放到E盘的TEST文件夹


图01

把服务端的webshell上传到目标服务器。


图02

目标服务器在内网,开了终端服务。


图03

命令行下用客户端连接服务端

E:test>java reDuhClient 目标服务器域名 http 80 /WEBSHELL路径/reDuh.aspx

liunx下面

chmod +x reDuchClient.jar

./reDuchClient.jar 目标服务器域名 http 80 /WEBSHELL路径/reDuh.aspx

现在版本更新了,命令也有所改变,自己看一个帮助吧。或者直接程序文件不加参数,会给你提示的


图04

新开一个命令行,用NC连接本机1010端口。

H:>nc -vv localhost 1010


图05

连接成功会有欢迎提示,之后输入命令

>>[createTunnel]1234:127.0.0.1:3389

前面的1234是本机连接用的端口,中间的ip地址是目标服务器的(可以是webshell所在服务器也可以是和它同内网的服务器),后面的3389是欲连接目标服务器的端口。

成功后两个命令行窗口都会有成功提示。


图06


图07

这时通道已经建立,你连接本机的1234端口就相当于连接到目标服务器的3389端口了。


图08


图09

数据的传递过程


图10

需要注意的是用此工具转发数据速度很慢,连接的时候应尽量把mstsc的颜色设置调低些。

reDuh客户端下载  reduhclient-0.3.zip
reDuh服务端下载  reduh-server-all.gz

自动备份上传ftp服务器

#!/bin/bash
filename=date +%Y%m%d.tar                                                         #文件名称为日期
find /data/ -mtime +30 | xargs tar -cf $filename                                 #在/data目录中,查找30天内没有修改的文件,并打包
gzip -9 $filename                                                                              #使用gzip压缩
ftp -n << EOF                                                                                   #交互登录
open 192.168.0.1
user key1088 123456                                                                       #key1088 为username,123456为password
put /data/$filename.gz bakfile/$filename.gz                                      #上传到bakfile文件下面
bye
EOF
rm -rf $filename.gz

mysql cpu占用高的问题

今天发现一台近期MYSQL机器CPU占用很高。
进入mysql模式
show processlist;
工作量也不大啊,就几条语句。
copy tmp table。。。。。
观察了一个
写临时的表的和GROUP BY语句很多
解决方案:添加临时表大小或者优化sql语句
增加临时表MYSQL最后增加 tmp_table_size值
默认tmp_table_size 32M
tmp_table_size = 128M
重启,负载好多了

python 小脚本

#!/usr/bin/env python
import os

dirpath="/data"
ext=".php"
key="system"
x=[]
y=[]
z=[]
def _isdir(path):
    for i in os.listdir(path):
        if os.path.isdir(path+'/'+i):
            _isdir(path+'/'+i)
        x.append(path+'/'+i)    
def _exfile(file):
    if file[-4:]==ext:
        y.append(file)
def _file(file1):
    f=open(file1,'r')
    for i in f:
        if not i.find(key) == -1:
            z.append(file1)
    f.close()
_isdir(dirpath)
for i in x:
    _exfile(i)
for a in y:
    _file(a)
abc=set(z)
for i in abc:
    print i

php_admin_value 函数

&nbsp;
为了安全,将上传文件的临时目录加入到php_admin_value open_basedir后面:
<VirtualHost *:80>
&nbsp;&nbsp;&nbsp; php_admin_value open_basedir "/usr/local/apache/htdocs/www:/tmp"
&nbsp;&nbsp;&nbsp; php_admin_value safe_mode On
&nbsp;</VirtualHost>
注意:两个目录之间是冒号隔开。
即使拿到该站点的webshell也看不到其他站点的东西。

move_uploaded_file不受open_basedir的限制,所以不必修改php.ini里upload_tmp_dir的值。

linux下RRDTool安装方法

一、使用yum安装:
在 /etc/yum.repos.d/下面新建dag.repo文件在文件中输入源地址:
[root@hmg2 yum.repos.d]# cat dag.repo
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
enabled=1
[root@hmg2 yum.repos.d]#yum -y install rrdtool
这样就可以完成RRDTool安装……
二、软件包安装:
先yum安装所要的库文件:
[root@hmg2 yum.repos.d]#yum install cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel
然后下载rrdtool包,安装:
[root@hmg2 src]#wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz
[root@hmg2 src]#tar -zxvf rrdtool-1.3.1.tar.gz
[root@hmg2 src]#./configure –prefix=/usr/local/rrdtool && make && make install
运行rrdtool –v测试安装成功没有:
[root@hmg2 src]#rrdtool -v //可以看到RRDTool的用法以及版本信息

三、另一种yum安装
[root@hmg2 src]#wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
[root@hmg2 src]#rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
[root@hmg2 src]#yum -y install rrdtool*

mysql数据库删除后,网站连接数据库正常。

今天,(vmware里的)网站程序怎么也连接不上了,提示连接不上数据库,之前好好的,没有做什么操作啊。
密码是正确的,终端能连接上,就是php连接不上,php也没有什么问题啊。郁闷死了。怒之,删mysql数据库,重建。
rm -rf /usr/local/mysql/var/mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #直接删除的数据
mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/var
mysql -u root -p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #进入mysql模式
show databases;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #有其他数据库
可笑的是,现在网站能访问了,网站连接数据库的用户密码没有修改。
快速进入mysql表
use mysql
select user,host,password from user;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #确定是创建的,没有其他的用户。
mysql -u 任意用户 -p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #任意用户,空密码能进入
mysqladmin -uroot password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #初始化密码,提示连接localhost 失败,0.0.0.0:3306正常监听。
看mysql日志正常,有点小郁闷。没有初始化密码前,不需要验证码。只要有对应的数据库就可以吗。晕。
&nbsp;