自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

focus on security

金黄色的落叶堆满心间

  • 博客(264)
  • 资源 (7)
  • 问答 (3)
  • 收藏
  • 关注

原创 我是这样学统计学的,开篇

均值均值是表示一组数据集中趋势的数量,指在一组数据中所有数据之和再除以这组数据的个数。是反映数据集中趋势的一项指标。在统计工作中,均值和标准差是描述数据资料集中趋势和离散程度的两个最重要的度量值。均值包括:算术平均值、几何平均值、调和平均值、加权平均值、平方平均值、指数平均值、中位数。算术平均值机算公式如下,其他均值略:方差方差是各变量值与其均值离差平方的平均数,它是测算数值型数据离散程度的最重要的方法。方差的单位是样本数据单位的平方。如果数据的单位是米,方差的单位.

2021-05-12 21:55:10 889 1

原创 我是这样学统计学的,标准差和标准误关系

总体标准差已知随机变量 X 的数学期望为μ缪,标准差为σ西格玛,则其方差为:此处σ即为随机变量X的总体标准差。样本标准差上面的式子中,我们需要准确的了解随机变量X的总体分布,从而可以计算出其总体的期望和标准差。但在一般情况下,对总体的每一个个体都进行观察或试验是不可能的。因此,必须对总体进行抽样观察(采样)。由于我们是利用抽样来对总体的分布进行推断,所以抽样必须是随机的,抽样值(X_1,X_2,\cdots,X_n)...

2021-05-12 20:28:51 11914

原创 SYN小包攻击原理

在syn flood攻击场景下,为了提高发送效率在服务端产生更多的syn等待队列,攻击程序在填充包头时,IP首部和TCP首部都不填充可选的字段,因此IP首部长度恰好是20字节,TCP首部也是20字节,共计40字节。这时整个数据包长度为14字节的以太头,20字节的IP头,20字节的TCP头,再加上因为最小包长度要求而填充的6哥字节的0,共计60字节。|14字节以太头部|20字节IP头部|20字节TCP|6字节填充|4字节校验。|目的MAC|源MAC|协议类型|IP头|TCP头|以太网填充|CRC校验。

2023-11-29 10:23:50 589

原创 fastsocket提升nginx CPS性能分析

xtcp是针对网络传输性能对linux2.6.32-573内核进行优化,而fastsocket是针对单机性能优化,提升单机的cps。我们将把fastsocket的优化性能移植到xtcp中,提升其单机的cps性能。预期服务产线:Tengine–7层LB目的:提升现在单机7层LB的服务性能,预计cps的性能提升一倍;同时可以提升7层LB在生产环境的传输性能。linux2.6.32-431/531内核对Tengine的性能瓶颈结论:性能损耗主要在内核的三把锁 ...

2023-11-27 16:39:24 519

原创 DDoS检测防御实现方案

对pps或bps汇聚统计,当超过阈值时触发告警,告警内容包括:攻击类型、起始时间、流量大小pps,bps,目标IP,目标端口。对pps或bps汇聚统计,当超过阈值时触发告警,告警内容包括:攻击类型、起始时间、流量大小pps,bps,目标IP,目标端口。对pps或bps汇聚统计,当超过阈值时触发告警,告警内容包括:攻击类型、起始时间、流量大小pps,bps,目标IP,目标端口。对pps或bps汇聚统计,当超过阈值时触发告警,告警内容包括:攻击类型、起始时间、流量大小pps、bps,目标IP,目标端口。

2023-10-12 09:36:27 748

原创 linux chrdev字符设备驱动程序示例

下面代码是一个linux内核模块,用于实现一个简单的字符设备驱动程序示例。示例代码实现了一个简单的字符设备驱动程序,可以读取和写入内核缓冲区中的数据。

2023-10-12 09:20:51 149

原创 linux ioctl驱动作用及程序示例

linux操作系统的目标之一是向用户掩盖系统硬件设备的特殊性。驱动程序调用步骤:应用程序、库、内核、驱动、硬件。linux嵌入式系统设备,例如:触摸屏、按键、 IIC总线、 LCD等是字符设备,他们特点是按字节流进行先后顺序读写操作设备的。ioctl是一种系统调用,用于在用户空间和内核空间之间传递控制命令。在Linux驱动程序中,ioctl通常用于实现设备驱动程序的控制接口。

2023-10-08 09:43:13 255

原创 CDN安全面临的问题及防御架构

攻击方式:HTTP Get、HTTP Post、Local DNS、DNS flood、DNS 反射、权威DNS、SYN flood(TCP协议的标志位都能组成一个flood)、UDP flood、四层DDos、Connection flood、SSDP。基于协议栈优化linux操作系统,例如腾讯Tlinux kemel(前置判断和过滤HTTPS支持、前置判断算法改进)、IDC硬件(入口)anti-DDos产品、云清洗(骨干网络、更近源站、节点的本地化)应用层的DDos、CC攻击---CDN WAF。

2023-08-06 12:19:14 686

原创 nginx子请求与addtion filter模块源码分析

9,第二子请求:ngx_http_finalize_request,第二子请求下有postponed,调用set_writer_handler设置write_event_handler回调,ngx_http_run_posted_requests开始遍历到主请求,此时为posted_requests仅为主请求。14,主请求:ngx_http_postpone_filter,ngx_http_finalize_request,发送数据ngx_http_post_action。

2023-08-06 12:13:59 153

原创 fasync driver demo

Linux系统中的fasync用于设备驱动程序与用户空间之间的异步通信。它允许设备驱动程序通知用户空间的进程,当设备状态发生变化时,通过发送SIGIO信号来告知进程。具体来说,设备驱动程序可以调用fasync_helper()函数来注册一个或多个进程,当设备状态发生变化时,内核会自动发送SIGIO信号给这些进程。而用户空间进程可以通过调用fcntl()函数,并设置F_SETOWN标志来接收SIGIO信号。一旦接收到SIGIO信号,进程就可以执行相应的处理操作,如读取设备数据或进行其他操作。

2023-07-26 18:48:16 268

原创 nginx mirror代码分析

request结构中有向后端upstream转发的数据缓存,并且request和内存资源独立于底层connection的内存资源,因此可复用request结构及内存(待mirror之后释放)作为向mirror upstream转发的数据来源,复用该数据可最大程度减少重新组包或数据copy带来的性能损耗。注意:复用该方法会有一个问题在于如果主请求不能转发到后端,则不会生成该http 头数据。例如 404 not found的请求,因为找不到指定路径,所以不会走proxy逻辑生成到upstream的请求数据。

2023-07-26 18:40:55 842

原创 数据包协议栈处理

4.2 TCP Segmentation Offload(TSO)_Remy的学习记录-CSDN博客_tcp-segmentation-offloadLinux内核参数之rp_filter - 萝卜1992 - 博客园

2023-07-26 18:33:28 190

原创 linux系统用户态与内核态接口

简介用户空间与内核空间的交互方式如下,下面逐一详细说明。procfsnetlink文件io读写ioctldebugfssysfsprocfs:在Linux系统中,procfs是一种伪文件系统,它提供了一种以文件的形式访问内核数据结构和系统信息的接口。用户空间可以通过读取和写入/proc目录下的文件来与内核进行交互。netlink:Netlink是Linux内核中一种用于进程间通信的机制,它允许用户空间的进程与内核空间的进程进行双向通信。

2023-07-26 18:19:57 459

原创 DNS攻击防护原理

针对四种防护算法进行DNS攻防测试,防护算法如下:默认算法(限速)TC重传cname跳转首次query丢弃重点针对攻击原理、防护原理进行说明,针对如何测试,提供参考文档。DNS request flood攻击篇攻击原理:1、DNS request flood攻击原理其实很简单,就是黑客控制僵尸网络向DNS服务器发送大量的不存在域名的解析请求,最终导致服务器因大量DNS请求而超载,无法继续响应正常用户的DNS请求,从而达到攻击的目的。2、在DNS request flood攻击过程中,攻击的目标可能是D...

2022-07-12 22:45:36 1775 6

原创 内核参数说明for nginx

tengine 内核参数2.6.32-573.26.1.el6.SuperXtcp01.x86_64tcp_max_syn_backlog: 16384端口最大 backlog 内核限制。此参数限制 服务端应用程序 可以设置的端口最大 backlog 值 (对应于端口的 syn_backlog 和 backlog 队列长度)。动机是在内存有限的服务器上限制/避免应用程序配置超大 backlog 值而耗尽内核内存。如果应用程序设置 backlog 大于此值,操作系统将自动将之限制到此值。(ten.

2022-07-01 23:42:18 608

原创 linux内核中断返回调度标志是如何设置的

系统调用是常见一种类型的异常,也是应用代码从用户空间主动进入内核空间的唯一方式。运行在用户空间的进程会被动陷入到内核空间,进行中断处理程序的处理。中断处理程序处理完后返回到用户空间,在返回至用户空间之前,判断是否要进行进程调度。如果需要则再进行一次进程调度。futex_wake_op与fork一样最终执行check_preempt_curr函数。该函数做的就是给当前线程设置一个需要调度的标志,在下一次中断返回时进行一次调度。...

2022-06-07 19:53:07 1046 5

原创 c语言uart串口通信编程s3c2410为例

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <termios.h>//#include "gpio.h"//#define LED1 0x31//#define LED2 0x32//#define LED3 0x33//#define LEDOFF 0x34//#define LEDON 0x35.

2022-05-14 11:38:43 1150

原创 记一次dpdk 16.11版本移植错误排查

移植后cmd_thread_init()报错,修改cmd使用的管理核。server启动后报段错误,tx_buffer初始化失败。增大hugepage,报错remap失败。reboot设备,修改server的启动参数,绑定网卡到dpdk,启动成功。

2022-05-14 11:27:06 548 2

原创 ARM linux内核移植

Linux操作系统的内核代码主要是由具有跨平台特性的C语言编写的。并采用GNU软件体系,这使得它具有良好的可移植性。同时它也是一个开源操作系统,用户可以免费下载,并根据实际需要修改内核配置,提高系统的运行效能。linux内核移植概述嵌入式操作系统与计算机的硬件体系机构,特别是与处理器及外部设备密切相关。在一种处理器的开发板上运行的嵌入式操作系统往往不能在另一种处理器的开发板上运行。即使两个开发板处理器相同,如果外部设备不同,两个开发板也可能不能运行同一个嵌入式系统,这时就需要.

2022-05-07 12:20:51 865

原创 linux proc文件系统驱动demo

linux proc文件系统驱动demo

2022-05-04 13:08:48 281

原创 waf应对csrf攻击防护方案

在表单里隐藏一个随机变化的 token,每当用户提交表单时,将这个 token提交到后台进行验证,如果验证通过则可以继续执行操作。连接redis以csrf_.. ngx.var.cookie_csrf为key查找如果找到了返回value和ok,否则 not found返回ok后从请求参数中get_post_args得到csrf字段,如果这个csrf字段value和从redis查找的value一致那么放行,ngx.var

2022-05-04 12:40:48 2029

原创 linux系统网卡驱动编码实例

通过register_netdev注册网络设备。实现了网络中断。模拟网络硬件传输数据包。检查ip数据包。记录传输的数据包状态。手动释放sk_buffer。处理数据包传输超时情况。网络驱动接收网络数据包并将数据包放入TCP/IP上层,编写网络驱动接收数据包必须分配sk_buff结构来存储数据,sk_buff将在上层释放。

2022-05-03 10:49:31 534

原创 嵌入式linux文件系统简介

文件系统存储介质是Flash芯片,常用的嵌入式文件系统类型有Cramfs、JFF、Yaffs、网络文件系统等。制作嵌入式根文件系统一般使用开源的Busybox工具,Busybox在设计上充分考虑了硬件资源受限的特殊工作环境。使用JFFS2文件系统,需要把MTD编译到内核中,MTD提供MTD-CHAR和MTD-BLOCK这两个模块用于对Flash的访问。

2022-05-03 08:57:32 1365

原创 ARM9 2410系列开发板U-boot移植

ARM9 2410系列开发板U-boot移植U-boot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要功能如下:定义入口。一个可执行的Image必须有一个入口的,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址。设置异常向量。本地硬件设备初始化(设置CPU模式/关闭看门狗计时器/屏蔽中断等)。初始化内存控制器。如果从固态存储介质中启动,则复制bootloader的第二阶段到RAM。设置堆栈,跳转到stage2入口点。自此stage1执行

2022-05-02 20:27:48 551

原创 gdb调试nginx openssl keyless recv节选

872 sslerr = SSL_get_error(req_conn->ssl->connection, n);(gdb) n874 if (n == 1 || sslerr == SSL_ERROR_KEYLESS_OK || sslerr == SSL_ERROR_WANT_KEYLESS_CONN) {(gdb) n894 if (sslerr == SSL_ERROR_WANT_KEYLESS_READ) {(gdb) n906

2022-04-30 23:52:50 1489

原创 linux kernel内核版本升级

linux kernel内核版本升级http://vault.centos.org/7.5.1804/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso此处使用的是1804的版本[root@localhost ~]# uname -r3.10.0-862.el7.x86_64

2022-04-30 23:36:55 1667

原创 美团七层负载均衡转发系统落地案例

由于AB框架只支持4种策略类型,对于业务要根据请求Cookie、自定义header控制转发的情况,均需要开发新的策略类型和发布上线。另外,策略类型和业务场景紧密相关,导致AB系统的扩展性极差,很难快速支持新业务的路由需求。无论是Nginx if指令,还是AB框架,要么需要reload重新加载才能生效,要么无法支持某些业务场景下的分流需求,所以都很难作为解决公司级分流框架的有效手段。针对它们所存在的不足,Oceanus开发了一套应用级、高可扩展的动态分流框架,不仅动态支持各种业务场景的分流需求,而且保证了

2022-04-30 16:42:20 1876

原创 nginx处理请求的十一阶段分析

nginx启动时master进程加载配置文件,根据配置文件初始化监听的socket,fork worker进程。worker进程与client建立socket连接处理请求,接收请求读取请求行、请求头、请求体。处理请求,根据处理结果响应请求,响应行/头/体。十一个阶段,每个阶段有各自的checker和handler通过cheker函数来判断是继续在本阶段handler,还是去下一个phase的handler处理。或者跳到某个阶段handler处理。

2022-04-29 16:19:57 1111

原创 openresty是如何通过lua代码获取nginx内请求数据的

openresty是如何通过lua代码获取nginx内请求数据的nginx中处理请求是围绕ngx_http_request_t结构体进行的。ngx_http_request_t结构体包含了当前http请求的所有数据。ngx_http_lua_module与nginx进行交互,主要围绕这个结构体实现的,lua代码获取nginx内部http请求数据,然后进行处理。

2022-04-29 14:17:25 1528

原创 linux进程exit系统调用

用户态的进程退出时,通过exit系统调用进入到内核,cpu产生系统调用中断,处理该中断时查表sys_call_table找到系统调用号找到sys_exit,sys_exit找到do_exit函数执行。用户态exit()-->内核态中断处理el0_sync--->内核态el0_svc查找sys_call_table得到sys_execve函数地址执行--->内核态sys_exit--->内核态do_exit。

2022-04-28 22:53:24 895

原创 linux内核futex快速用户空间互斥体简介

futex是一种用户态和内核态混合的同步机制。通过在用户态检查,没有竞争就不陷入内核执行系统调用了。访问futex变量通知进程有竞争发生,则执行系统调用去完成相应的操作。进程、线程可以利用futex来进行同步。futex同步操作都应该从用户空间开始,创建一个futex整形同步变量。

2022-04-28 22:27:23 1949

原创 linux IDLE 0号进程分析

linux操作系统中第一个进程是0号进程是为道,主要任务是不断进行进程调度。内核在启动过程中第一个cpu进入start_kernel逻辑,这个逻辑是内核初始化入口。用用户态所有进程的祖先都是1号进程。init进程还给其它cpu创建IDLE进程。在rest_init方法中第一个cpu的IDLE进程调用kernel_thread创建了1号进程。

2022-04-28 12:32:59 885

原创 linux系统调用yield和pause进程让出cpu

每个进程对应一个 task_struct 数据结构,这个数据结构包含了进程的所有的信息。yield、pause让出cpu。运行在用户态的进程,想实现一些更底层的操作,可以通过syscall进入到内核态。yield系统调用就会使当前进程让出cpu,进行syscall系统调用。

2022-04-27 23:39:23 1953

原创 网络安全策略管理架构

两个收发策略接口,分别是RESTFULAPI、CLI。收到策略解析,使用文件型、轻量级sqlite数据库存储,存于表A。(查了一下sqlite可以批量写入、删除、查询)。黑名单策略存于表B。

2022-04-27 22:05:29 2144

原创 dpdk从环形队列ring获取解析数据包,并使用hashtable统计

result = rte_ring_dequeue_burst(arg0,arg1,arg2,arg3)将多个对象从一个环形队列ring取出,直到达到最大数量。该函数调用多消费者或单消费者批量出队列,取决于在创建ring时指定的默认行为。arg0为环形队列ring指针arg1为 指用数据包填充的void*指针数组指针,示例为void* dequeued[]数组arg2为从环出列到 obj_table 的对象数。arg3如果如果非NULL,则为返回出队完成后剩余的环条目数。返回值为出队的对象数

2022-04-21 17:17:42 2307

原创 dpdk从给定的port/queue捕获流量

简介dpdk编程之从给定的port/queue tuple捕获流量。rte_lcore_idrte_lcore_id()返回当前运行的lcore id。lcore指的是EAL linux线程。EAL创建和管理eal线程通过remote_launch来实现任务分配。在每个EAL线程中,有一个称为_lcore_id TLS是线程的独一无二的id。通常EAL线程绑定物理cpu,lcore_id通常等于cpuid。当使用多线程时,绑定不再在线程和指定物理cpu之间总是1:1.

2022-04-20 18:09:41 3132

原创 DNS 缓存&授权服务器攻击简介

DNS架构当用户上网访问某个网站时,会向DNS缓存服务器发出该网站的域名,以请求其IP地址。当DNS缓存服务器查找不到该域名与IP地址对应关系时,它会向授权DNS服务器发出域名查询请求。为了减少Internet上DNS的通信量,DNS缓存服务器会将查询到的域名和IP地址对应关系存储在自己的本地缓存中。后续再有主机请求该域名时,DNS缓存服务器会直接用缓存区中的记录信息回应,直到该记录老化,被删除,互联网的dns模拟结构如下图:常见的dns服务器主要是缓存服务器和授权服务器,一个典型的解析过程如下

2022-04-15 09:44:51 3047

原创 tcp的fin&rst flood攻击与防御

tcp的fin&rst flood攻击与防御

2022-04-15 09:38:05 3956

原创 如何在waf上用共享内存缓存压缩过的响应内容

接口响应内容比较大近800k,为了达到快速响应,给客户端带来更好的体验。减少请求延迟,减小网络传输带宽势在必行,不然会给业务端和带宽带来巨大的压力。减小请求延迟办法:将响应内容在waf上进行缓存。减小网络传输带宽办法:将响应内容压缩。

2022-04-13 13:41:19 874

原创 SSL-DoS和SSL-DDos攻击与防御

SSL握手的过程中,在协商加密算法时服务器CPU的开销是客户端开销的15倍左右。攻击者利用这一特点,在一个TCP连接中不停地快速重新协商(这种行为是被SSL所允许的),从而耗尽服务器CPU资源,这种攻击叫做SSL-DoS。...

2022-03-25 09:17:18 820

OWASP无服务器安全风险Top10.pdf

OWASP无服务器应用风险TOP10,由OWASP中国广东分会负责人发表。

2021-06-11

OWASP Web Application Security Testing Checklist.docx

OWASP Web Application Security Testing Checklist

2021-06-11

OWASP web测试指南 4.0.zip

中文版OWASP web测试指南 4.0大全

2021-06-11

web安全开发规范.pdf

当前大部分漏洞和攻击都是通过应用层面开始着手的,进而一步步被黑客渗透拿到目标权限、目标数据等。本文旨在提醒和指导,web应用开发中涉及的安全问题,进而减少或避免开发中出现的安全问题,一旦业务出现重大安全问题,无论是对安全部门还是企业形象将受到重要影响。

2021-06-11

Web应用安全威胁与防治 基于OWASP Top 10与ESAPI.pdf

以当今公认的安全权威机构OWASP(Open Web Application Security Project)制定的OWASP Top 10为蓝本,介绍了十项最严重的Web应用程序安全风险, 并利用ESAPI(Enterprise Security API)提出了解决方案。

2021-06-11

Imperva-SecureSphere-v13.0-Web-Security-User-Guide.pdf

imperva作为gartner waf第一象限领导者,长期占据全球waf产品第一名,该文档提供imperva用户使用手册,以便了解imperva waf产品有哪些功能,以及如何使用和配置。

2020-07-07

入侵联网汽车.pdf

随着iot智能硬件/智能家居/智能汽车的高速发展,以及5G的逐渐普及,随着更多的硬件设备接入网络,对于网络安全从业人员会面临更多的挑战,车联网安全安全是一门新兴的技术领域。可以读该文档进行了解学习车联网安全。

2020-07-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除