lnmp服务器架构与安全

我们Web开发常用的LNMP架构:

就是Linux+nginx+MySQL+PHP,这几个软件都是开源软件,对企业来说成本较低;因为开源,所以安全性显得尤为重要,特别有等保要求的项目,下面是一些常见的配置:

1.服务器:

1.1Root密码:

不设置一些容易被猜到的密码,如姓名、生日、手机号等;

密码不少于8位,最好包含字母、数字、特殊符号,而且要定期修改密码;

尽量不使用root账号进行操作和运行程序,其他账号权限也要最小化;

2.MariaDB:

MariaDB是MySQL的一个分支,开源免费;centos系统的常用操作命令:

安装:yum install mariadb-server mariadb-y

启动:systemctl start mariadb

设置启动:systemctl enable mariadb

3.Php:

Php安装,如果直接用yum源安装,PHP的版本比较落后,所以要求较高的场景我们一般自己编译安装;

PHP作为编程语言,需要注意的安全方面很多,

隐藏版本号:

下面是常见的请求返回头信息:

包含php的服务器返回

此返回包含了php版本信息,

修改php.ini ,

expose_php = Off , 重启nginx后,返回如下:

不包含php的服务器返回

屏蔽报错信息:

如下代码,echo date(); 运行报错

警告错误

修改php.ini配置 display_errors = Off

重新运行,不会有任何报错信息,错误信息被屏蔽;

Httponly: 主要用来防治xss问题

xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的网站出现xss漏洞,就可以执行任意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,如果里面包含了敏感信息(身份信息,管理员信息)等,那就容易出问题

Php.ini session.cookie_httponly=true ,设置httponly后,js脚本就不能取到cookie了,

这个功能要慎用,因为你用到的js和其他一些库中可能需要cookie;

禁用函数:

通过disable_functions=phpinfo,curl_exec ,可以把容易出现安全问题的函数禁用;

开启日志:

通过日志可以跟踪到很多系统运行中的问题,php.ini中的Log_errors, syslog,可以开启系统日志;

时间设置:

时间上的误差在运维上会产生安全问题,如分析日志;所有服务器的时区、时间设置都要正确;

PHP的时区设置,在php.ini中,

如果不设置,默认为UTC事件,也被成为格林威治标准时间(Greenwich Mean Time,GMT),都与英国伦敦的本地时间相同。而北京正好位于时区的东八区,早于UTC8个小时,北京时间设置

代码里设置:

date_default_timezone_set(‘PRC’);

php.ini配置

date.timezone = PRC

4.nginx:

nginx作为现在最流行的web代理服务器,很多站点都在用,所以nginx的安全也非常重要,为了隐藏服务器信息,需要安装编译时先修改源码,

src/core/nginx.h –修改版本号信息

其他版本名等信息也在此文件做相应的修改,

也可以通过配置修改,

Error_log logs/error.log; 错误日志

http{

Server_tokens off; 隐藏版本号

Server{

Allow ip; 禁止的ip地址或地址段

Deny all;

}

}

使用https访问,现在使用http的协议会被浏览器提示不安全;

访问服务器时,服务器会通过http返回头返回服务器的名称、版本等信息,这就给别有用心的人根据版本查找漏洞,对服务器攻击提供了信息,所有我们最好把这些信息都隐藏起来;

5.Apache:

隐藏服务器版本信息:

修改配置http.conf:

ServerSignature Off

ServerTokens Prod

关闭trace功能,根据trace返回的信息可以看到服务器的一些信息,

Apache

TraceEnable Off

禁止遍历目录:

Options -Indexes FollowSymLinks

日志开启:

相关新闻

QQ渠道

技术支持:QQ2854399

关注公众号
关注公众号
微信客服
返回顶部