9466创作助手  |   9466视频大脑  |   9466达人管家  |   Deamoy  |   意见反馈
电话:010-62987177
微信咨询:

CmsTop安全指引手册

一、   服务器安全配置

1    避免系统管理弱口令

服务器、FTPCmsTop后台、数据库等所有密码,请设置强有力密码,简单有效降低整体风险的安全漏洞,以下是关于一些强密码的建议:

§  包括数字,符号,大小写字母组合

§  密码长度应在1214个字符,如果允许,可以更长。

§  任何避免重复的密码,避免基于个人资料信息密码,如生日,姓名等。

§  定时更换密码的习惯

尽管我们一再强调密码复杂度的重要性,还依然有许多弱密码的存在。

所以伟大的webmaster一定要在日常工作中给网站工作人员加强与灌输安全管理意识

2    服务器SSH安全配置

互联网上无时不刻都有一些人四处开着扫描器进行弱密码扫描试探,SSH22端口也不例外,在服务器上执行两条指令可查看所有登录成功与失败的日志:

# 查看成功登录的日志,空格翻页,q退出

shell> last | less

# 查看登录失败的日志

shell> lastb | less

看下图血淋淋的例子,所以在安装操作系统系统并设置好密码后,最好修改SSH默认端口

(1)  修改SSH服务端口

修改SSH配置文件,将其监听端口更改为大于10000的值,发挥您的想象力:

shell> vi /etc/ssh/sshd_config

# 指定端口号

Port 22345

修改iptables软件防火墙把默认的22端口改为刚才指定的端口:

# 也可以使用 setup来进行配置iptables软件防火墙

shell> vi /etc/sysconfig/iptables

# 重启iptables,或者使用 service iptables restart

shell> /etc/init.d/iptables restart

注意:关于SSH, FTP这些端口的修改,一定要在修改后立即进行连接测试,以防由于误操作,断开了当前连接而无法再次连接主机。

(2)  禁止root账户远程登录

通过修改默认端口基本上可以阻挡99%恶意扫描信息(根据个人观察),紧接着要做的就是禁止root远程直接登录。因为通过分析扫描日志,你会发现root账户试探的次数一直是永居榜首:

shell> vi /etc/ssh/sshd_config

# 禁止root账户登录

PermitRootLogin no

      然后创建个普通账户,当我们需要远程连接的时候,先通过普通账户登录,再su -root。普通账户的用户名需要你费心思创造个奇葩的,想到admin这样的用户名请先去反思:

shell> useradd yaoniming3000

shell> passwd yaoniming3000

      使用普通账户登录服务器后执行su –切换

# 注意su后面有个减号,是同时切换环境变量的意思

shell> su –

      同样,修改完毕,还是立即进行连接测试,以防无法连接主机

(3)  限制服务器IPVPN登入

如果有条件,强烈建议配置服务器的远程登录权限只能通过特定IP段或VPN方可登入。

3    Apache PHP 安全配置

(1)  按需加载 PHP 解析

具体作法是在 httpd.conf 主配置中不加载 PHP解析,而把 AddType 配置项放到每个虚拟主机配置文件中。例如:

shell> vi /etc/httpd/conf.d/php.conf  # 取消默认PHP解析,在需要解析PHP虚拟主机中加入:

 

    AddHandler php5-script .php

    AddType text/html .php

 

      CmsTop默认的二级域名虚拟主机中,静态域名一定不允许进行PHP解析,它们包含:

www.domain.com

img.domain.com

upload.domain.com

    以及其他所有的静态发布点,客户自行做二次开发时也需遵守此项约定。Nginx依此原则进行配置。

(2)  禁用PHP敏感函数

很多木马程序和服务器攻击都是利用PHP内置的敏感函数,因此需要在配置文件中禁用这些敏感函数,以下列出一些函数,可以根据实际情况配置:

shell> vi /etc/php.ini

disable_functions =

exec,shell_exec,system,popen,escapeshellcmd,escapeshellarg,gzuncompress,proc_open,proc_get_status,show_source,gzinflate,phpinfo

      重启Apache方生效。

(3)  限制PHP 脚本的执行目录

如果网站不幸被植入了木马,通过限制PHP脚本的执行目录,可以禁止木马程序浏览操作系统的系统文件,进而产生更大的破坏,一共有两步操作:

shell> vi /etc/php.ini

open_basedir = /data/www/:/tmp/

      如果是Apache,还可以限定每个虚拟主机的执行目录

 

……

php_admin_value open_basedir "/data/www:/tmp"

 

      注意以上红色部分有差异,并且/tmp目录是必须要给的。

      重启 Apache 生效。

(4)  开启动态虚拟主机的访问日志

一定要开启所有可执行PHP脚本虚拟主机的访问日志,以便有迹可循:

 

……

CustomLog logs/admin.domain.com-access_log

 

(5)  开启PHP日志文件

在关闭display_errors后建议把错误信息记录下来,便于查找服务器运行的原因:

shell> vi /etc/php.ini

log_errors = On

error_log = /var/log/php/php_error.log  # 注意日志目录需要Apache写权限

  这个日志并不会像Apache一样轮滚,需要手动清理或写截断脚本。

4    MySQL安全配置

(1)  数据目录和数据文件的安全性

设置MySQL数据目录为700,即只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。

shell> chmod 700 /www/mysql

设置MySQL日志目录为770,即只有数据库用户和组成员可以查看

shell> chmod 770 /var/log/mysql

(2)  本地日志文件安全性

有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参数里直接带了数据库的密码,如:

shell> mysql -uroot –ptest

shell> mysqldump -uroot -ptest test > test.sql

这些命令会被shell记录在历史文件里,比如bash会写入用户目录的.bash_history文件,如果这些文件不慎被读,那么数据库的密码就会泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。

另外用户本地登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。所以必要时我们可以这样做:

shell>rm ~/.bash_history ~/.mysql_history

shell>ln -s /dev/null ~/.bash_history

shell>ln -s /dev/null ~/.mysql_history

(3)  数据库账户的配置

请不要直接使用数据库root账户来进行CmsTop数据库的管理,并配置数据库root账户只允许本地连接数据库。

针对每个数据库设置不同的用户、密码、连接限制权限,如果您不熟悉SQL可借助phpMyAdmin图形化web界面来进行配置。

mysql> select user,host from mysql.user;

+--------------+------------------+

| user         |   host          |

+--------------+------------------+

| cmstop         | 192.168% |

| cmstop         | localhost |

| root            | localhost |

(4)  数据库的外网访问

数据库一般不需要通过外网访问,所以也不需要配置外网IP,开放外网端口,当数据库与应用分开时,应该通过内网IP来进行连接。

(5)  phpMyAdmin的访问控制

使用phpMyAdmin来进行数据库管理,不要为了图方便,将该目录放置到CmsTop的系统目录中运行。

可以单独配置一个域名来进行访问,并且不要进行公网DNS解析,让外网直接访问。

二、   CmsTop系统安全配置

1    默认配置文件修改

(1)  authkey 加密密钥修改

该密钥用于Cookie数据加密,为了保证用户数据安全,请部署完毕后立即进行修改:

shell> vi cmstop/config/config.php

authkey =>                   # 请修改长度超过40并尽可能复杂的字符串

(2)  修改默认配置前缀:_cmstop

shell> vi cmstop/config/cache.php

shell> vi cmstop/config/cookie.php

shell> vi cmstop/public/img/js/config.js

(3)  个性化后台域名

请不要使用如admin,back等易于猜测的后台域名,同时我们强烈建议后台域名不要通过公网DNS解析,最好手动绑hosts文件访问。

如果有条件的话,后台更应该放置在VPN以及内网下访问。

shell> vi cmstop/config/define.php

define('ADMIN_URL', 'http://admin.domain.com/');

同时需要对应修改您的虚拟主机域名配置。

2    目录权限

目录权限的配置非常重要,80%的网站系统入侵后成功挂马,基本上是权限设置不正确引起的。CmsTop系统目录权限配置的原则为:

  1. 可执行PHP脚本的目录,不允许可写
  2. 可写的目录,不允许执行PHP脚本

这样即使黑客侵入了网站目录,也不能轻易让木马在可执行PHP脚本的目录下运行。

CmsTop需要配置可写的子目录为(截至20130830):

cmstop/data  

cmstop/public/upload  

cmstop/public/www

cmstop/public/img/apps/special/templates

cmstop/public/img/apps/special/scheme

      上述目录都是禁止执行PHP的。

(1)  目录权限配置方法

# 首先修改整个系统目录的属主与属组,很多大哥喜欢用apache:apache来修改,这就意味着Apache对任意目录和文件均有写权限,这是非常不明智的。

# root可以修改为FTPSFTP账户的用户名,这样可以保证FTP账户有写权限

shell> cd cmstop/

shell> chown –R root:apache .

# 其次对整个目录配置成目录755,文件644权限

shell> find . -type d | xargs chmod 755

shell> find . -type f | xargs chmod 644

# 最后再对需要可写的目录设置为可写

shell> chmod -R 777 data/ public/upload/ public/www/ public/img/apps/special/templates/ public/img/apps/special/scheme/

(2)  模版目录

虽然CmsTop后台提供了在线修改模版的功能,提供了一定的方便,但是一旦黑客通过其他途径拿到了后台帐号密码,并进入了后台,就可以在线修改模版并植入木马程序。

为了安全起见,我们强烈的建议用户不允许在线修改模版,因为你方便,黑客们也喜欢。

通过FTPSFTP软件来进行模版修改,同时开启FTPSFTP的操作日志。

(3)  定时检查日志与会员登录日志

作为网站webmaster,养成定时查看日志的习惯才是好同志。

通过开启CmsTop后台的操作日志,并定时查看是否有非法登入后台的管理员账户,是否有非法访问后台地址的行为。

(4)  检查后台robots.txt文件

如果后台可以通过外网直接访问,请注意检查后台访问目录的robots.txt文件,防止搜索引擎抓取,某天您发现百度能直接搜索到网站后台地址,这是很尴尬的事情啊。

shell> vi cmstop/public/admin/robots.txt

User-agent: *

Disallow: /

3    补丁更新及安全检查

CmsTop使用过程中,如发现已知的安全漏洞, 官方会在第一时间修复漏洞并提供补丁包,并通知我们的客户及时打上补丁,避免再次入侵,造成更大损失。

如果您在使用过程中发现有入侵现象,请及时与我们联系,我们会安排工程师进行网站扫描与清理工作。

如果您在使用过程中自行发现了隐藏的程序漏洞,也请及时与我们联系,我们会慷慨的赠予礼品表示感谢。

4    木马检查

如果网站因为某些原因被入侵或被挂马,可以通过以下简易手段进行排查,快速解决问题,另外也请及时联系我们的技术支持人员,进行排查。

(1)  模版文件检查

一般模版文件植入木马,都是通过访问动态脚本加载模版运行,一般都要接收外部参数,通过以下三句指令进行基本的检查:

shell> grep –rl “_REQUEST”templates/

shell> grep –rl “_POST”templates/

shell> grep –rl “preg_replace”templates/

(2)  可执行PHP目录检查

可执行PHP目录有public/apppublic/mobilepublic/wap等,同样通过以上指令进行检查,搜索的是木马的特征码。鉴于木马的变种实在是太多,就不详细举例了:

shell> grep –rl “特征” public/app

(3)  定期检查访问日志文件

通常入侵会来自于前台的动态域名,可通过以下指令对访问日志的URL进行分组排序并分析:

#查看访问次数最多的url

cat  /var/log/httpd/app.domain-access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less

      如果您有多台Web服务器,则需要分别查看。

5    数据库与网站备份

CmsTop默认提供了备份脚本,每天凌晨对网站程序和模版以及数据库进行备份,脚本文件路径请与CmsTop技术支持联系。

   网站的附件由于可能容量较大,需要客户手动备份或通过其他硬件设备支持。

   webmaster需要定时查看备份脚本是否还在正常运行。以防出现故障后无法回复。

三、   其他应用系统安全配置

如果您的服务器运行了不止CmsTop一个产品,还有如DiscuzXDedeCMS等开源产品,请及时关注这些产品的安全信息,并做好补丁工作。

另外如果您的服务器使用Apache,可以参考1.3.3进行虚拟主机的PHP执行限制,可以有效的防范跨站攻击。

猛击以下地址可查阅已知产品的漏洞:

http://webscan.360.cn/vul