给VPS找了个新的软件源

最近在折腾服务器的https连接,于是在apache,lighttpd,nginx之间来回折腾,可是VPS上怎么都支持不了tls1.1和tls1.2(更新的协议,更加安全),我就郁闷了。然后发现pi上的apache支持tls1.2,于是打算将VPS的服务器也换成Apache。可是折腾了半天之后,好不容易在VPS上弄好Apache,Virtualhost的https连接也没问题了,但是却依旧无法支持tls1.1和tls1.2,我就纳闷了。

做了大量的Google之后,终于发现了问题,原来是openssl版本的问题,VPS上的openssl版本是1.0.0e,但是要支持tls1.1和tls1.2,openssl的版本要求1.0.1,我嘞个去,明明aptitude update之后没有新软件的提醒……

在折腾了很久之后,也尝试过编译openssl之后还是不行,一怒之下,换个软件源!看之前openssl的编译日期已经是11年10月的事了,没理由源那边还没有更新……

然后根据Ubuntu的wiki,修改了/etc/apt/sources.list
替换成了下面这些:

deb http://archive.ubuntu.com/ubuntu/ quantal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ quantal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ quantal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ quantal-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ quantal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ quantal-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ quantal-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ quantal-backports main restricted universe multiverse

根据说明(Ubuntu 官方更新服务器(欧洲,此为官方源,国内较慢,但无同步延迟问题,电信、移动/铁通、联通等公网用户可以使用)),这应该是没有延迟问题的。

保存之后aptitude update一次,哗啦哗啦的满屏幕滚完之后得到一份报告,有800多个更新……

当时心里就一百万头草泥马奔腾而过……

果断的更新,然后……lighttpd在reload一次之后居然就支持tls1.1和tls1.2了!但是apache仍然不知道配置文件里面的TLSvT1.1和TLSv1.2是何物……

看来需要继续研究……

将博客的https连接加强了

嗯,前几天已经强制了对博客使用https访问……感觉很好很强大,博客的等级突然就高起来了。

今天偶尔发现一个网站(https://www.ssllabs.com/ssltest/index.html),可以检查网站的安全性,于是兴冲冲的去测试了一下,结果发现了几个小问题(主要的,更零碎的就没管了)。

  • 启用了一种长度较短的加密算法;
  • 没有提供完整的证书链;
  • 可能受到BEAST攻击;

前面两个的话好说,稍微查了一下网络就ok,而且startssl也提供了完整的安装教程(lighttpd Apache nginx),略后悔没有仔细看。

问题是最后一个,BEAST攻击究竟是什么啊……

上网做了很多很多的Google,还打错字了,打成了beats,于是魔声总是出来捣乱。

最后,在一个网站(http://permalink.gmane.org/gmane.linux.debian.devel.security/16698)找到了一份方案,看起来像是一份邮件的备份。

里面提到了lighttpd的解决办法,就是在配置文件里面指定一下加密的算法,并且让服务器优先使用某些算法,就可以组织这种攻击了。

ssl.cipher-list =  "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
ssl.honor-cipher-order = "enable"

应用了之后,再去做测试,果然BEAST攻击的提示没有了。

 

SSLLab测试结果

SSLLab测试结果

编译了一个在RaspberryPi上用的seafile client

seafile官方网站:http://seafile.com

参考:官方wiki

在VPS上,使用着dropbox来备份数据,表示用着用着用的很舒服,后来入手了raspberrypi之后,当然也想在pi上弄一个,但是dropbox并没有提供源代码,只提供了基于x86的二进制文件,所以其他平台都不能使用,相当的怨念。

后来看到了一个很神奇的类似软件,叫做seafile,提供了跟dropbox差不多的服务,而且client和server的源码都能弄到,马上就兴奋起来了,弄一个出来给我的Pi玩吧~

然后参照着官方的wiki将全部的包都给编译出来了,根据wiki,有两个包是编译的时候需要的(不过看起来是运行的时候也需要的)。后来想了想,干脆做成安装包吧,于是稍微研究了一下,做了几个安装包顺便放出来。

ccnet_1.2.0-1_armhf.deb
libsearpc_1.0.1-1_armhf.deb
seafile_1.4.5-1_armhf.deb

下一步着手研究那个server怎么编译……

截图-seafile

截图-seafile

终于知道为毛用Opera访问博客的时候总是不安全了

尼玛死,终于知道为毛经常在访问自家博客的时候Opera提示说“服务器试图应用安全措施,但没有成功”了。

都是防火墙惹的祸!!!
草泥马啊,总是干掉了到*.wordpress.com的链接啊,为毛啊!!!
明明上面有超多超多的有用资料啊!!!
blogspot也是啊!!!
看着看起来很有用的资料点进去之后说无法链接到服务器啊!!!!

经过opera的“检查元素”,发现在加载页面的时候,加载了一个来自jetpack.wordpress.com的资源,结果妥妥儿的访问失败,然后opera就自动的加载了本地的叫error的资源,于是……“哎~这页面上的资源不是全部都是来自加密的安全连接啊~安全措施失败”。跪……

linux挂载samba储存

入手了RaspberryPi之后,发现容量果断的不足,这时候就是挂载文件系统的时候了。由于不同的系统之间的差异,软件包维护的不同,造成了挂载的命令稍微有点不一样。

RaspberryPi的话,samba并没有注册smbfs,而是使用了cifs(或许这个才是正常通用版?),所以,mount的用法稍微有点不一样

mount.cifs <remotetarget> <dir> -o <options>
Options:
 user=<arg>
 pass=<arg>
 dom=<arg>

挂载之后就能在mount表里面看到了

root@raspberrypi:~# df -h
文件系统             容量  已用  可用 已用% 挂载点
rootfs               7.2G  6.4G  409M   95% /
/dev/root            7.2G  6.4G  409M   95% /
devtmpfs             188M     0  188M    0% /dev
tmpfs                 38M  696K   37M    2% /run
tmpfs                5.0M     0  5.0M    0% /run/lock
tmpfs                 75M   68K   75M    1% /run/shm
/dev/mmcblk0p1        56M   17M   40M   30% /boot
/dev/sda1            7.4G  4.9G  2.2G   70% /media/16b2d773-3813-4672-99b8-6fc9be6cbed9
//192.168.11.1/Work   30G   27G  1.3G   96% /mnt/Openwrt/Work

如果想自动挂载的话,就需要写到fstab里面,格式如下

//SERVER/SHARENAME /mnt/MOUNTPOINT cifs noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP 0 0

就能实现开机自动加载了。

使用checkinstall将源码打成安装包

参考:http://www.ibm.com/developerworks/cn/linux/l-cn-checkinstall/

以前就考虑过将源代码打成软件包,可是总觉得太麻烦了点。最近发现了点有趣的东西,再编译的时候就想打个包什么的吧,于是就上网查了一下。

结果就找到一个似乎挺方便的工具,叫做checkinstall。使用方法很简单,在编译软件包的时候,稍微做点修改就ok。

比如说,一般来说,到手一个软件的源码之后,就是解压、设定、编译、安装

wget PACKAGE_FILE
tar -vxf PACKAGE_FILE
cd PACKAGE_DIR
./configure [参数]
make
make install

checkinstall的话就是替换掉make install的那一步,直接checkinstall的话,可以顺便安装了,不过需要修改一下checkinstall的默认设定(/usr/local/lib/checkinstall/checkinstallrc)。
运行checkinstall之后,checkinstall会检查有没有./doc-pak,如果没有,就会问你是否创建

询问是否创建文档

外链自https://www.ibm.com/developerworks/cn/linux/l-cn-checkinstall/

之后是输入软件包的描述与信息

输入软件包的描述与信息

外链自https://www.ibm.com/developerworks/cn/linux/l-cn-checkinstall/

完成之后回车,checkinstall就会自己搞定的了。

参考链接底部有更多的资源,想深入的话可以点过去看看

在Apache上使用客户端证书认证

前阵子在nginx上做了客户端证书认证,发现满足感大大的有,于是一发不可收拾,在RaspberryPi上的Apache也做了一个。

上参考:

http://www.adintr.com/article/blog/192

http://httpd.apache.org/docs/2.2/mod/mod_ssl.html

 

首先,第一步是做证书。

这部分是老生常谈了,懒人表示继续在路由上用easyrsa做(参考1参考2),写了一份server的key和crt之后就可以拿来用了。(之前我有CA证书和客户端证书了)

然后到手3个文件, server.key server.crt ca.crt。

修改/etc/apache/sites-available/default-ssl

找到这些字段

SSLCertificateFile
SSLCertificateKeyFile
SSLVerifyClient
SSLCACertificateFile
SSLVerifyClient

去掉注释之后,分别填上 server.crt的位置,server.key的位置,”on”,ca.crt的位置,”require”,就像这样

SSLEngine on
SSLCertificateFile    /etc/apache2/certs/pi.crt
SSLCertificateKeyFile /etc/apache2/certs/pi.key
SSLCACertificateFile /etc/apache2/certs/ca.crt
SSLVerifyClient require

配置也完成了。

然后启用一下ssl的mod和这个默认的ssl配置,就是分别做一下软连接。

最后启动/重启apache服务器,好了,看到浏览器问你要证书了。

在Nginx中使用客户端证书认证

其实这个东西很久以前就想搞的了,一直没动手,直到最近总在外面跑,有时候就考虑连回家里,于是稍微动了一下手。

选nginx是因为这个服务器够轻型,做前端最好了,而且做前端的话以前也做过,有经验。

上连接:

http://blog.csdn.net/kunoy/article/details/8239653



http://blog.csdn.net/jinhill/article/details/2573777
签证书什么的感觉略微有点麻烦了,于是果断的用了openvpn的easyrsa,这套脚本帮我很轻松的完成了证书的签署。主要用到了build-ca build-key-server build-key,根据名字就看出来了,生成ca证书,生成服务器证书,生成私有证书。这部分根据不用的系统,生成的证书在不同的位置,详情再自行Google之。我是在openwrt上做的,签好的证书在/etc/easyrsa/keys下。

如果真心想认真学习签证书的话还是去做多点的Google吧。

证书和密钥到手,这时候比较推荐导出一下客户端证书,使用以下命令

openssl pkcs12 -export -inkey client.key -in client.crt -CAfile ca.crt -chain -out client.pfx

就能得到一份可以导入的私有证书了。(暂时我只找到这种笨办法)

 

证书都准备好之后就是服务器的配置了。

先要处理一下openssl.conf,主要是这几行

dir            = /etc/easy-rsa/keys         # top dir  
database       = $dir/index.txt          # index file.  
new_certs_dir  = $dir/newcerts           # new certs dir  

certificate    = $dir/ca.crt         # The CA cert  
serial         = $dir/serial             # serial no file  
private_key    = $dir/ca.key  # CA private key  
RANDFILE       = $dir/.rand      # random number file 

countryName = match  
stateOrProvinceName = match  
organizationName = match  
organizationalUnitName = match  
localityName            = optional  
commonName              = supplied  
emailAddress            = optional

上半部分是证书文件的位置,下半部分是认证哪些内容是相同,自己看着修改。

openssl弄好之后就是重头戏了,nginx本身的配置。

默认的配置文件里有https服务器的实例,参照着就能弄好一个认证服务器端证书的,只要稍微加上几行就能加上私有证书的认证了。

    # HTTPS server

    server {
        listen       443;
        server_name  Router;

	charset utf8;

        ssl                  on;
        ssl_certificate      /etc/easy-rsa/keys/ferrets.imzone.in.crt;
        ssl_certificate_key  /etc/easy-rsa/keys/ferrets.imzone.in.key;

	ssl_client_certificate /etc/easy-rsa/keys/ca.crt; #客户端证书认证所需要的ca证书

        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
	ssl_verify_client on; #启用客户端证书认证

        location / {
            proxy_pass ;
		proxy_redirect default;
        }
		location /transmission {
			proxy_pass ;
			proxy_redirect default;
		}
    }

嗯,像上面一样的配置文件我就是做的代理服务器,转发到192.168.1.1和192.168.1.1:9091,方便远程管理路由和transmission。

感觉一下子强力了好多啊。

处理了lighttp上的wordpress用Jetpack的问题

嗯,以前用着用着都是没问题的,前几天看着评论栏直接无法访问了(蛋疼的防火墙),于是干脆关掉了,可是关掉之后发现好怀念那东西的网站统计啊……好想要回来啊,于是又重新启用,结果出问题了。

得到了这样的东西

Your Jetpack has a glitch. Something went wrong that’s never supposed to happen. Guess you’re just lucky: xml_rpc-32601

Try connecting again. Error Details: The Jetpack server could not communicate with your site’s XML-RPC URL. If you have the W3 Total Cache plugin installed, deactivate W3 Total Cache, try to Connect to WordPress.com again, reactivate W3 Total Cache, then clear W3 Total Cache’s cache.

卧槽,用的好好地怎么就突然出问题了呢?

经过啦大量的搜索,找到了解决的办法,原来是跟lighttpd的rewrite有关。

根据http://en.forums.wordpress.com/topic/jetpack-instl-issue-with-ssl-and-lighttpd(要求跨越防火墙),找到了解决的办法。
有一位有类似情况的人,将rewrite规则从

#Jetpack is broken with these rules
url.rewrite-once=(
 "^/(wp-.+).*/?" => "$0",
 "^/images/.*/?" => "$0",
 "^/temp/.*/?" => "$0",
 "^/(sitemap.xml)" => "$0",
 "^/(xmlrpc.php)" => "$0",
 "^/keyword/([A-Za-z_0-9\-]+)/?$" => "/index.php?keyword=$1",
 "^/.*?(\?.*)?$" => "/index.php$1"

改成了

#Jetpack works with these rules
url.rewrite-if-not-file = (
 "^/(wp-.+).*/?" => "$0",
 "^/images/.*/?" => "$0",
 "^/temp/.*/?" => "$0",
 "^/keyword/([A-Za-z_0-9\-]+)/?$" => "/index.php?keyword=$1",
 "^/.*?(\?.*)?$" => "/index.php$1"
 )

之后,Jetpack好了。我改成这样也没问题了。

给RaspberryPi装上Samba服务器

果断地,在Pi入手之后必须的工作之一就是samba了,还记得再之前从来都不知道这东西的好,用上了之后就发现离不开了。

虽然说其实在linux环境下面的话sftp也就满足了,可是平时都是用的windows,所以还是用samba比较舒服,虽然性能实在不怎么样……

首先吐槽一下软件源那边的问题,尼玛,全世界都在说用这个“testparm”来测试samba的配置文件有没有问题,但是我照着各种教程安装上samba4-common-bin之后还是没有这东西,于是还是只能手动修改配置文件了。

因为路由上也有samba,于是果断的参考一下,发现一个很蛋疼的事实,raspbian的samba在安装完成之后,默认的配置文件里面有个

passdb backend = tdbsam

但是根据openwrt的samba配置文件来看,openwrt用的是smbpasswd,而这东西是负责密码的。

然后就我嘞个擦,这尼玛密码怎么弄?

直接参照smbpasswd来改密码的方法不可能,因为没有tdbsam这东西(为什么什么都没有!)

在网上查了很久之后发现原来密码后端换成了pdbedit,要添加用户的话就用

pdbedit -a -u <用户名>

来添加用户,添加过之后就看到了很多信息,看起来比smbpasswd高级好多。

添加完之后就基本上能用了。

剩下的就是处理一下共享文件夹,格式如下看起来像这样子

[Disks]
	path           = /media/
	comment        = Mounted USB Disks
	browsable      = yes
	read only      = no
	create mask    = 777
	directory mask = 777

然后就能看到并且读写了。

更多详细的设定就去samba的官网查吧。