[Nginx] – 基础安全优化 【一】

2016年3月8日15:09:57 1 2,107 views
摘要

本文主要介绍,Nginx一些基础的安全选项设置及优化,通过简单的优化可以让nginx更安全可靠

广告也精彩

Nginx基础安全

[Nginx] – 基础安全优化 【一】

1,Nginx版本号信息隐藏

所有软件都在更新迭代,但是线上环境最主要的还是稳定,所以我们不会盲目最新,更愿意选择一个持续维护的稳定版,但没个版本都会有漏洞,如果不更新软件,又让知道了我们使用的版本,就等于把我们的漏洞,都告诉给他们了,这样非常危险。
故此,要修改Nginx的版本信息,或隐藏,给敌人一种假象

[root@web02 ~]# vim /application/nginx/conf/nginx.conf
http{
    server_tokens off;
}
#我们在http标签端开启即可

没修改之前

[root@localhost home]# curl -I www.etiantian.org
HTTP/1.1 200 OK
Server: nginx/1.12.2
    Date: Fri, 16 Mar 2018 09:29:17 GMT
    Content-Type: text/html
    Content-Length: 2781
    Last-Modified: Tue, 13 Mar 2018 08:21:13 GMT
    Connection: keep-alive
    Vary: Accept-Encoding
    ETag: "5aa789f9-add"
Accept-Ranges: byte

修改后结果(需要重启生效)

[root@localhost home]# curl -I www.etiantian.org
HTTP/1.1 200 OK
Server: nginx   ##版本号消失
    Date: Fri, 16 Mar 2018 09:26:19 GMT
    Content-Type: text/html
    Content-Length: 2781
    Last-Modified: Tue, 13 Mar 2018 08:21:13 GMT
    Connection: keep-alive
Vary: Accept-Encoding
ETag: "5aa789f9-add"
Accept-Ranges: bytes

修改为后浏览器访问404界面也不会出现版本信息
[Nginx] – 基础安全优化 【一】

2、nginx默认运行用户

有的时候我们都已root去运行nginx,当黑发利用nginx的漏洞而获取了root权限,这时就很麻烦了,所以在此之前我们就需要对nginx用户就行降权,使用普通用户
法·1::修改配置文件

user nginx nginx; ##写入配置文件

法2:直接在./configure 编译的时候定义

./configure --prefix=/application/nginx-1.6.3/ --user=www --group=www`

3、优化nginx服务器的worker进程数量

worker进程是工作的进程,它的数量也是nginx效率的主要因素之一,通过调整参数,来提高nginx的并发能力,worker进程受制于master进程管理;

参数说明:

 有关worker_process参数的官方说明如下:
syntax:    worker_processes number:#此行为参数语法,number为数量
default:    worker_processes 1    #此行意思是不配置该参数,软件默认情况为1
context:    main               #此行为worker_processes参数可以放置的位置
worker_processes为定义worker进程数的数量,建议设置为CPU的核数或者cpu核数*2的进程数,具体情况要根据实际业务来进行选择。除了要和CPU核数的匹配外,和硬盘存储的数据以及系统的负载也会有关,设置为CPU的个数或核数是一个好的起始配置

4、优化绑定不同的Nginx进程到不同CPU上

默认nginx会对进程分配到各个不同cpu上,但如果这个CPU工作压力大,他就不会很只能的切换到其他CPU上去工作,所以我们这边手动的去指定

worker_processes  1;
worker_cpu_affinity 0001 0010 0100 1000;   #4个代表4核心
#worker_cpu_affinity就是配置nginx进程CPU亲和力的参数,即把不同的进程分给不同的CPU处理。这里0001 0010 0100 1000是掩码,分别代表1、2、3、4核cpu核心,由于worker_processes进程数为4,因此上述配置会把每个进程分配一核CPU处理,默认情况下进程不会绑定任何CPU,参数位置为main段

5、Nginx事件处理模型优化

Nginx的连接处理机制在于不同的操作系统会采用不同的I/O模型,在Linux下,Nginx使用epoll的I/O多路复用模型,在Freebsd中使用kqueue的I/O多路复用模型,在Solaris中使用/dev/poll方式的I/O多路复用模型,在Windows使用的是icop,等待。
**要根据系统类型选择不同的事件处理模型,可供使用的选择的有“use **[kqueue|rtsig|epoll|/dev/poll|select|pokk]”。

Nginx epool和apache select有什么区别?

http://www.tuicool.com/articles/AzmiY3
宿管大妈的例子
具体配置如下:

events {
#events指令是设定Nginx的工作模式及连接数上限
use epoll
}
#use是个事件模块指定,用来指定Nginx的工作模式,Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作迷失,kqueue和epoll是高效工作模式,不同的是epoll用在Linux平台,而kqueue用在BSD系统中。对于Linux 2.6内核推荐使用epoll工作模式
根据Nginx的官方文档建议,也可以不指定事件处理模型,Nginx会自动选择最佳的事件处理模型服务。

6、fastcgi相关参数调优(配合PHP引擎动态服务)

fastcgi参数是配合nginx向后请求PHP动态引擎服务的相关参数

[Nginx] – 基础安全优化 【一】

Nginx Fastcgi相关参数 说明
fastcgi_connect_timeout nginx与后端fastcig服务器连接超时时间,默认为60s,时间设备不要过大,否则跟进连接的多少会占用资源越多
fastcgi_send_timeout nginx与fastcgi返回数据超时时间,即在规定时间内后端服务器必须传完所有数据,否则,nginx将断开这个链接,默认60S
fastcgi_read_timeout nginx从fastcgi读取相应超时时间,在建立成功后,nginx等待后端服务器的相应时间,nginx队列等待时间
fastcgi_buffer_size 设置fastcgi设置缓冲区大小
fastcgi_buffers 设定用来读取或冲去大小及缓冲区数量。默认值fastcgi_buffers 8 4 8k
fastcgi_cache nginx 开启fastcgi缓存功能,名字叫nginx,缓存可以降低负载,防止502,单也会有副作用,比如平凡更改,变更不及时等
fastcgi_cache_path 缓存目录
fastcgi_cache_vaild 跟进不同的返回头,进行缓存时间设定
fastcgi_cache_min_user 设置请求几次之后将被缓存,例如fastcgi_cache_min_user 1;请求1次 就缓存

fastcgi cache资料:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache

7、PHP 优化设置:

在http{}里面

fastcgi_connect_timeout 240;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#fastcgi_temp_path /data/ngx_fcgi_tmp;  需要有路径
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;

PHP缓存 可以配置在server标签和http标签

fastcgi_cache ngx_fcgi_cache;
 fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key http://$host$request_uri;

[Nginx] – 基础安全优化 【一】
上面涉及的2个模块地址
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffer_siz
http://nginx.org/en/docs/http/ngx_http_proxy_module.html

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 烤关 1

      棒棒哒