Web Digest

还有众多网络文摘,仅供个人收藏和参考

太极的一些链接

leave a comment »

洪均生一二路及推手

赵堡太极75承架

太极螺旋劲

旧金山州立大学 Jason 洪传陈式 http://www.youtube.com/watch?v=gxx3ByORBro
一般人只知道,太极拳的发劲要做到“松活弹抖螺旋”,其实还有两个字:冷、脆。
真正要伤人,必须要能发出“冷脆劲”。
小唐的发劲干净、利落,松活弹抖螺旋冷脆,8字兼备。
小唐在太极拳境界上,可以算是个中高层次的。

再高一个层次,螺旋劲在外表上是看不出来的。
洪老师达到了这个境界。

太极拳的服装为什么是长襟的?一个目的就是遮挡腰部的螺旋发劲。
一般人看了没什么,行家看了,就知道你的底细了,呵呵。
但,今天已经是热兵器时代了,保这个密已经没什么必要了。
就公诸于此,供本坛的各位同好参考。

陈氏太极老架一路

http://www.56.com/u16/v_MjM5MjE1NzM.html

Written by freshventure

January 7, 2010 at 10:46 am

Posted in 太极

为OpenVPN添加Fail2ban的Filter

leave a comment »

因为错误日志只发现有下面的格式
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

Written by freshventure

December 29, 2009 at 9:49 am

Posted in 网站|Site

Tagged with ,

Ubuntu 8.04上Openvpn撤销证书的bug

leave a comment »

正常情况下,在/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记录了证书撤销的记录。

Written by freshventure

December 29, 2009 at 9:36 am

Posted in 网站|Site

Tagged with ,

在Ubuntu 8.04上部署Subversion

leave a comment »

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 freshventure.info closed.

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

Written by freshventure

December 29, 2009 at 7:01 am

Posted in 网站|Site

Tagged with ,

为基于Nginx的Awstats添加fail2ban保护

leave a comment »

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
4. 最后重启服务即可,sudo /etc/init.d/fail2ban restart

Written by freshventure

December 28, 2009 at 11:31 pm

Posted in 网站|Site

Tagged with , ,

在Ubuntu上搭建OpenVPN服务器,并配合Mac和Windows的客户端 (二)

leave a comment »

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

Written by freshventure

December 22, 2009 at 12:04 pm

在Ubuntu上搭建OpenVPN服务器,并配合Mac和Windows的客户端 (一)

leave a comment »

利用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

网卡上的配置请参考之前的配置文章

Written by freshventure

December 22, 2009 at 10:02 am

在Snow Leopard安装MySQLdb

leave a comment »

主要参考文章 (1)(2)

export ARCHFLAGS=’ -arch x86_64′
cd MySQL-python-1.2.3c1
python setup.py build
sudo python setup.py install

Written by freshventure

December 21, 2009 at 7:35 am

Posted in 苹果|Mac

Tagged with , , ,

在Snow Leopard上安装64bit版lxml

leave a comment »

主要参考了这篇文章

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%通过,没有一个错误

Written by freshventure

December 21, 2009 at 6:15 am

Posted in 苹果|Mac

Tagged with , , ,

在OSX Snow Leopard上装numpy和scipy

leave a comment »

在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 scipy
scipy.test('1','10')
这项测试有一百多个error, 和1个failure。 也不知道是编译的问题,还是程序自身的问题。

Written by freshventure

December 20, 2009 at 6:28 am

Posted in 苹果|Mac

Tagged with , , , ,