如何确保web环境安全

在服务器安全方面,我涉足还很浅,只是平时配置一下服务器环境,给客户解决一下问题,但很多细小的问题能避免的还是应该尽量避免,配置的时候虽然麻烦些,但能为后续省下不少麻烦事。

1、服务器选择方面

云主机的选择

如果是大型网站或者站点比较多,或者像我这样爱折腾的,那还是选择一个云主机。如果个人对服务器维护不是很在行的话,在云主机选择上,推荐像阿里云这样的主机,云盾这东西还是可以防护一下的,还可以扫描服务器安全,有漏洞了可以给你提个醒。即使被攻击了,也有自动快照可以还原,可以减少损失;

虚拟主机的选择

如果只是建个小型网站的话,比如个人博客,企业展示网站,或者一些存放个人作品的网站,那可以选择虚拟主机。虚拟主机的选择可以看品牌,比如万网这些肯定是值得信任的;如何非要选小idc商家的产品的话,那看虚拟主机面板,php虚拟主机面板比较有名的像DA,CPanel这些,java虚拟主机面板一般都是idc商家自己开发的,大牌的商家也很少提供java虚拟主机,国内的西部数码还是提供了的,这些面板都是他们自己开发的,还有国内的EasyPanel企业版也支持java虚拟主机,但是问题多多,连post请求都有问题。另外我也为公司开发了一款java虚拟主机面板EngineAdmin,目前仅支持虚拟化tomcat,后续会支持php。

2、web程序方面

如果是自己写的代码,那肯定要写健壮。

后台代码尤其是在处理用户请求方面,一定要过滤,防止非法请求;

前台代码应该避免引用不知名站点的资源,比如jquery,bootstrap这些,如果官方提供的cdn国内访问速度可以的话,首先考虑官方的,其次考虑一些大牌企业的,比如360什么的,像国内几乎不怎么使用的googlefonts,360还是提供了cdn加速的。

如果引用了一些小站点的js或者css,那后果是不可意料的,人家站点要是关闭了呢?人家站点要是被攻击了呢?造成网站无法正常显示那还算小问题,外站的一段js可以将你的站点重定向到别人的网站,在你的网站上放置他们的广告,甚至窃取网站用户的信息。

如果使用建站程序

使用比如wordpress,dedecms,discuz这些现成的web程序,那要尽量选择新版本或者经典的版本,要即使关注官方更新,尤其是在安全方便的更新,要即使安装这些更新,或者已经被公开的程序漏洞;

3、云主机环境配置(针对云主机用户)

服务器软件选择

云主机在web环境的配置方面,在服务器软件选择方面要尽量选择稳定版,开发版可能不稳定,这方面我见过的需求不多,所以也没法扯太多。

使用独立的用户运行

在配置web程序方面,首先是程序运行的用户,这个很重要,如果是以root用户来运行的话,那后果是不堪设想的;一般会创建apache,ftp,www这样的用户来运行,其实这样还不是很安全,因为多个网站使用同一个用户运行,这个用户对多个站点的文件拥有读写权限,一个站点被攻击控制,其他站点也就没得安全可言。

所以尽量要为每个站点配置一个运行用户。如果使用Nginx+PHP-FPM运行php的,可以用每个站点创建一个php-fpm的配置文件,配置不同的运行用户。但是会给服务器造成一定的压力,根据要求来吧,毕竟安全才是第一!tomcat也一样,可以为每个站点配置一个独立的tomcat,使用不同的端口号,用不同的身份来运行站点,并放置nginx等web服务器作前端代理。

默认索引文件的配置

我见过很多站点配置了默认首页一连窜 ,比如index.html index.htm index.php 等,然后实际使用的是index.php,后来被攻击了,别人给创建了一个index.html的文件放在根目录下,最后用户访问的时候就全变了。

所以配置默认索引文件的时候不要太多,该什么就什么,这一点我配置自己服务器的时候也没有去注意,但是一定不可忽视。

文件操作限制

限制文件上传的类型,限制文件操作一些敏感的函数等。

4、站点文件权限

站点文件权限我觉得可以说是最后一道防护栏了!如果用户已经通过代码取得了web文件的读写权限,那良好的文件权限配置还是可以减少损失的。

权限配置的话,对于静态文件,比如css,js这些,尤其是js文件,最好只给予读的权限,而不给写入权限,这样即使被攻击了,也一定能更改文件的内容。云主机用户可以更改这些文件夹的所有者,改为root,也可以更改所有者的权限,只给予读的权限。

对于uploads这类需要存放用户上传文件的文件夹,给予运行用户的读写权限。

虚拟主机用户

虚拟主机用户一般没法更改文件的所有者,我们可以通过ftp工具修改文件所有者的权限:

ftp_change_mod

本文出自 全栈笔记 版权所有,你可以在保留原文地址:如何确保web环境安全 及作者的情况下到你的网站或博客。

【上一篇】
【下一篇】

您可能感兴趣的文章:

3 个回复

  1. 20136753说道:

    这东西设置的再好,都会死在一个弱口令里面。你这网站我不知道多安全,但是我知道
    define(‘DB_NAME’, ‘renyiwei’);

    /** MySQLж•°жЌ®еє“з”Ёж€·еђЌ */
    define(‘DB_USER’, ‘renyiwei’);

    /** MySQLж•°жЌ®еє“еЇ†з Ѓ */
    define(‘DB_PASSWORD’, ‘renyiwei.com’);

    /** MySQLдё»жњє */
    改改吧去。

    • 任亦伟说道:

      学弟,我是承认你很厉害。我确实对那些测试的站点用了这样的数据用户名和密码,但非本站,你攻击的那个站点是我反向代理的站点,包括本域名指向的ip所开放的3306端口也是经过端口转发的。我那些站点也没有使用WP,所以不存在你上面的代码。但还是谢谢你没有对我的数据库进行破坏,同时我也承认我在安全方面的欠缺和安全意识的单薄。

  2. 哈哈说道:

    你是杜桥的吗?

发表评论

您必须 登录 后才能发表评论。