提高nginx安全性方法
发布时间 - 2017-08-23 00:00:00 点击率:次n
ginx是当今最流行的web服务器之一。它为世界上7%的web流量提供服务而且正在以惊人的速度增长。它是个让人惊奇的服务器,我愿意部署它。
下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的Nginx部署是安全的。
1. 在配置文件中小心使用"if"。它是重写模块的一部分,不应该在任何地方使用。
“if”声明是重写模块评估指令强制性的部分。换个说法,Nginx的配置一般来说是声明式的。在有些情况下,由于用户的需求,他们试图在一些非重写指令内使用“if”,这导致我们现在遇到的情况。大多数情况下都能正常工作,但…看上面提到的。
看起来唯一正确的解决方案是在非重写的指令内完全禁用“if”。这将更改现有的许多配置,所以还没有完成。
2. 将每个~ .php$请求转递给PHP。 我们上周发布了这个流行指令的潜在安全漏洞介绍。即使文件名为hello.php.jpeg它也会匹配~ .php$这个正则而执行文件。
现在有两个解决上述问题的好方法。我觉得确保你不轻易执行任意代码的混合方法很有必要。
如果没找到文件时使用try_files和only(在所有的动态执行情况下都应该注意) 将它转递给运行PHP的FCGI进程。
确认php.ini文件中cgi.fix_pathinfo设置为0 (cgi.fix_pathinfo=0) 。这样确保PHP检查文件全名(当它在文件结尾没有发现.php它将忽略)
修复正则表达式匹配不正确文件的问题。现在正则表达式认为任何文件都包含".php"。在站点后加“if”确保只有正确的文件才能运行。将/location ~ .php$和location ~ ..*/.*.php$都设置为return 403;
3. 禁用autoindex模块。这个可能在你使用的Nginx版本中已经更改了,如果没有的话只需在配置文件的location块中增加autoindex off;声明即可。
4. 禁用服务器上的ssi (服务器端引用)。这个可以通过在location块中添加ssi off; 。
5. 关闭服务器标记。如果开启的话(默认情况下)所有的错误页面都会显示服务器的版本和信息。将server_tokens off;声明添加到Nginx配置文件来解决这个问题。
6. 在配置文件中设置自定义缓存以限制缓冲区溢出攻击的可能性。
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
7. 将timeout设低来防止DOS攻击。所有这些声明都可以放到主配置文件中。
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
8. 限制用户连接数来预防DOS攻击。
limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;
9. 试着避免使用HTTP认证。HTTP认证默认使用crypt,它的哈希并不安全。如果你要用的话就用MD5(这也不是个好选择但负载方面比crypt好) 。
10. 保持与最新的Nginx安全更新。
# nginx
# 配置文件
# 重写
# 情况下
# 是个
# 设置为
# 是一个
# 如果你
# 是在
# 让人
# 还没有
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解Android图表 MPAndroidChart折线图
如何在阿里云通过域名搭建网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何在Ubuntu系统下快速搭建WordPress个人网站?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Laravel如何记录自定义日志?(Log频道配置)
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
JavaScript如何操作视频_媒体API怎么控制播放
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
新三国志曹操传主线渭水交兵攻略
深入理解Android中的xmlns:tools属性
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
网站制作企业,网站的banner和导航栏是指什么?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
文字头像制作网站推荐软件,醒图能自动配文字吗?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
JS碰撞运动实现方法详解
如何在阿里云部署织梦网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel如何使用模型观察者?(Observer代码示例)
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
java ZXing生成二维码及条码实例分享
Python文件流缓冲机制_IO性能解析【教程】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
实例解析angularjs的filter过滤器
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
独立制作一个网站多少钱,建立网站需要花多少钱?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
高端企业智能建站程序:SEO优化与响应式模板定制开发
Laravel怎么上传文件_Laravel图片上传及存储配置
iOS正则表达式验证手机号、邮箱、身份证号等
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
实现点击下箭头变上箭头来回切换的两种方法【推荐】
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何挑选最适合建站的高性能VPS主机?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何快速搭建自助建站会员专属系统?
HTML 中动态设置元素 name 属性的正确语法详解
公司网站制作价格怎么算,公司办个官网需要多少钱?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程

