Nginx是一个轻量级,高性能的Web服务器/反向代理和电子邮件 代理(IMAP/POP3),它可以运行在UNIX,GNU/Linux,BSD变种,MAC OS X,Solaris和Microsoft Windows上。根据Netcraft的调查数据显示,互联网上6%的域名都使用了Nginx Web服务器。Nginx是解决C10K问题的服务器之一,与传统服务器不一样,Nginx不依赖于线程处理请求,相反,它使用了一个更具扩展性的事件驱 动(异步)架构。Nginx在很多高流量网站上得到了应用,如WordPress,Hulu,Github和SourceForge。
1、一些常识
linux下,要读取一个文件,首先需要具有对文件所在文件夹的执行权限,然后需要对文件的读取权限。 php文件的执行不需要文件的执行权限,只需要nginx和php-fpm运行账户的读取权限。 上传木马后,能不能列出一个文件夹的内容,跟php-fpm的运行账户对文件夹的读取权限有关,木马执行命令的权限跟php-fpm的账户权限有关。 如果木马要执行命令,需要php-fpm的账户对相应的sh有执行权限。 读取一个文件夹内的文件,是不需要对文件夹有读取权限的,只需要对文件夹有执行权限。1、顶部配置
2、Events 模块
3、HTTP 模块
4、SERVER 模块
二、常见的方式
让木马上传后不能执行:针对上传目录,在nginx配置文件中加入配置,使此目录无法解析php 让木马执行后看不到非网站目录文件:取消php-fpm运行账户对于其他目录的读取权限 木马执行后命令不能执行:取消php-fpm账户对于sh的执行权限 命令执行后权限不能过高:php-fpm账户不要用root或者加入root组三、具体的配置
1、禁止php文件的访问及执行
2、禁止IP的访问
3、根据用户的真实 IP 做连接限制
4、 经过多层CDN之后取得原始用户的IP地址,nginx 配置
5、隐藏版本信息
6、禁用非必要的方法
7、禁用扩展名
8、合理配置响应头
Strict-Transport-Security(简称为 HSTS)可以告诉浏览器,在指定的 max-age 内,始终通过 HTTPS 访问
X-Frame-Options 用来指定此网页是否允许被 iframe 嵌套,deny 就是不允许任何嵌套发生
9、拒绝一些User-Agents
10、防止图片盗链
解释说明
1、client_body_buffer_size 1k-(默认8k或16k)这个指令可以指定连接请求实体的缓冲区大小。如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
2、client_header_buffer_size 1k-指令指定客户端请求头部的缓冲区大小。绝大多数情况下一个请求头不会大于1k,不过如果有来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓冲区,这个值可以在large_client_header_buffers里面设置。
3、client_max_body_size 1k-指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段。如果请求大于指定的值,客户端将收到一个”Request Entity Too Large” (413)错误。记住,浏览器并不知道怎样显示这个错误。
4、large_client_header_buffers-指定客户端一些比较大的请求头使用的缓冲区数量和大小。请求字段不能大于一个缓冲区大小,如果客户端发送一个比较大的头,nginx将返回”Request URI too large” (414)1、client_body_timeout 10;-指令指定读取请求实体的超时时间。这里的超时是指一个请求实体没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个”Request time out” (408)错误。
2、client_header_timeout 10;-指令指定读取客户端请求头标题的超时时间。这里的超时是指一个请求头没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个”Request time out” (408)错误。
3、keepalive_timeout 5 5; – 参数的第一个值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接。参数的第二个值(可选)指定了应答头中Keep-Alive: timeout=time的time值,这个值可以使一些浏览器知道什么时候关闭连接,以便服务器不用重复关闭,如果不指定这个参数,nginx不会在应答头中发送Keep-Alive信息。(但这并不是指怎样将一个连接“Keep-Alive”)参数的这两个值可以不相同。
4、send_timeout 10; 指令指定了发送给客户端应答后的超时时间,Timeout是指没有进入完整established状态,只完成了两次握手,如果超过这个时间客户端没有任何响应,nginx将关闭连接。12、控制并发连接
13、sysctl.conf配置
14、在防火墙级限制每个IP的连接数
15、限制Nginx连接传出
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。