加固 WordPress 安全性的几个简单方法(服务器篇)

标签: Ubuntu技巧 Linux wordpress 安全 | 发表时间:2014-08-08 18:04 | 作者:摩摩诘
出处:http://www.digglife.net

WordPress的安全性其实不错,但是如果服务器上不做一些基本的安全措施,Wordpress再安全也是白搭。现在的VPS相比几年前便宜很多,很多人都买了自己的独立主机,如果不注意安全,面对满世界全天候的自动攻击脚本,网站被挂马,主机变毒瘤都是分分钟的事。

等中招之后再排查就异常困难了,因为可能有问题的点太多,逐一排查也不见得不会有漏网之鱼。但是其实只要注意一些最基本的安全因素,就能避免大部分低级攻击,免去不必要的麻烦。

前些天整理自己的服务器的时候发现一些问题,这里总结一下,以后再搬服务器也好参考。

1. 更改SSH默认端口

网上很多自动攻击脚本通过循环试错来破解账户密码的,尝试的端口都有限,所以如果把SSH端口改成4位数的,比如8964就不错,能够规避多数暴力破解攻击。注:UNIX系OS的端口限制是0~2^16-1(也就是0~65535), 一些端口已经被知名软件占用了,但是只要自己的服务器上不冲突就行。

编辑 /etc/ssh/sshd_config 文件:

1
2
3
#把默认的22更改成自定义的数字
# What ports, IPs and protocols we listen for
Port 8964

2. 禁用root SSH登录

目的同上。Root密码的破解是攻击脚本的首要目标,所以还是新建一个私人账户,赋予sudo权限即可。嫌每次输入sudo麻烦,加上NOPASSWD指令,影响不大。

1
2
3
#/etc/ssh/sshd_config
#把默认的yes改成no
PermitRootLogin no

3. 取一个独特的用户名

攻击脚本会尝试很多用户名,一部分是常用服务的默认用户名,还有一些是人们喜欢使用的用户名。所以像admin,tester,jack什么之类的用户名就不要了。下面是我从log中取出来的一小部分,常用服务帐号,常用人名什么之类的都有,只有想不到,没有做不到,实在叹为观止。

1
2
3
4
5
6
7
8
9
10
11
Jul 27 06:29:17 localhost sshd[10509]: input_userauth_request: invalid user old [preauth]
Jul 27 06:31:04 localhost sshd[10511]: input_userauth_request: invalid user oracle [preauth]
Jul 27 06:37:30 localhost sshd[10516]: input_userauth_request: invalid user abc [preauth]
Jul 27 06:38:25 localhost sshd[10518]: input_userauth_request: invalid user oracle [preauth]
Jul 27 06:45:40 localhost sshd[10534]: input_userauth_request: invalid user postgres [preauth]
Jul 27 06:53:46 localhost sshd[10557]: input_userauth_request: invalid user rose [preauth]
Jul 27 07:07:42 localhost sshd[10570]: input_userauth_request: invalid user testing [preauth]
Jul 27 07:09:57 localhost sshd[10581]: input_userauth_request: invalid user abcd [preauth]
Jul 27 07:15:04 localhost sshd[10586]: input_userauth_request: invalid user test [preauth]
Jul 27 07:18:01 localhost sshd[10591]: input_userauth_request: invalid user lion [preauth]
Jul 27 07:22:24 localhost sshd[10593]: input_userauth_request: invalid user testuser [preauth]

4. 禁用不必要的Shell

检查 /etc/passwd。一般来说,预置帐号除了root之外都是没有shell的,如果你发现类似man,game,sys这样的系统帐号的最后一列都是 /bin/sh 之类的shell,那就得注意一下了。各个系统的nologin位置不一样, locate一下。Ubuntu默认是 /usr/sbin/nologin或者 /bin/false,这两者有一点 细微的区别

1
2
3
4
5
6
7
#系统帐号示例
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin

4. 使用公钥认证

如果使用上面的这些还不够,还可以彻底禁用密码登录的方式,采用公钥认证登录。当然,使用这种方式之后不方便随时随地管理,但是一个自用的web服务器,随时登录的需求几乎没有,在自己经常用的几台电脑上有密钥就好了。

1
2
3
4
5
6
7
#/etc/ssh/sshd_config
#公钥认证方式一般默认是开启的,无需更改
RSAAuthentication yes
PubkeyAuthentication yes
 
#密码认证方式默认是yes,改成no
PasswordAuthentication no

5. 停用不必要的服务

比如 vsftpd ,如果之前使用过现在不需要了,记得停用,然后彻底禁用掉。少一个服务少一个威胁。另外,像 FTP 这种服务,能不用就不用了,需要传文件的时候SCP足矣。可以用 netstat 命令查一下有监听端口的服务,然后排除不必要的。

1
2
3
4
5
6
7
8
9
10
11
12
zshengli@digglife:~$ sudo netstat -tlunpActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8001          0.0.0.0:*               LISTEN      7044/uwsgi      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      23725/mysqld    
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      27557/memcached 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8281/nginx: worker 
tcp        0      0 0.0.0.0:xxxx            0.0.0.0:*               LISTEN      16421/sshd      
tcp        0      0 0.0.0.0:xxxx            0.0.0.0:*               LISTEN      8281/nginx: worker 
tcp6       0      0 :::xxxx                 :::*                    LISTEN      16421/sshd      
udp        0      0 127.0.0.1:11211         0.0.0.0:*                           27557/memcached 
zshengli@digglife:~$

6. 辅助服务只监听本地回环

某些服务只提供给本地的其他软件,比如 WordPress 必要的 MySQL,缓存插件用的 memcached 等等,只要是提供本地服务的,都设置为监听127.0.0.1,能规避直接的远程攻击。以 memcached 为例,配置文件为 /etc/memcached.conf ,默认监听所有IP。

1
2
3
4
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l 127.0.0.1

设置好重启服务之后惯例 netstat 检查一下。

以上这些只是最基本的服务器防护,实施起来十分简单,而且不会带来使用上的不方便。复杂的安全方式当然还有,比如使用iptables设定防火墙过滤,更改UMASK,开启Audit等等等等,但是比较复杂,多有妨碍自己方便的情况,何况一般也用不着。

对于服务器本身这一方面,如果想进一步做安全配置,可以分析一下一天的 security 相关log,RH系在 /var/log/secure ,Debian系在 /var/log/auth.log ,基本上能够了解攻击的类型,然后采取有针对性的措施。

Copyright © 2007-2014
DiggLife 有关网络和软件技巧

相关 [wordpress 安全 方法] 推荐:

9 個提升 WordPress 網站安全性的方法

- - 免費資源網路社群
How to Improve the Security of your WordPress Blog, 已取得原作者 Amit Agarwal 授權. 大約一個月前,這個部落格被黑客入侵(編按:Amit Agarwal 的網站). 而其他托管於相同主機商的網站像是 ctrlq.org 和 hundredzeros.com 也深受其害,黑客成功從網路上拿下了這些網站.

加固 WordPress 安全性的几个简单方法(服务器篇)

- - DiggLife
WordPress的安全性其实不错,但是如果服务器上不做一些基本的安全措施,Wordpress再安全也是白搭. 现在的VPS相比几年前便宜很多,很多人都买了自己的独立主机,如果不注意安全,面对满世界全天候的自动攻击脚本,网站被挂马,主机变毒瘤都是分分钟的事. 等中招之后再排查就异常困难了,因为可能有问题的点太多,逐一排查也不见得不会有漏网之鱼.

WordPress主题后门严重威胁网站安全

- - 阿里云产品博客
WordPress是国内站长非常喜欢采用的一款建站应用软件,由于其具有非常丰富的模版和插件,具有良好的可扩展性. 特别对于博客类网站,WordPress几乎成为建站首选. 在阿里云安全团队的日常运营中,我们发现,WordPress一直是黑客攻击的主要目标. 下图是阿里云云盾安全运营团队对第三方应用遭受攻击的统计(Source:第27期阿里云云盾安全运营报告,http://security.aliyun.com/doc/view/13762631.html):.

10余种提升WordPress博客加载速度的方法

- - 软矿
我们都知道一个网站的加载速度直接影响到搜索引擎爬虫对网站页面的抓取,也直接影响到网站用户体验. 网站加载速度过慢会造成搜索引擎无法抓取到页面内容而丢弃对该网站的一些页面的收录,同时可以丢失部分用户. 在月光博客读到SEOtime一篇较好的文章,小编转载过来以借花敬佛,愿对一些正在建站或者即将要建站的朋友有所帮助.

黑客能利用不安全的cookies劫持你的WordPress博客

- - Solidot
HTTPS Everywhere和Privacy Badger Firefox维护者Yan Zhu发现了WordPress的一个安全漏洞,该漏洞将允许黑客劫持你的WordPress博客. 她发现一个重要的cookies“wordpress_logged_in”在输入有效的用户名和密码后通过HTTP明文发送到WordPress的一个认证端点.

WordPress SEO 宝典

- luckerme - 我爱水煮鱼
最基本的搜索引擎优化(SEO)是很简单的,而 WordPress 程序本身的一些优势使得 SEO 变得更加容易,比如我爱水煮鱼有超过 70% 的流量来自搜索引擎,所以做好 SEO 就是流量的保证,这篇文章就给大家介绍下在 WordPress 博客中最基本的一些 SEO 要求,希望能够帮助到你. 简单来说 SEO 分为页面优化和链接建设两大部分,页面优化是基础,而链接建设则是重点,两者缺一不可.

WordPress 技巧

- - CSDN博客互联网推荐文章
WordPress字体设置方法详解.          WordPress开源程序功能越来越强大,未来我们不仅仅可以使用wordpress制作个人博客,还可以使用wordpress程序制作CMS内容管理系统. 很多 Wordpress主题SEO优化的非常好,而且还附带了一些adsense广告位置,让不懂SEO以及代码修改的朋友轻松解决博客优化以及广告位放置问题.

WordPress SEO 宝典

- - 人人都是产品经理
最基本的搜索引擎优化(SEO)是很简单的,而 WordPress 程序本身的一些优势使得 SEO 变得更加容易,比如我爱水煮鱼有超过 70% 的流量来自搜索引擎,所以做好 SEO 就是流量的保证,这篇文章就给大家介绍下在 WordPress 博客中最基本的一些 SEO 要求,希望能够帮助到你. 简单来说 SEO 分为页面优化和链接建设两大部分,页面优化是基础,而链接建设则是重点,两者缺一不可.

WordPress 相关日志插件:WordPress Related Posts

- - 我爱水煮鱼
我们知道 WordPress 使用的 MySQL 数据库默认是不支持中文分词,所以在中文情况下产生相关日志的最好方法就是通过 Tag,而. WordPress 2.3 版本开始 WordPress 内置了 Tag 的支持. 所以根据日志含有相同的 Tag 数越多,就认为日志相关性越强,所以我根据这一原理开发了 WordPress Related Posts 这个插件,最新版已经由 Zemanta 接手继续开发了.

WordPress如何赚钱?

- 幻幽 or A書 - 36氪
WordPress是一个免费的开源博客平台,那么它是如何赚钱的呢. 创始人Matt给出了以下7点盈利来源:. 比如说为Om Malik,Allthings D这样的大公司博客提供博客托管,他们就会收取每月500美元. 有时候你可能会在WordPress平台上的免费博客内看到Google广告,不过这取决于以下3个条件都存在——访客使用的不是火狐浏览器,他已经登出WordPress账户(如果他有的话),链接源不能是WordPress平台博客(比如一个从abc.wordpress.com到xyz.wordpress.com的人不会看到任何Google广告).