加固 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 方法 服务器] 推荐:

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

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

优化WordPress速度 为服务器和访客减压

- - 神刀网
如果你用wordpress来做CMS站点那么你如果用主机托管那么一定杯具了,用VPS内存小了宽带小了也麻烦. 其他人都是教了一招,这次我汇集百家所长,十招齐发,十管齐下,勇者无敌. 大家多说时间就是生命,可能几秒钟的等待就会让网站失去一个访客,对于网站的速度你不能等. 1.Cookie的静态化制作 约有80%至90%的时间,访客要花费大量的时间等你的WordPress加载静态内容.

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

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

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

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

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 分为页面优化和链接建设两大部分,页面优化是基础,而链接建设则是重点,两者缺一不可.

linux服务器出现大量TIME_WAIT的解决方法

- - 操作系统 - ITeye博客
今天突然发现系统的访问速度变得缓慢,反复查找原因,发现服务器存在大量的TIME_WAIT连接. 通过netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’命令进行查询,反馈结果为:. 显然TIME_WAIT 的数量过于异常.

Erlang服务器内存吃紧的优化解决方法

- - CSDN博客系统运维推荐文章
问题提出:服务器100万人在线,16G内存快被吃光. 查看进程数目是否正常,是否超过了erlang虚拟机的最大进程数. 查看节点的内存瓶颈所在地方. 显示内存大部分消耗在进程上,由此确定是进程占用了大量内存. (以输出text方式启动etop,其间隔为1秒,输出行数为20行,按照内存排序. 这里spawn一个新进程,目的是输出etop数据时不影响erlang shell 输入.).

使用Zabbix监控MySQL服务器方法

- - 行业应用 - ITeye博客
      从Zabbix 2.2开始,Zabbix官方已经支持了MySQL监控,但是MySQL监控默认是不可用的,需要经过额外的设置才可以使用. Kaijia将Zabbix换到了新的服务器时候性能绰绰有余,于是决定充分发挥剩余的内存和SSD性能,把MySQL、Apache、PHP-FPM等的监控也开起来.