当前位置: 首页 > news >正文

Nginx安全防护

一.核心安全配置
1.编译安装Nginx

(1)安装支持软件

        Nginx 的配置及运行需要pcre、zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保ginx的安装顺利完成。

(2)创建运行用户、组和日志目录

(3)编译安装Nginx

为主程序创建链接文件nginx

(4)添加Nginx系统服务

[root@localhost ~]# vi /lib/systemd/system/nginx.service

2.隐藏版本号

         在环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击。在隐藏版本号之前,可以使用Fiddler工具抓取数据包,查看Nginx版本,也可以在0penEuler中使用命令cur1-Ihttp://192.168.10.101/查看

修改配置文件

3.限制危险请求方法

       不安全的请求方式,是潜在的安全风险,TRACE(易引发XST攻击)、PUT/DELETE(文件修改风险)、CONNECT(代理滥用),通过正则表达式匹配请求方法,非白名单方法返回 444(无响应关闭连接)

4.请求限制(CC攻击防御)

       CC攻击,也称为连接数攻击或请求速率限制攻击,通过模拟大量用户访问来消耗服务器资源,从而使得正常用户无法正常访问网站。为了防止此类攻击,可以使用 Nginx提供的模块来限制请求速率和并发连接数

(1)使用Nginx的limit reg 模块限制请求速率

(2)压力测试验证

        ApacheBench(简称 ab)是 Apache HTTP 服务器自带的一个轻量级、易用的HTTP服务器性能测试工具。它主要用于评估服务器在并发访问下的性能表现,包括响应时间、吞吐量等关键指标。

发起测试请求,共发起 300个请求,每次发起30个请求

查看 access.log 发现大量请求日志状态码 503

5.防盗链

    防盗链是一种重要的安全设置,旨在防止未经授权的用户盗用网站(静态)资源。咨链行为不仅侵犯了内容创作者的版权,还可能导致原网站带宽和资源的过度消耗,影响正常用户的访问速度和体验。

(1).修改 Windows 的 C:\Windows\System32\drivers\etc\hosts 文件,设置域名和 IP 映射关系

192.168.10.101 www.aaa.com
192.168.10.102 www.bbb.com

(2)修改两台 OpenEuler 的 hosts 文件,设置域名和 IP 映射关系。

192.168.10.101 www.aaa.com
192.168.10.102 www.bbb.com

(3)把图片 kgc.png 放到源主机(www.aaa.com)的工作目录下

(4)编辑原网站首页文件

<html>
<body><h1>aaa It work! </h1><img src="kgc.png"/> </body>
</html>

(5)编辑盗链网站首页文件

<html>
<body><h1>bbb It work! </h1><img src="http://www.aaa.com/kgc.png"/>                          
</body>
</html>

(6)配置 Nginx 防盗链

location ~* \.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|webp|ico)$ {
root html;valid_referers  aaa.com *.aaa.com;if ($invalid_referer) {return 403;}
}

二.高级防护

1.动态黑名单

      动态黑名单是Nginx中一种实时拦截恶意请求的安全机制,它允许在不重启服务的情况下,动态更新需要封禁的IP地址或网段。相比静态配置的allow/deny指令,动态黑名单更灵活高效,适用于高并发、多变的攻击防护场景。

(1)编辑黑名单配置文件

[root@localhost ~]# vi /usr/local/nginx/conf/blockips.conf

(2).编辑主配置文件

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# nginx -t
[root@localhost ~]# nginx -s reload

(3)使用封禁ip测试访问

[root@localhost ~]# curl 192.168.10.101
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

2.nginx https配置

2.1https 概念

      HTTPS,全称HyperText Transfer Protocol over Secure Socket Layer,设计初衷是为了保证数据传输安全。国内大型互联网巨头在2016开始大力推行https,期间关于https的重大事件有

      http(超文本传输协议)是客户端浏览器与web服务器之间的通信协议,而https协议可以认为是HTTP + SSL/TLS,在http之下tcp之上加了ssl一层,用于对应用层数据的加解密。

       SSL:由Netscape公司开发,专门用于保护Web通讯。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为SSL记录协议(SSL Record Protocol)和SSL握手协议(SSL Handshake Protocol)两层。SSL经历了多个版本的迭代,包括从未公开发布的SSL 1.0、存在严重安全漏洞且现已废弃的SSL 2.0。

    TLS:是IETF(Internet Engineering Task Force,互联网工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。从历史上看,TLS对SSL首先是继承关系,后来逐步发展并取代了SSL,成为当前主流的网络安全协议。TLS经历了多个版本的演进,包括TLS 1.0、TLS 1.1、TLS 1.2和TLS 1.3

2.1.1 安全通信的四大原则

      机密性:即对数据加密,解决了窃听风险,因为即使被中间人窃听,由于数据是加密的,他也拿不到明文。

      完整性:指数据在传输过程中没有被篡改,不多不少,保持原样,中途如果哪怕改了一个标点符号,接收方也能识别出来,从来判定接收报文不合法。

      身份认证:确认对方的真实身份,即证明“你妈是你妈”的问题,这样就解决了冒充风险,用户不用担心访问的是某宝结果却在和钓鱼网站通信的问题。

       不可否认: 即不可否认已发生的行为,比如小明向小红借了 1000 元,但没打借条,或者打了借条但没有签名,就会造成小红的资金损失。 

http://www.xdnf.cn/news/640945.html

相关文章:

  • 基于Python Anaconda环境,使用CNN-LSTM模型预测碳交易价格的完整技术方案
  • 大模型与训练与微调
  • Java基础 Day20
  • 嵌入式自学第二十七天
  • ST表——算法的优化
  • TCP 和 UDP 的区别
  • 电梯调度算法详解与Python实现
  • 页表:从虚拟内存到物理内存的转换
  • C语言初阶--操作符
  • 消息队列kafka的基础概念和部署
  • C#、C++、Java、Python 选择哪个好
  • TCP 的三次握手
  • Python Day32 学习
  • 十二、【鸿蒙 NEXT】如何使用系统api实现视频压缩
  • 电子电路:电学都有哪些核心概念?
  • Oracle控制文件损坏恢复方案
  • dify_plugin数据库中的表总结
  • threejs几何体BufferGeometry顶点
  • 【报错】Error attempting to get column ‘created_time‘ from result set.解决方法
  • 手撕string类
  • 汉诺塔超级计算机堆栈区与数据区的协同
  • Docker(零):本文为 “Docker系列” 有关博文的简介和目录
  • Docker核心笔记
  • JavaWeb:SpringBoot配置优先级详解
  • 互联网大厂Java求职面试:AI应用集成中的RAG系统优化与向量数据库性能调优实战
  • 英语科研词汇的困境与汉语的崛起之光
  • 漫谈英伟达GPU架构进化史:从Celsius到Blackwell
  • vue3中使用watch
  • 什么是智能体agent?
  • Anaconda 常用命令汇总