见的多了

现在站点已经迁移过来了,从Wordpress迁移到了Typecho,Typecho有一个好,就是轻量化,访问快,比访问Wordpress的速度不知道高到哪里去了。

原站的文章就不迁移了,特别水。

新的开始:新的开始

原站:原站

TkinterPython的标准GUI库。Python使用Tkinter可以快速的创建GUI应用程序。

下面我们来通过一个简单的例子来用用它

#coding=utf-8
#Python3环境
import tkinter

def button():
    print('被点了')

if __name__ == '__main__':
    root = tkinter.Tk()
    root.title('测试窗口')
    root.geometry('300x250') #设置窗口大小(宽x高)
    root.resizable(False,False) #禁止调整窗口大小(宽x高)
    tkinter.Button(root,text='点我,点我',bg='#66ccff',command=button).pack()
    #bg:按钮背景色
    #command:按钮绑定事件
    root.mainloop() #窗口循环事件

638_0.png

Slowhttptest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并发将导致DoS

这次将对一台装有Lighttpd的测试服务器进行DoS攻击。

版本信息:

lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Jan 14 2017 21:07:19

安装这个工具:

sudo apt-get install slowhttptest
----------------------------------------------------
git仓库地址:https://github.com/shekyan/slowhttptest

用法与参数:

~# slowhttptest -h 
 -g      在测试完成后,以时间戳为名生成一个CVS和HTML文件的统计数据
 -H      SlowLoris模式
 -B      Slow POST模式
 -R      Range Header模式
 -X      Slow Read模式
 -c      number of connections 测试时建立的连接数
 -d      HTTP proxy host:port  为所有连接指定代理
 -e      HTTP proxy host:port  为探测连接指定代理
 -i      seconds 在slowrois和Slow POST模式中,指定发送数据间的间隔。
 -l      seconds 测试维持时间
 -n      seconds 在Slow Read模式下,指定每次操作的时间间隔。
 -o      file name 使用-g参数时,可以使用此参数指定输出文件名
 -p      seconds 指定等待时间来确认DoS攻击已经成功
 -r      connections per second 每秒连接个数
 -s      bytes 声明Content-Length header的值
 -t      HTTP verb 在请求时使用什么操作,默认GET
 -u      URL  指定目标url
 -v      level 日志等级(详细度)
 -w      bytes slow read模式中指定tcp窗口范围下限
 -x      bytes 在slowloris and Slow POST tests模式中,指定发送的最大数据长度
 -y      bytes slow read模式中指定tcp窗口范围上限
 -z      bytes 在每次的read()中,从buffer中读取数据量

攻击例子:

slowhttptest -c 1000 -H -g -o test -i 10 -r 200 -t GET -u http://your_domain/ -x 24 -p 3

(这条命令会在测试后留下一个名为test的html和csv文件,下面是html的内容)

请输入图片描述

服务器防范措施:

  1. 限制链接数
  2. 设置最大并发数
  3. 限制单位时间内的请求数
  4. 对于Nginx,可以使用 ModSecurity,http_guard,ngx_lua_waf
  5. 对于Apache,可以使用 mod_security,mod_evasive

适用于Ubuntu/Debian

1.添加源

deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main

系统版本列表:

http://ppa.launchpad.net/webupd8team/java/ubuntu/dists/

2.导入GPG key到系统验证包的合法性

sudo apt-get install software-properties-common dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886

3.更新索引与安装

sudo apt-get update && sudo apt-get install oracle-java8-installer

4.完成

java -version

5.设为默认java环境

sudo apt-get install oracle-java8-set-default

天天对终端打字,难免视觉疲劳,不如来给终端来做些美化。

Powerline是一个极棒的Vim编辑器的状态行插件,这个插件是使用Python开发的,主要用于显示状态行和提示信息,适用于很多软件,比如bash、zsh、tmux等等。

1.由于Powerline使用Python,我们要先安装Python环境

sudo apt install python python-pip

2.拉取与安装Powerline

pip install git+git://github.com/powerline/powerline

3.安装字体

Powerline使用特殊的符号来为开发者显示特殊的箭头效果和符号内容。因此你的系统中必须要有符号字体或者补丁过的字体。

wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf

将字体复制到系统字体目录

sudo mv PowerlineSymbols.otf /usr/share/fonts/

更新字体缓存

sudo fc-cache -vf /usr/share/fonts/

安装字体配置文件

sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/

4.终端支持

sudo nano ~/.bashrc (or vim .bashrc)

写入:

export TERM="screen-256color"
. /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh

5.Vim支持

sudo vim ~/.vimrc

写入:

set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/
set laststatus=2
set t_Co=256

619_0.png
619_1.png

今天又迁移了一遍服务器,在配置MySQL出现了一些问题。

在配置好MySQL后,打开站点,WordPress出现了“Error establishing a database connection”错误,这个错误在上次迁移也遇到过,于是不得不降级使用Debian8,在查询了无数次资料后,找到了原因:

由于mysql 5.0采用了一种新的密码验证机制,这需要客户端的版本要在4.0以上(PHP中的MYSQL客户端可以查看phpinfo得到),连接数据库时是用旧的密码机制,这会出现“Client does not support authentication protocol requested by server”这样的错误提示。

解决办法是新建一个账户:

create user 'user'@'localhost' identified by 'passwd';
(MySQL环境下)

但又会遇到另一个错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
(您的密码不符合当前的策略要求)

还是密码验证机制的问题,输入以下命令解决:

set global validate_password_policy=0;
(MySQL环境下)

validate_password_policy的取值:

Policy            Tests Performed
0 or LOW            Length
1 or MEDIUM    Length; numeric, lowercase/uppercase, and special characters
2 or STRONG    Length; numeric, lowercase/uppercase, and special characters; dictionary file
(默认值为1)

修改后再新建用户,给予用户相关权限即可。

现在的服务器普遍偏贵,有没有更便宜的建站方法呢?答案是有的,只要在本地搭建服务器,使用Frp或Ngrok进行内网穿透就可以了,128MB内存的Vps就足够建站了,因为Frp或Ngrok内存需求不高,128MB足以部署内网穿透服务了。

下面以Ubuntu 18.04 Amd64 为例

1.下载与解压

wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
tar -xvf frp_0.21.0_linux_amd64.tar.gz
cd frp_0.21.0_linux_amd64

对于服务端,我们只关心frps 和 frps.ini 文件。

2.配置与启动

sudo nano frps.ini (or sudo vi nano frps.ini)
------*-----*-----
#简单配置示例
[common]
bind_adddr = 0.0.0.0 #服务器地址
bind_port = 7000 #服务器端口
token = 123456 #服务器token,只有在客户端与服务器一致时,才允许客户端连接

dashboard_port = 2581 #Web页面端口
dashboard_user = admin #用户名
dashboard_pwd = passwd #密码

vhost_http_port = 80 #HTTP服务端口
vhost_https_port = 443 #HTTPS服务端口

log_file = ./frps.log #日志文件
------*-----*-----

3.运行与后台运行

./frps -c ./frps.ini

可以先测试测试

nohup ./frpc -c ./frpc.ini>nohup.out 2>&1 &

后台运行

4.客户端运行

下载客户端后解压,打开frpc.ini进行配置。

------*-----*-----
#简单配置示例
[common]
server_addr = x.x.x.x #服务器地址
server_port = 7000 #服务器端口
token = 123456 #token
[ssh] #TCP示例
type = tcp #类型
local_ip = 127.0.0.1 #本地IP
local_port = 22 #本地端口
remote_port = 6000 #远程端口
[http] #HTTP示例/HTTPS示例
type = http #http/https
local_port = 80 #80(http)/443(https)
custom_domains = www.yourdomain.com #域名,解析需指向服务器
#subdomain = test #或使用二级域名
[udp] #UDP示例
type = udp
local_ip = 127.0.0.1
local_port = 19312
remote_port = 6000
------*-----*-----

运行

./frpc -c ./frpc.ini

5.安全性

可以指定用户只能使用的端口(端口段),避免安全风险。

在frps.ini中配置:

allow_ports = 80,443,2000-3000,3001,3003,4000-50000

更多请查看Frp的Github文档!