Category Archives: Wordpress

WordPress外挂-“Admin Menu Editor”自订WP后台选单的项目与名称

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称
  透用WordPress来架设网站是再简单不过的了,同时只要变换布景主题,立即就可让WordPress从部落格平台,变成一个购物车、企业官网、形象网站或个人作品集,虽然前台的视觉版型变了,但在WordPress的后台,还是维持着部落格的系统操作,这对于客户来说,可能一时会有些转过不来,以及动到网站的设定,造成网站出现问题,或是版型跑版….等问题。

因此梅干每次都要进行后台的调整,让使用者可以更快的上手,同时又不用担心,不小心动到WordPress设定,但每次在客制化WordPress的后台,总要花上不少时间,但现在有一个更简易且快速的方法,只需安装Admin Menu Editor的外挂,就可自行定义WorPress后台的选单项目与位置,甚至还可以变更选项的名称,如此一来就能让使用者,更直觉的了解每个操作的项目,同时也不用担心动到网站的设定,因此有需要修改WordPress后台的朋友,这只外挂决不容错过。


Step1
首先进到WordPress后台,并从外挂中输入外挂的名称“Admin Menu Editor”。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step2
找到后,再点立即安装,这时WordPress就会自动下载并启动外挂。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step3
当外挂启用后,在设定的选项下会看到Menu Editor的选项。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step4
进入Menu Editor的设定面板后,就会自动抓出目前WordPress后台的所有管理项目,这时点右上的三角形图示,就可依照所需的选单名称加以命名。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step5
当一切都修改后,再按右上的储存钮,将设定给储存起来。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step6
储存完毕后,重新整理一下后台,便会看到,原来的文章就会变成刚所定议的名称啦!是不是超容易的呀!

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step7
甚至有些设定的选项,也可将它给隐藏起来,当选项后方出现方形的虚线框,表示该选项为隐藏选项。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step8
都设定好后,一样储存并重新整理,这时WordPress后台的选单,是否有感到精简许多,同时选项名称也更贴切使用者的需求。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称


Step9
由于将设定选项给关闭了,因此当下回要再作调整时,需手动在网列后方加入?page=menu_editor,就可再进到管理画面啦!由于这是免费版本,因此无法将设定值汇出与汇入,需付费才会再开启更多的功能,因此觉得好用的朋友,不妨也可付费升级,让Admin Menu Editor的功能更强大,同时设定更完整。

梅问题-WordPress外挂-“Admin Menu Editor”自订WordPress后台的选单项目与名称

杀手级 WordPress 体检项目:101 个建立新网站的超简易捷径!

转自:https://free.com.tw/killer-wordpress-checklist/

你正在与 WordPress 专案奋战吗?棒极了!在设定一个 WordPress 网站时,有许多我们必须遵照的原则,例如我先前曾经写过“安装 WordPress 后你应该做的 25 件事”或是“9 个提升 WordPress 网站安全性的方法”。 国外部落客 Nirav Dave 决定要制作一份杀手级 WordPress 检查清单,里头涵盖从启动网站前的方向、开发过程,到后续的搜寻引擎最佳化(SEO)、维护和安全性等项目。如果你想营运一个 WordPress 网站,最好可以参考这份清单,来确保这些项目都已经完成。


快速检视本清单涵盖的项目:

我们的“杀手级”体检清单被划分为七个主要项目,包括启动新网站、开发,以及后续如何成功维护一个 WordPress 网站。

你需要做的就是仔细按照每一个步骤走,开始吧!没有时间犹豫了。

 

一、从这开始

我们都知道正确开始的重要性。

如果你从一开始,就能正确了解基础知识,那么接下来就能进行得很顺利。因此,请确保你有系统地按照以下的步骤前进,以获得最佳效果。

1-1. 选择虚拟主机
根据你的需求来选择一个合适的虚拟主机。一些热门的选项包括 Bigrock | Bluehost | HostGator

1-2. 下载 WordPress 最新版本:
从 WordPress.org 官方网站来下载 WordPress 正体中文版

1-3. 使用 FTP 工具:
最好的 FTP 客户端软体,下载 FileZilla

1-4. 线上或本机?
选择一个合适的开发环境,然后安装 WordPress。你有两个选择:使用 XAMPP 安装于本机电脑,或是把网站托管在一个虚拟主机。

 

二、WordPress 准备清单

那么你准备好要开始了吗?

这可能是突然出现在你脑海中的第一个问题。这份检查列表回答了这个问题。无论你是初学者,或是 WordPress 专家,这份特殊的列表将有利于开展一个新的 WordPress 网站。

2-1. 选择正确的目录:
选择一个目录,或安装在 public_html。不要使用“root”或“WordPress”等名称。

2-2. 变更资料表名称:
使用随机产生的字元/数字组合来命名,取代预设的 wp_ 资料表名称。有需要可以试试看 Change DB Prefix 外挂。

2-3. 使用独特的登入帐号/密码:
避免使用 admin/admin 来做为管理员的帐号/密码。或者,你可以参考以下范例:

2-4. 从搜寻引擎隐藏你的测试网站: 
请确认已在“设定 -> 阅读”内勾选“阻挡搜寻引擎索引这个网站”,以确保能将你的网站从搜寻引擎隐藏。

2-5. 额外步骤:
当你安装完成,这里有一些额外项目必须做。

  • 使用免费的 SeedProd Coming Soon 外挂或 WP Maintenance Mode 外挂来建立一个“Coming Soon(即将开站)”画面。
  • 现在,你必须在“设定 -> 一般”里进行一些变更。选择 WordPress 网站位址是否要包含 www 或者不要。

     

     

    // 把 non-www 网址重新导向 www,将以下代码加入 .htaccess。
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    // 把 www 网址重新导向 non-www,将以下代码加入 .htaccess。
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
    RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]

2-6. 设定预设日期、时间:
别忘记更新时区、时期格式,在“设定 > 一般”。

2-7. 更新网站标题:
很重要的是记得在“设定 > 一般”底下更新网志标题和描述。

2-8. 变更媒体设定:
在“设定 > 媒体”底下,取消勾选“将我所上传的档案安排为以‘月’及‘年’为基准的目录” 选项。

2-9. 变更网志分类:
同样的,在“文章 >分类”底下,重新命名“未分类” ,并为文章设定一个预设分类。

2-10. 以密码保护测试网站:
为你的测试网站增加安全性,可以安装 Password Protected 外挂。

2-11. 删除范例设定档:
最后,别忘记把范例设定档移除,wp-config-sample.php 在你的根目录底下。

2-12. 额外步骤:

  • 开启除错模式(Debug Mode)

     

     

    define(‘WP_DEBUG’, true);
  • 尽可能使用 WordPress 预先载入的第三方 JS 库。
  • 做为管理员,你应该能够上传/删除媒体档案,依照你的需求安装新外挂。
 

三、WordPress 开发清单

现在来到最重要的确认项目。

有为数众多的设定和变更选项必须在建立网站后进行,用以让一个网站符合你的需求。这就是为什么,我们把 WordPress 上线清单列为最重要的步骤,即便是非常微小的部分,也千万不要错过。

3-1. 移除预设内容:
在这里,第一件要做的工作是把 WordPress 预设内容移除,像是文章、回响等等。

3-2. 建立一个网站地图(Sitemap):
下一步,以记事本、Word 或 Excel 建立一个网站地图逻辑,并根据此地图加入页面,像是关于我们、联系我们等等。

3-3. 在网址使用连接号(-):
确认你在网址使用“-”而不是下底线“_”。

3-4. 加入网志分类:
在“文章 > 分类”底下,新增适当的网志分类。

3-5. 加入标签、媒体:
在你加入网志分类后,你就可以加入适当的文章、标签和媒体档案。

3-6. 更新选单:
然后,根据前面设计的网站地图来加入选单,选单功能在“外观 > 选单”。

3-7. 使用 ALT 标签:
别忘记为所有网站图片加入 alt 标签。你也可以使用 Search Friendly Images 外挂。

3-8. 加入电子报订阅:
为电子报订阅加入 Email 表单功能。你也可以使用 Newsletter 外挂。我们使用 Jetpack 内建的订阅模组。

3-9. 建立一份外挂列表:
帮你想要安装的外挂建立一份列表。一些建议的外挂如下:

3-10. 加入社交网站图示:
加入社群网站的图示或链结,像是 Facebook、Twitter、Google+、Pinterest、LinkedIn 等等。你也可以使用 AddThisShareThisShare Bar 外挂。

3-11. 加入社交网站 Feeds:

3-12. 建立社交网站页面:

3-13. 为置顶文章加入特殊样式:
让置顶文章跟一般文章的样式不同,以确保它们能发挥应有的效果。更多资讯可以参考 RoadtoBlogging.com

3-14. 检查内容是否破坏版面:
确保文章内的图片不会破坏内容栏位,或太大挤压到内容画面。在这种情况下,使用 Overflow: Hidden 可以解决问题。

3-15. 高亮作者回响:
确保作者回响以不同样式显示。 可以参考 WPBeginner 写的这篇文章:Highlight Author’s Comments

3-16. 使用大头贴(Gravatars):
检查使用者头像或 Gravatars 可以正确显示。TodayMade.com 在这里有完整说明。

3-17. 加入回响已关闭讯息:
回响表单能够正确被“回响关闭”之类的讯息取代。

3-18. 建立 404 页面:
另一件重要的事情是确保 404 页面已经建立而且自订完成。到 1stwebdesigner.com 查看如何在 WordPress 李建立一个自订的 404 页面。

3-19. 测试搜寻页面:
请检查搜寻页面是否能被使用者存取。直接开启 http://yoursite.com/?s=Test 来检查。

3-20. 使用、测试分页链结:
测试文章分页 WP-PageNavi 外挂是否运作正常。

3-21. 加入网站图示(Favicon):
使用 Custom Favicon 外挂加入自订网站图示。

3-22. 使用面包屑(Breadcrumb):
别忘记使用面包屑来提供更简易的导览。这是 WordPress SEO by Yoast 外挂的一部份。

3-23. 连结 Logo:
在首页连结公司的 Logo 图示。

3-24. 移除 Lorem Ipsum(测试文字):
最后,确认你已经移除网站内的所有测试文字。

 

四、WordPress 上线清单

恭喜!你终于把棘手的开发流程完成了!

现在,你必须做好准备才能顺利让你的网站上线,而不会出现任何问题。你要知道,在实际让网站上线前,会有许多的步骤必须遵循,我们已经把所有你需要的细节都放在同一个地方,让你更容易进行。

只要按照这些步骤走,就能让网站轻松上线!

4-1. 采取备份:
当你将你的网站上线,最重要的是定期备份。你可以使用外挂来建立备份:BackUpWordPress(免费)| BackupBuddy(付费)| WordPress Back to Dropbox(免费)。

4-2. 检查内容结构:
检查结构与内容,是否包含了页面、分类、网址、送出表单等等。

4-3. 更新管理员 Email:
在“设定 > 一般”底下,更新管理员的电子邮件地址,同时也检查社交网站、联系资讯内的管理员 Email 是否正确。

4-4. 安全性:
请确保所有资料皆处于安全位置,像是密码强度、档案和资料夹权限等等。使用 iThemes Security 外挂。

4-5. 确认跨浏览器相容性:
检查你的网站是否能在不同浏览器通过相容性测试。免费试用 Cross Browser Testing

4-6. 允许网站被搜寻引擎抓取:
在“设定 > 阅读”下取消选取“阻挡搜寻引擎索引这个网站”选项,让网站可以被搜寻引擎爬虫抓取。

4-7. 停用“即将开站(Coming Soon)”页面:
启用外挂 SeedProd 然后停用即将开站页面。

4-8. 测试响应式设计:
确保你的网站能在行动装置浏览。执行 Google’s Mobile Friendly Test

4-9. 检查载入速度:
你也必须改进页面载入速度,从 Google’s Page Speed Insights 获得更多说明。

4-10. 压缩图片:
使用 TinyPNGWP Smush 外挂来压缩 PNG 和 JPG 档案,让图片尺寸减少 50%。

4-11. 使用最新的 WP 版本:
确认你已经使用最新版本的 WordPress。如果不是,在网站上线前先升级吧。

4-12. 升级外挂:
在网站上线前把使用的所有外挂更新到最新版本也是相当重要的。

4-13. 在新分页开启链结:
检查你的所有外部链结是否都会在新分页开启。使用类似下面的原始码。

<a href="#" target="_blank"></a>

4-14. 检查破损链结:
记得检查网站是否有无法连结的超链结,也可以使用 Broken Link Checker 外挂来检查。

4-15. White Label(白标签,选用):
如果你为客户开发一个 WordPress 网站,可以使用 White Label CMS 之类的外挂来改造 WordPress 登入页面。

4-16. 上线:
当所有步骤都完成后,你可以准备让网站上线了!

 

五、WordPress SEO 清单

你或许已拥有一个 WordPress 网站,但如果没有适当的进行搜寻引擎最佳化(SEO),那么它可能就不那么完美了。

藉由我们提供的全面性搜寻引擎最佳化确认项目,你就不用再去其他地方学习 SEO。

仔细照着每个步骤走,你就能得到一个搜寻引擎最佳化的网站。

5-1. 管理 301 重新转向:
使用 Redirection 外挂来协助你管理网站的 301 重新导向。

5-2. 允许网站被搜寻引擎抓取:
在“设定 > 阅读”里将网站能见度开启,如果你之前还没这么做。

5-3. 使用 H1 标签:
确认你在每个页面只有使用一个 H1 标签。

5-4. 使用 H2 标签:
也确认在你的内容标题使用 H2 标签。

5-5. 将 Alt 加入图片:
别忘记在网站所有图片加入 Alt 标签。你也可以使用 Search Friendly Images 外挂。

5-6. 测试 XML Sitemap 网站地图:
检查 WordPress SEO Plugin 内建的网站地图功能有没有正常作用,或者安装 Google XML Sitemap 外挂。

5-7. 检查 Robots.txt:
下一步,很重要的是确认 Robots.txt 已经存在而且最佳化。更多资讯可参考 ElegantThemes.com

5-8. 压缩图片:
使用 WPSmush.it 外挂来调整图片大小。

5-9.  www 或 non-www:
将“www”重新导向至“non-www”网址,或者相反,只要选择其中一种格式。

5-10. 注册网站管理员工具:
如果你已经发现任何网站的问题,注册 Google 网站管理员工具并修复这些问题。请确保你已经提交“www”和“non-www”版本。

5-11. 测试面包屑:
确保面包屑链结可以正常运作。

5-12. 限制 Meta 标签 Title 部分:
另一件事是确保 Meta Title 只有 55 个字元长度,包括空格。WordPress SEO 有内建这项功能。

5-13. 限制 Meta 标签 Desc 部分:
一样地,Meta Description 只能包含 155 个字元长度,包括空格。

5-14. 使用 LSI 关键字:
LSI 关键字(Latent Semantic Indexing, 隐含语意索引) 对于 SEO 非常重要。确认你已经置入足够的数量在内容里。使用 Google Keyword PlannerUberSuggest.orgGoogle 搜寻来找寻 LSI (提示:在完成搜寻后于页面底部寻找关键字)。

5-15. 检查双重内容:
非常重要的是确保你的内容原创,而且网站内没有多重内容。使用 CopyScape

5-16. 互连内容:
互相连结也是 SEO 里相当重要的一个环节。因此,确保你有网站的内部连结。

5-17. 连结至外部链结:
拥有外部链结并连到其他网站资源也是很重要的。

5-18. 最佳化网站:
再一次提醒,使用 GTMetrixPingdom 等工具来最佳化你的 WordPress 网站。因为它能帮你节省一些时间,用来清除错误。

5-19. 改善页面载入速度:
使用 Google’s PageSpeed Insights 来帮忙你改善页面载入速度。

5-20. 确认响应式设计:
使用 Google’s Mobile Friendly 来测试你的网站能在行动装置上正常浏览。

5-21. 使用 Schema 产生器:
利用 Schema Creator 外挂来为网站内容加入结构化资料。

5-22. 建立短网址:
为页面选择一个更短的链结,例如:http://www.sitename.com/killer-wordpress-checklist/。

5-23. 提交 Local Listing:
如果你的网站是关于在地商家,请确认已经它提交到 Google 我的商家

5-24. 重新检视分析:
别忘记加入 Google 分析,然后重新检视取得的资讯。

5-25. 检查页面内容:
检查所有 OnPage SEO 相关内容,在网站上线之前。有一篇必读的文章,是来自 Backlinko.com 的 Brian Dean“On-Page SEO Guide”。

5-26. 校对内容:
在内容上线前,确保你的网站整体内容的拼写、语法是否正确。

5-27. 使用 CDN:
明智的作法是使用 CDN 网路,像是 MaxCDN 以确保更好的速度和可用性。(编按:如果不想付费,可以考虑使用 WordPress 提供的免费 CDN 服务“Photon”)

5-28. 从流量分析排除 IP:
Google 分析里将家里和办公室的 IP 位址排除。 更多关于排除内部流量的方法可以参考 Google 分析说明

5-29. 加入社群分享图示:
别忘了在 WordPress 网站的所有页面加入社群媒体图示。你也可以使用 AddThisShareThisShare Bar 外挂。

 

六、WordPress 安全清单

现在让我告诉你,安全性是网站开发非常重要的一个层面。

因此,在决定将 WordPress 网站公诸于世前,确保你已经过严格的安全检查是当务之急。透过这个清单,你会学到保护网站免于恶意威胁的外挂和附加设定。

6-1. 防止目录存取:
防止进入所有目录,把以下程式码加入 .htaccess 档案里。

# 防止目录浏览
Options All -Indexes

6-2. 监测网站效能:
利用 P3 – Plugin Performance Profiler 外挂来取得你的网站效能报告。

6-3. 删除安装和升级档案:
删除 /wp-admin/install.php 和 /wp-admin/upgrade.php 在每次 WordPress 安装或升级后。

6-4. 限制可疑的登入尝试:
透过 Limit Login AttemptsLogin Lockdown 外挂来限制登入尝试次数,把有问题的登入拒于门外。(编按:Jetpack 内建的“保护”功能可以善加运用)

6-5. 使用 iThemes Security:
我们强烈建议你使用最全面的安全外挂—iThemes Security,因为它是免费的,而且能发现已知的所有安全问题。

6-6. 保护你的 wp-config.php 档案:
正如 wp-config.php 档案包含了你的网站所有保密细节,不惜一切保护它是非常重要的。一个简单的方法来保护这个档案,只要把下面程式码加入伺服器的 .htaccess 档案。

<files wp-config.php>
order allow,deny
deny from all
</files>

6-7. 停用布景主题和外挂编辑器:
如果你想从控制台内停用编辑器链结,你可以把以下程式码加入 wp-config.php,其他人就无法在控制台内直接编辑布景主题 。

define( 'DISALLOW_FILE_EDIT', true);

6-8. 隐藏你的 WordPress 版本:
把你当前使用的 WordPress 版本隐藏起来是非常重要的。将以下程式码加入你的 functions.php  档案里。

function remove_version() {
 return '';
}
add_filter('the_generator', 'remove_version');

6-9. 隐藏登入错误讯息:
登入错误讯息可能会暴露你的网站,使骇客得到更多关于帐号密码正确、错误的资讯,反之亦然。隐藏登入错误讯息是明智的选择,只要把以下程式码加入 functions.php 。

function wrong_login() {
 return 'Wrong username or password.';
}
add_filter('login_errors', 'wrong_login');

 

七、WordPress 维护清单

到这里,你已经完成了大部分对于 WordPress 网站的检查。现在,你必须知道如何有效的维护它。此维护清单将让你的网站在运作时更顺利,记得定期进行检查,以确保它的功能没有任何问题。

7-1. 清理垃圾回响:
使用 Delete Pending Comments 外挂来解决数以千计的垃圾回响。(编按:一般情况下其实使用 Akismet 外挂就绰绰有余)。

7-2. 测试表单:
测试你的联系表单,使用它传送一次资料看看有无问题。

7-3. 检查坏掉的链结:
使用 Chrome 浏览器的 CheckMyLink 扩充功能和 Broken Link Checker 外挂来检查你的网站是否有损坏的链结。

7-4. 控制文章版本:
使用 Revision Control 外挂来取得你的文章版本系统完整控制权。

7-5. 回覆回响:
确保你已经检查了你的回响,回答了读者的问题。

7-6. 更新外挂:
把外挂升级、更新到最新版本。

7-7. 采取定期备份:
别忘记使用外挂来备份最新资料库和档案,包括 BackUpWordPress(免费)| BackupBuddy(付费)| WordPress Backup to Dropbox(免费)。

7-8. 检查 Google 分析:
定期检查 Google 分析纪录有无任何变化。

7-9. 检查网站管理员工具:
同样地,定期检查 Google 网站管理员工具

7-10. 检查系统资源使用情形:
使用 P3 – Plugin Performance Profiler 外挂来监控你的资源使用情形。

7-11. 监控统计:
使用 WP Statistics 外挂来监控你的 WordPress 网站统计。

7-12. 进行安全检测:
WP Security Scan 是一个很好用的外挂,可以扫描你的 WordPress 安装并给予一些安全上的建议。这个外挂也会检查以下部分:

  • 密码
  • 档案权限
  • 资料库安全性
  • WordPress 控制台保护

7-13 其他:
如果你已经完成以下所有项目,但还希望可以为网站增加额外的附加功能,那么请按照下面的步骤,将程式码加入 wp-config.php:

– 停用除错模式:

define('WP_DEBUG', false);

– 停用 WordPress 更新:

// 完整停用自动更新
define( 'AUTOMATIC_UPDATER_DISABLED', true );
// 停用所有核心更新
define( 'WP_AUTO_UPDATE_CORE', true );

– 控制文章版本:

// 限制储存的文章版本。限制为 10 个。
define('WP_POST_REVISIONS', 3);
// 完整停用文章版本功能。
define('WP_POST_REVISIONS', false);

– 清空垃圾:

// 每七天自动清除。
define('EMPTY_TRASH_DAYS', 7);
// 完整停用垃圾桶功能。
define('EMPTY_TRASH_DAYS', 0);

– 增加记忆体限制:

// 将记忆体限制设定为 64 MB。
define('WP_MEMORY_LIMIT', '64M');
// 将记忆体限制设定为 96 MB。
define('WP_MEMORY_LIMIT', '96M');
// 将记忆体限制设定为 128 MB。
define('WP_MEMORY_LIMIT', '128M');

– 设定自动存档时间间隔:

define('AUTOSAVE_INTERVAL', 300 );

 

Bonus下载免费 WordPress 检查清单 PDF 档(英文),这份文件会教你如何利用本文列出的七个最重要的 WordPress 体检项目。包括两个 Bonus 章节:1. 值得一读的文章、2. 便利工具。

这份清单很长,没错吧?

但这正是我们希望带给你的,一份详尽的 WordPress 检核列表,无论你是 WordPress 开发者、设计师和使用者,它都能派上用场。

你可以下载这份清单的部分内容,取决于你的需求,将它用于你的 WordPress 网站。

我们在这份检查列表里分享了所有关于 WordPress 的知识。现在,轮到你告诉我们:

  • 这份清单的那部分对你来说最实用?
  • 你认为我们还可以增加或补充那些内容?

如果你有任何可以加入这份清单的部分,欢迎提供你的建议!只要在回响部分留下你的想法,我们就会收录你的意见并扩充这份体检清单。

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

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
zhu@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 
zhu@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 ,基本上能够了解攻击的类型,然后采取有针对性的措施。