太极的一些链接
旧金山州立大学 Jason 洪传陈式 http://www.youtube.com/watch?v=gxx3ByORBro
一般人只知道,太极拳的发劲要做到“松活弹抖螺旋”,其实还有两个字:冷、脆。
真正要伤人,必须要能发出“冷脆劲”。
小唐的发劲干净、利落,松活弹抖螺旋冷脆,8字兼备。
小唐在太极拳境界上,可以算是个中高层次的。
再高一个层次,螺旋劲在外表上是看不出来的。
洪老师达到了这个境界。
太极拳的服装为什么是长襟的?一个目的就是遮挡腰部的螺旋发劲。
一般人看了没什么,行家看了,就知道你的底细了,呵呵。
但,今天已经是热兵器时代了,保这个密已经没什么必要了。
就公诸于此,供本坛的各位同好参考。
陈氏太极老架一路
http://www.56.com/u16/v_MjM5MjE1NzM.html
为OpenVPN添加Fail2ban的Filter
因为错误日志只发现有下面的格式 Tue Jan 15 17:25:11 1980 user/127.0.0.1:12345 Connection reset, restarting [-1] 所以相应的filter就写为
[Definication]
failregex = .* <HOST>:[0-9]{4,5} Connection reset, restarting \[.*]
然后检测一下是否能捕捉到错误的日志
fail2ban-regex /var/log/openvpn/openvpn.log /etc/fail2ban/filter.d/openvpn.conf
没问题的话,就编辑/etc/fail2ban/jail.local 添加
[openvpn]
enalbed = true
port = 1194
logpath = /var/log/openvpn/openvpn.log
filter = openvpn
maxretry = 3
Ubuntu 8.04上Openvpn撤销证书的bug
正常情况下,在/etc/openvpn/easy-rsa的目录下,执行source ./vars 和./revoke-full client1,应该就可撤销证书了。
但是Ubuntu 8.04中的Openvpn版本比较老,撤销是会遇到出错的情况,比如下面这样。
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
error on line 282 of config file ‘/etc/openvpn/easy-rsa/openssl.cnf’
23924:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:629:line 282
解决的方法其实很简单,只需要把openssl.conf末尾[pkcs11_section ]中的所有语句全部注释掉就可以了。
然后把/keys下的crl.pem文件复制到/etc/openvpn目录下,并在server.conf中添加以下配置:
crl-verify crl.pem crl.pem记录了证书撤销的记录。
在Ubuntu 8.04上部署Subversion
Subversion可以运行在3中模式下,独立服务器模式,作为apache的一个模块,SSH的Tunnel。独立服务器需要再单独为它开端口和配置鉴权等和fail2ban的封禁,较为繁琐,而且稍占内存。作为apache的模块在配置nginx的服务器上又不方便。总体而言,利用SSH的Tunnel模式既提供了加密,又自然而然的利用的ssh的鉴权,最为简便。
1. 创建用户和用户组:
sudo groupadd subversion
sudo useradd svn -d /home/svn -m -g subversion
2. 在本地生成一对ssh密钥
ssh-keygen -q -b 2048 -t rsa -f svn_key -N “
3. 在服务器上sudo mkdir /home/svn/.ssh, 并将svn_key.pub上传到/home/svn/.ssh下
4. 修改/etc/ssh/sshd_config 在AllowUsers后面添加svn, 重启shell, sudo /etc/init.d/ssh restart
5. 安装Subversion:
sudo apt-get install subversion subversion-tools
6. 创建基本目录
svnadmin create /home/svn/repository
sudo chown -R svn:subversion repository/
7. 编辑 /home/svn/.ssh下的authorized_keys
在开头添加
command=”/usr/bin/svnserve -t -r /home/svn/ –tunnel-user=tiger”,no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding,no-user-rc
这样使整个文件成为如下的格式
command=”openssh登录时执行命令”, 权限限制参数 ssh-rsa AAAA…….dfwte== comments
svnserve -t 进入 tunnel模式,只在ssh建立连接时有效,ssh关闭是svn服务器也同时关闭。-r可以把用户限制在/home/svn/中,并使用户可以使用svn+ssh://svn@mydomain.com/myrepository访问,不用再输入svn+ssh://svn@mydomian.com/home/svn/myrepository。
–tunnel-user 只是为了便于svn记录是谁做的修改,并不需要再为tiger设置密码,如果使passwd文件有效,反而造成无法登录。这个模式下,鉴权是完全依靠SSH的。comments可以是任何内容,通常是默认的user@host格式
8.测试:
由于ssh直接登录可以制定private key的位置和名称,先用ssh验证一下
ssh -i svn_key svn@mydomain.com
正常的话应该看到
PTY allocation request failed on channel 0( success ( 1 2 ( ANONYMOUS EXTERNAL ) ( edit-pipeline svndiff1 absent-entries ) ) ) Connection to mydomain.com closed.
这说明密钥配对和svnserve都可以了。
9. 由于Mac或者命令行模式下无法在访问svn时指定密钥, 所以要把svn_key文件改回到默认文件名id_rsa,然后放到本地用户主目录的.ssh下。
然后, 运行svn info svn+ssh://svn@mydomain.com 应该就可以查看到repository的信息了。
接着可以进一步配置SVN的各种客户端,比如Mac上很漂亮的Versions。
参考文章:
1. http://wiki.flexion.org/SubversionServer.html
2. https://help.ubuntu.com/community/Subversion
3. http://svnbook.red-bean.com/en/1.4/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.sshauth
为基于Nginx的Awstats添加fail2ban保护
1. 首先,假设已经按照前文,将awstats的出错日志输出到/var/log/nginx/awstats_error.log中
2. 进入/etc/fail2ban/filter.d/目录,创建nginx-auth.conf文件,以下是其内容
[Definition]
# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = no user/password.*client\: <HOST>
user.*authentication failure.*client\: <HOST>
user.*not found.*client\: <HOST>
user.*password mismatch.*client\: <HOST>
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
3. 编辑/etc/fail2ban/jail.local文件, 添加以下内容:
[awstats] enalbed = true port = http,https logpath = /var/log/nginx/awstats_error.log filter = nginx-auth
在Ubuntu上搭建OpenVPN服务器,并配合Mac和Windows的客户端 (二)
3. 客户端的设置
1) Mac客户端
Mac可以选择免费的Tunnelblick,也有收费的Viscosity和Shimo,Viscosity的功能和Tunnelblick的功能差不多,界面则漂亮许多。Shimo也和Mac,而且可以支持CISCO的VPN。Shimo没有好的特别版本,就没有尝试。Tunnelblick可以成功连接,但是对于server推送的dns配置不能自动处理,还要自己手工编写脚本,比如这里介绍的方法,让人望而生畏,也没有试成功。
Viscosity 1.0.6是唯一尝试成功的客户端。但是配置很奇怪。在新建一个配置文件后,前面都照正常填入服务器相关参数,选择tcp, tun, enable dns, 然后选择 (一) 中导出的3个文件,ca.crt, client1.crt, client1.key,但是在Network那一栏里,除了选择Send All Traffic over VPN以外,Default Gateway竟然不是选择VPN服务器的内部地址:10.8.0.1,而是本地分配的tun0的一个p2p的虚拟设备地址10.8.0.5。(本机分配的是10.8.0.6。)只有这样才能ping 到10.8.0.1。真是令人非常不解,也浪费了很多时间在这上面,希望我的经验能替你节省些力气。
2. Windows的客户端
好像没太大悬念,直接是OpenVPN GUI。虽然界面很难看,但是很实用。编写一个client.ovpn文件到程序主目录下
client dev tun proto tcp remote youdomain.com 1194 resolv-retry infinite nobind persist-key persist-tun ca ./ca.crt cert ./client1.crt key ./client1.key comp-lzo verb 3
把三个证书密钥文件拷贝到和配置文件一起的地方就可以了。当然也可以在服务器上重新生成client2.crt和client2.key也可以. ca.crt是根证书,不用动的。否则之前的client1的密钥和证书就无效了
参考文章:
1. Running OpenVPN over Ubuntu 8.0.1
2. OpenVPN FAQ 和Howto
在Ubuntu上搭建OpenVPN服务器,并配合Mac和Windows的客户端 (一)
利用SSH Tunnel方式建立的代理服务器配置简单,用来翻墙是足够用了。但仍有一定的局限,如果被访问网站是利用Flash或是自制播放器的话,可以不遵循浏览器的设置,自行建立媒体流或是汇报本地IP。这种情况下,只有设置VPN才行。
1. 服务器设置
1) 安装OpenVPN,以及相关准备工作
这里假设openssl已经默认随ubuntu安装了,否则sudo apt-get install openssl
sudo apt-get install openvpn
然后把随安装包一起提供的配置模板拷贝出来
cd /usr/share/doc/openvpn/examples sudo cp ./sample-config-files/server.conf.gz /etc/openvpn sudo cp -r ./easy-rsa/2.0 /etc/openvpn cd /etc/openvpn sudo mv 2.0 easy-rsa #这是生成数字证书的工具包 gzip -d server.conf.gz #配置模板
2) 生成数字证书
首先修改生成证书所需的基本信息
cd /etc/openvpn/easy-rsa sudo vi ./vars
# These are the default values for fields # which will be placed in the certificate. # Don’t leave any of these fields blank. export KEY_COUNTRY=”US” export KEY_PROVINCE=”CA” export KEY_CITY=”SanFrancisco” export KEY_ORG=”Fort-Funston” export KEY_EMAIL=”me@myhost.mydomain” 这些都可以自己修改成认为有意义的内容,当然随便填填也无所谓。
然后更改默认目录权限,生成CA根证书
cd /etc/openvpn/easy-rsa/ ## move to the easy-rsa directory <pre>sudo chown -R root:admin ## 假设当前用户也是admin这个Group的 sudo chmod g+w ## 让Group成员都有写权限,否则./clean-all无法建立所需目录 source ./var ./clean-all ##主要是生成存放证书和密钥的目录 ./build-ca
在生成服务器的证书和密钥,这其中会问道密码,好像设不设都无所谓,但如果设置了,注意保留记录
./build-key-server server
生成客户端需要的证书和密钥,也会问密码,处理原则同上。
./build-key client1
接下来在创建Diffie Hellman参数,这部可能要花几分钟时间生成随机数
./build-dh
把服务器证书复制到配置文件夹下
</pre> cp ca.crt server.crt server.key dh1024.pem /etc/openvpn <pre>
再把ca.crt, client1.crt和client1.key通过ftp或者scp的方式,下载到客户端。
3 )然后就可以sudo vi /etc/openvpn/server.conf 编辑配置文件了
port 1194 # change this to whatever you need it to be # tcp or udp, never use both in the same config # tcp不会丢包,udp则不太可靠 proto tcp #routed VPN #否则需要配置bridge模式,很麻烦 #除非在服务器侧有很多其他windows主机要共享,否则 dev tun # Certificates,这些都是刚才生成的文件 ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem # Server settings,一般就用默认设置比较好,避免和本地局域网地址重复 server 10.8.0.0 255.255.255.0 # Default VPN ip range. #这句很关键,让客户端所有路由都转从VPN的默认网关 push "redirect-gateway def1" #def1也不能少,否则有时候客户端的默认网关不会变 # OpenDNS settings,也很关键。 #因为为客户端连DNS查询都通过VPN发出。 push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" # Allow clients to see eachother client-to-client #启用压缩,对时延影响不大 comp-lzo # Reduce the OpenVPN daemon's privileges user nobody group nogroup keepalive 10 120 #以下几个对连接建立影响不大 ifconfig-pool-persist ipp.txt #日志也可以改到/var/log/openvpn/下 status openvpn-status log openvpn.log
4)设置端口转发
sudo vi /etc/sysctl.conf
将其中net.ipv4.ipforward=1的注释去掉
为了不用等到系统重启才能生效,再输入
sysctl -w net.ipv4.ip_forward=1
可以用sysctl net.ipv4.ip_forward确认上述设置是否成功了。
然后 sudo /etc/init.d/openvpn restart重启服务就可以了。
防火墙设置
在原来系统的iptables_init.sh中,添加#假设服务器只有一块网卡eth0,所以无论是接收VPN请求,和向外二次转发,都用eth0这个interface iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE #VPN向Internet转发的关键 iptables -A INPUT -i tun+ -j ACCEPT #必须可以接收tun0转来的VPN内部数据包 iptables -A INPUT -i tap+ -j ACCEPT #这条主要是为了Window客户端OpenVPN GUI登录所设置的,因为其只有tap接口 iptables -A FORWARD -i tap+ -j ACCEPT #允许VPN转发 iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 1194 -j ACCEPT #允许客户端递交VPN登录请求然后清空iptables规则,并重新建立
sudo iptables -F sudo iptables -t nat -F sudo ./iptables_init.sh sudo /etc/init.d/fail2ban restart可以用一下命令看防火墙是否成功建立
sudo iptables -L -v sudo iptables -L -v -t nat
顺便给一个完整的防火墙建立脚本iptables -P FORWARD ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT iptables -A INPUT -p udp -i eth0 --dport 1194 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 1194 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT iptables -A INPUT -j DROP iptables-save > /etc/iptables.rules网卡上的配置请参考之前的配置文章
在Snow Leopard上安装64bit版lxml
主要参考了这篇文章
1. 首先,如果安装过Active Python或者Python官方安装包的话,修改以下配置,可能是为Cython作的准备吧。如果没有第三方python,这步应该可以省略
Fix the Makefile in /Library/Frameworks/Python.framework/Versions/Current/lib/python2.6/config by:
- replacing all occurences of “MacOSX10.4u.sdk” with “MacOSX10.5.sdk” and
- setting “MACOSX_DEPLOYMENT_TARGET’ to “10.6″
- 为CCFLAG 和LDFLAGS 添加 -arch x86_64
2. 然后下载并手工编译安装cython, lxml只有在有cython的时候才能顺利编译通过,虽然官方的说法cython不是必须的。
编译cython时,可以直接
python setup.py build (编译时可以看看有没有带 -arch x86_64的参数,完成后可以去build目录下挨个用file *.o查查是否有64bit的版本)
如果一切正常,就可以安装了
python setup.py install
反之,rm -r build, 再export ARCHFLAGS=”-arch i386 -arch x86_64″, 确保生成64bit版本。
有时间的话,可以make test 一下,运行一下自带的单元测试(大概要20,30分钟,不一定进行)。最后的结果应该最多只有一个failure, 就是目标环境是10.4, 而当前环境是10.6。如果一定要修正的化,前面编译时,可以先去源程序目录/Cython/Mac/DarwinSystem.py中把
os.environ["MACOSX_DEPLOYMENT_TARGET"] = "10.6"
3. 编译安装lxml
最后修改
在 lxml-2.2.4 目录中修改 buildlibxml.py:
- replacing all occurences of “MacOSX10.4u.sdk” with “MacOSX10.5.sdk” and
- setting “MACOSX_DEPLOYMENT_TARGET’ to “10.5″
- 为CCFLAG 和LDFLAGS 添加 -arch x86_64
这样lxml就会把从网上下载的libxml2和libxslt编译成带64bit的版本了。
5. Build and install lxml by issuing,(其实,正常情况下,snow leopard的编译系统会进行64bit的编译,不用处处显示指定 “-arch x86_64″
- python setup.py install –static-deps
最后可以运行一下,selftest.py 和 selftest2.py 检测一下lxml是否成功安装。这个测试很快,几分钟就可以了,正常情况应该100%通过,没有一个错误
在OSX Snow Leopard上装numpy和scipy
在Snow Leopard上,通过easy_install的模块pydev都不能自动找到,似乎easy-install.pth文件中包含的路径都不被识别。 而且系统自带的numpy会干扰scipy的编译,必须采用这篇文章采用的方法,sudo mv /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/numpy \/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/numpyX在编译scipy前把系统numpy临时屏蔽调,其他的基本可以按照官方教程手工编译,安装最后numpyx目录不能改回原样,否则import scipy中函数时python会崩溃,只能让他去了。如果要进一步测试的话,可以easy_install nosetests。然后python import numpy numpy.test('1','10') #numpy应该没有什么问题import scipyscipy.test('1','10')这项测试有一百多个error, 和1个failure。 也不知道是编译的问题,还是程序自身的问题。