Leon's blog

每天活的有趣一点

正在浏览 Linux 里的文章

WordPress遭遇密码暴力破解

抢板凳

今天发现我的blog很慢,老是不能访问,进到AWS的后台发现CPU出奇的高,使用top查看显示大部分cpu是httpd进程占用掉了。 像我这样的个人博客,又不是什么知名人士,不会有这么多访问量呀。奇怪。

tail了一下apache的access log,发现有大量的ip不停的访问wp-login.php和wp-cron.php。看样子,是在尝试请举密码呀。怎么会有这么好的闲情雅致啊!

开始我尝试在.htaccess里添加deny纪录,但是效果好像不太明显。而且过来的ip还挺多的。

后来就不停的用tail查找,过来的ip,有新的就加到iptables里去。结果加了一大堆,也不知道有没有误杀的

tail -f /var/log/apache/access-log|grep &quot;wp-login.php&quot;</p>

<p>iptables -A INPUT -s 176.32.73.25,203.87.163.28,114.22.240.134,219.160.191.119,125.198.142.158,112.211.182.193,27.252.29.108,2.133.109.118,125.198.142.158,190.232.183.165 -j DROP</p>

<p>iptables -A INPUT -s 126.43.103.137,190.233.123.206,110.168.69.24,36.70.74.217,95.5.26.102,89.211.208.97,190.43.131.87,114.187.69.123,110.55.3.178,201.238.142.88,190.236.38.134,85.185.253.13,200.232.192.182,190.43.165.126,1.4.253.128,189.191.104.129  -j DROP</p>

<p>iptables -A INPUT -s 42.124.2.225,2.184.240.116,93.63.34.217,114.49.3.214,219.110.148.88,125.60.240.234,112.202.135.117,112.105.4.5,217.219.105.248,91.212.80.170,217.219.165.25,36.238.104.147,120.60.31.149,124.122.70.108 -j DROP</p>

<p>iptables -A INPUT -s 58.213.138.131,186.79.160.147,94.20.163.250,180.190.130.101,119.46.191.21,42.118.159.104,189.154.8.49,124.120.120.85,58.9.136.173,37.218.185.184,187.142.102.138,223.204.212.16,223.205.61.135,58.89.228.59,181.65.55.52,112.204.218.181,180.94.217.91 -j DROP</p>

<p>iptables -A INPUT -s 2.146.139.228,94.183.40.67,79.175.182.21,188.34.7.46,93.33.34.215,2.180.82.80,85.119.183.223,184.147.220.2,203.158.26.86,182.52.108.198,80.78.247.92,93.170.50.174,92.114.86.81 -j DROP

iptables里添加了那些规则可以使用iptable -L查看。

如果真的有误杀的,可以通过iptables -D命令取消对应的规则。

iptables -D INPUT -s xx.xxx.xx.xx -j DROP

如果搞乱了,也可以使用iptables -F清空所有规则。

    iptables -F INPUT

关于如何使用iptables,NetTuts上有一篇很好的文章:The Linux Firewall,简要讲解了iptables的管理,还介绍了如何用iptable做NAT。

但是被动的封ip有时候还是太慢,要盯着,不能自动完成。后来就看到了这个在Wordpress里限制密码重试次数的插件:Limit Login Attempts。现在基本上能满足防止暴力破解Wordpress密码的需求了。

有好几次碰到使用Linux的md5sum命令产出的散列值,跟PHP的md5函数,或者MySQL的md5函数产生的不一样的问题.
通常比较懒,就没细想,直接使用PHP产生的算了;没想过难道算法还会有不同.

其实没有不同的算法,md5在哪里的计算方法只有一个.原因不过是因为使用md5sum时,有时候不小心会把换行符也作为计算的内容,结果实际上是散列的对象不同,自然结果也就不同了.而在Linux命令行状态下,我通常注意不到换行的存在.

以字符串’123′为例,PHP的计算结果是:

$ php -r 'echo md5("123");'
202cb962ac59075b964b07152d234b70

比如下列语句实际上是对”123\n”进行求散列,而不是对’123′求散列.

$ echo '123' | md5sum
ba1f2511fc30423bdbb183fe33f3dd0f

正确的写法应该是通过echo的’-n’选项,让echo不要输出换行符,这样结果就一样了.

$ echo -n '123' | md5sum
202cb962ac59075b964b07152d234b70

昨天不知道安装什么东西把ubuntu 11.04搞坏了。现在卡在了登录界面。不管是登录Gnome还是Unity,都一样。输入完用户名和密码以后,登录界面消失,屏幕闪了一下,然后没有进入桌面,而是又回到了登录界面。这时候通过Ctrl+Alt+F1到tty1,登录终端一切正常。

askubuntu搜了一下,大多数人建议清除GDM的配置,重装GDM。
还好有人提醒先去看看”~.xsession-errors”里有什么出错信息。结果里面有一句说im-config找不到。看来是我安装中文输入法时,不知道那一步搞错了。sudo apt-get install im-config 后, 重新登录,一切正常了。

debian 6下升级vim 7.2到7.3

抢沙发

首先确保debian上安装了python和ruby的开发包

sudo apt-get install python-dev ruby-dev liberuby-dev

下载vim 7.3的源代码

hg clone https://vim.googlecode.com/hg/ vim_src

生成配置文件. 我要使用支持python和ruby编写的vim插件, 当然也要支持多字节的环境了.

./configure –enable-rubyinterp –enable-pythoninterp –with-features=big|grep “python”

编译

make

检查一下看看python特性有没有问题

src/vim –version|grep python

安装

sudo make install

运行vim.
发现Buffer Explorer插件报错. 到官网下载更新.

缺省情况下Debian的时间是根据系统时间设置成UTC时间的,然后再根据用户的时区设置做相应的调整。这通常没有问题,但是当我通过VirtualBox来在虚拟机里运行Linux的时候,问题来了。

因为VirtualBox是根据它的宿主操作系统来设置虚拟机的系统时间的,而这并不是Debian想要的UTC时间,除非你正好在0时区。这时Debian再根据用户时区设置调整时区,时区相当于被被处理了两次。这是我就不知道被从东8区扔到什么地方去了。

修正办法是不让Debian再做用户时区调整,直接使用系统时间就可以了。这时候我们需要把/etc/default/rcS文件里的”UTC=yes”改成”UTC=no”。保存,重启,OK。不知道这样有没有别的什么副作用,先用着看吧。