设为首页 收藏本站
查看: 1813|回复: 0

[经验分享] [Nginx] – 基础安全优化 【一】

[复制链接]

尚未签到

发表于 2018-11-9 09:29:54 | 显示全部楼层 |阅读模式
Nginx基础安全
DSC0000.jpg


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界面也不会出现版本信息
DSC0001.jpg


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动态引擎服务的相关参数  

DSC0002.jpg


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;
  

DSC0003.jpg

  上面涉及的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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632669-1-1.html 上篇帖子: 利用Dockerfile构建一个nginx容器 下篇帖子: nginx1.15安装(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表