in Linux

WordPress VPS 安全防护笔记

今天中午吃饭回来习惯性SSH登录上VPS看了看主机情况,发现php-fpm的CPU占用率居高不下,我是又惊又喜,难道我的博客被收录疯狂转载了嘛?(双手托头仰望星星状)

赶紧打开站长工具查下实时访问情况,发现今天的浏览量和平时一样少嘛。那么……事有反常,必有可疑!

因为是php-fpm的CPU占用率较高,所以首先查了查php-fpm.log记录,没有发现异常。

再从nginx下手,看看网站的访问日志vi /home/wwwlogs/itony.me.log

一大票的login.php提交请求,一秒2次,这必须是被盯上了啊……

很明显的暴力破解,通过不断尝试弱口令访问构造POST请求来猜密码,由于Wordpress默认的后台登陆没有校验码,也没有最多尝试登陆次数的限制,所以想要破解也是相当容易的事情了。

防止暴力破解,一般的方法如下:

  1. 首先当然是足够强的密码(建议使用LastPass等登陆自动生成管理),防止被轻易猜到。
  2. wp-login.php默认登陆地址修改——连登陆地址都没找到,对方如何提交请求嘞?
  3. 设置校验码机制,提高伪造请求的难度。
  4. 设置最大重试次数,超过限制次数后(在一段时间内)禁止目标访问
  5. 对于高频(异常)请求(例如这种高频POST请求wp-login.php的),从服务器底层做限制ip访问
  6. wp-login.php访问做口令验证,这样就就能在nginx这一层挡住大部分请求。

对于[2]登陆地址修改,不能简单修改掉wp-login.php文件名,等我试验好了再补上。

对于[3]校验码机制,可以直接安装插件SI CAPTCHA Anti-Spam,安装后记得在设置中启用验证在登陆页面

对于[4]登陆重试限制,安装Simple Login Lockdown插件即可,默认情况下重试5次后限制登陆1小时。(无效!)Limit Login Attempts 这个插件还没试过,晚上回去比较下。

最后这个[5]其实和防止DDOS有类似之处,可能需要对nginxiptables做相应配置,今晚回去看看。

其他需要注意的地方

我仔细查看最近两天 nginx 的access.log后,发现对方也尝试访问了p.php(服务器探针)、phpmyadmin(数据库管理默认目录,还好之前已经改过了),和index.html(lnmp安装包默认首页),这些都是服务器安装完成后留下的工具,却很有可能被骇客利用。

建议将探针p.php和phpmyadmin都修改为较长的无意义随机字符串,毕竟需要登录的情况不是很多,而且还有浏览器的自动补全和书签嘛。

index.html里将原内容清空掉,给对方留句话吧:)


上述的修改都十分简单,修改完成后再次观察服务器状态,cpu终于回归到正常水平了,访问日志里也没有了对方的身影。

虽然看上去没有被攻破,但出于安全考虑,最好抽空彻底检查一遍服务器,看看是否有被挂马或留下后门。

最后,谢谢他给我上的一课。

追加内容 XD


给 wp-login.php 添加 htpasswd 验证

htpasswd 密码在线生成
将生成后的代码保存至/usr/local/nginx/conf/htpasswd

添加配置protectWPLogin.conf

在vhost主机配置文件中include protectWPLogin.conf;
重新加载nginx配置:service nginx reload

SSH 安全加固

防止 Root 密码暴力猜解

修改root账户密码:passwd root
添加新用户:useradd 用户名
设置用户密码:passwd 用户名
以后SSH连接时使用新用户登陆,然后su root提权

禁止 SSH 使用 Root 登陆

vi /etc/ssh/sshd_config
把PermitRootLogin中的yes改为no
重启服务service sshd restart

更换 SSH 登陆端口号

vi /etc/ssh/sshd_config
Port 22
Port 指定新的端口号
重启服务service sshd restart
使用新的端口号登陆,删除原22端口然后再次重启服务。

防止 SSH 暴力破解

安装即可:yum install denyhosts,查看已屏蔽IP:sudo cat /etc/hosts.deny | wc -l
ubuntu 参考这篇:ubuntu 14.04 安装 denyhosts
有能力的话,推荐安装更好的 sshguard

防止 PuTTY 超时断开 SSH

PuTTY右键->ChangeSetting->Connection->设置超时秒数

其他待整理

配置Nginx防止直接用IP访问Web服务器
LNMP笔记:阿里云32位 CentOS 5.4 配置 LNMP环境
3分钟检测Linux VPS网站文件的安全
Linux上iptables防火墙的基本应用教程

参考

警惕 WordPress 登录密码暴力破解
VPS 防止 SSH 暴力登录尝试攻击
WordPress – Brute Force Attacks

原创文章,采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
转载请注明:转载自 Tony's blog,原文网址:https://itony.me/728.html