代码编织梦想

Linux网络攻防和渗透测试技术结合,实例丰富。

内容短而精,立足于零基础,兼顾动手实践。

图片

本书内容

《Linux信息安全和渗透测试》详细阐述Linux下的信息安全和网络渗透技术,内容涵盖各大主流加解密算法的原理,用Linux C/C++语言自主实现这些技术的方法,以及Linux内核开发技术和IPSec VPN的系统实现,这些都是以后打造自己信息安全工具所需的基本知识。最后介绍网络渗透技术Kail Linux,通过该环境可以了解常用的现成工具。本书共11章,内容包括Linux基础和网络优化、搭建Linux C和C++安全开发环境、对称密码算法、杂凑函数和HMAC、非对称算法RSA的加解密、身份认证和PKI、实战PKI、IPSec VPN基础知识、VPN实战、SSL-TLS编程、内核和文件系统、Kali Linux的渗透测试研究、DPDK开发环境的搭建等。

《Linux信息安全和渗透测试》适合Linux信息安全工程师或开发者阅读,也适合高等院校和培训机构相关专业的师生作为教学参考书。

本书作者

蔡冰,15年的编程教学、职业规划经历。已辅导近千位同学通过实习校招,顺利入职各大互联网公司的研发岗位,平时积累了大量当前流行的开发知识和技能。参与编写了《Java网络编程实战》的图书。

本书读者

Linux信息安全工程师或开发者阅读,也适合高等院校和培训机构相关专业的师生作为教学参考书。

本书目录

第 1 章  搭建Linux安全开发环境 1

1.1  准备虚拟机环境 1

1.1.1  在VMware下安装Linux 1

1.1.2  开启登录时的root账号 4

1.1.3  解决Ubuntu上的vi方向键问题 5

1.1.4  关闭防火墙 6

1.1.5  配置安装源 6

1.1.6  安装网络工具包 6

1.1.7  安装基本开发工具 7

1.1.8  启用SSH 7

1.1.9  创建一个快照 8

1.1.10  连接虚拟机Linux 9

1.1.11  通过终端工具连接Linux虚拟机 18

1.1.12  与虚拟机互传文件 20

1.1.13  支持图形软件的终端工具MobaXterm 21

1.2  搭建Samba网络文件共享服务 22

1.3  在VMware中添加一块硬盘 24

1.4  在Linux下搭建C/C++开发环境 27

1.5  在Windows下搭建Linux C/C++开发环境 28

1.5.1  Windows下非集成式的Linux C/C++开发环境 28

1.5.2  Windows下集成式的Linux C/C++开发环境 32

1.6  安全密码库OpenSSL 35

1.6.1  OpenSSL源代码模块结构 36

1.6.2  OpenSSL加密库调用方式 37

1.6.3  OpenSSL支持的对称加密算法 37

1.6.4  OpenSSL支持的非对称加密算法 38

1.6.5  OpenSSL支持的信息摘要算法 38

1.6.6  OpenSSL密钥和证书管理 38

1.6.7  面向对象与OpenSSL 38

1.6.8  BIO接口 40

1.6.9  EVP接口 41

1.6.10  在Linux下编译安装OpenSSL 1.0.2 42

1.6.11  使用OpenSSL命令并查看版本号 51

1.7  国产密码函数库GmSSL 51

1.7.1  GmSSL的特点 52

1.7.2  GmSSL的一些历史 52

1.7.3  什么是国密算法 52

1.7.4  GmSSL的下载 53

1.7.5  在Linux下编译安装GmSSL 53

1.7.6  默认编译安装GmSSL 57

1.7.7  在旧版本的Linux下编译和安装GmSSL 60

第 2 章  对称密码算法 64

2.1  基本概念 64

2.2  流加密算法 65

2.2.1  基本概念 65

2.2.2  流密码和分组密码的比较 66

2.2.3  RC4算法 66

2.3  分组加密算法 76

2.3.1  工作模式 76

2.3.2  短块加密 84

2.3.3  DES和3DES算法 84

2.3.4  SM4算法 102

2.4  利用OpenSSL进行对称加解密 119

2.4.1  基本概念 119

2.4.2  对称加解密相关函数 119

第 3 章  杂凑函数和HMAC 128

3.1  杂凑函数概述 128

3.1.1  什么是杂凑函数 128

3.1.2  密码学和杂凑函数 129

3.1.3  杂凑函数的发展 129

3.1.4  杂凑函数的设计 130

3.1.5  杂凑函数的分类 130

3.1.6  杂凑函数的碰撞 130

3.2  SM3杂凑算法 131

3.2.1  常量和函数 131

3.2.2  填充 131

3.2.3  迭代压缩 132

3.2.4  杂凑值 133

3.2.5  一段式SM3算法的实现 133

3.2.6  三段式SM3算法的实现 138

3.2.7  GmSSL实现SM3算法 145

3.3  HMAC 148

3.3.1  什么是HMAC 148

3.3.2  产生背景 148

3.3.3  设计目标 149

3.3.4  算法描述 149

3.3.5  独立自主实现HMAC-SM3 150

3.4  SHA系列杂凑算法 152

3.4.1  SHA算法概述 152

3.4.2  SHA的发展史 153

3.4.3  SHA系列算法的核心思想 153

3.4.4  单向性 153

3.4.5  主要用途 153

3.4.6  SHA256算法原理解析 153

3.4.7  SHA384和SHA512算法 168

3.5  更通用的基于OpenSSL的哈希运算 192

3.5.1  获取摘要算法的函数EVP_get_digestbyname 192

3.5.2  创建结构体并初始化的函数EVP_MD_CTX_create 192

3.5.3  销毁摘要上下文结构体的函数EVP_MD_CTX_destroy 193

3.5.4  摘要初始化的函数EVP_DigestInit_ex 193

3.5.5  摘要Update的函数EVP_DigestUpdate 194

3.5.6  摘要Final的函数EVP_Digest_Final_ex 194

3.5.7  单包摘要计算的函数EVP_Digest 194

第 4 章  非对称算法RSA的加解密 197

4.1  非对称密码体制概述 197

4.2  RSA概述 199

4.3  RSA的数学基础 199

4.3.1  素数 199

4.3.2  素性检测 199

4.3.3  倍数 200

4.3.4  约数 200

4.3.5  互质数 200

4.3.6  质因子 200

4.3.7  强素数 201

4.3.8  因子 201

4.3.9  模运算 201

4.3.10  模运算的操作与性质 202

4.3.11  单向函数 202

4.3.12  费马定理和欧拉定理 203

4.3.13  幂 203

4.3.14  模幂运算 204

4.3.15  同余符号≡ 204

4.3.16  欧拉函数 204

4.3.17  最大公约数 204

4.3.18  实现欧几里得算法 205

4.3.19  扩展欧几里得算法 207

4.4  RSA算法描述 214

4.5  RSA算法实例 215

4.5.1  查找法计算私钥d 216

4.5.2  简便法计算私钥d 218

4.5.3  扩展欧几里得算法计算私钥d 220

4.5.4  加密字母 221

4.5.5  分组加密字符串 221

4.6  实战前的几个重要问题 225

4.6.1  明文的值不能大于模值N 225

4.6.2  明文的长度 226

4.6.3  密钥长度 227

4.6.4  密文长度 227

4.7  熟悉PKCS#1 227

4.7.1  PKCS#1填充 228

4.7.2  OpenSSL中的RSA填充 230

4.7.3  PKCS#1中的RSA私钥语法 232

4.8  在OpenSSL命令中使用RSA 233

4.8.1  生成RSA公私钥 233

4.8.2  提取私钥的各个参数 234

4.8.3  使用RSA公钥加密一个文件 236

4.8.4  使用私钥解密一个文件 237

4.9  基于OpenSSL库的RSA编程 237

4.9.1  OpenSSL的RSA实现 238

4.9.2  主要数据结构 239

4.9.3  主要函数 240

4.10  随机大素数的生成 248

4.11  RSA算法的攻击及分析 248

4.11.1  因子分解攻击 248

4.11.2  选择密文攻击 249

4.11.3  公共模数攻击 249

4.11.4  小指数攻击 249

第 5 章  身份认证和PKI 250

5.1  身份认证概述 250

5.1.1  网络安全与身份认证 250

5.1.2  网络环境下身份认证所面临的威胁 251

5.1.3  网络身份认证体系的发展现状 252

5.2  身份认证技术基础 254

5.2.1  用户名/密码认证 254

5.2.2  智能卡认证 254

5.2.3  生物特征认证 255

5.2.4  动态口令 255

5.2.5  USB Key认证 255

5.2.6  基于冲击响应的认证模式 255

5.2.7  基于PKI体系的认证模式 256

5.3  PKI概述 256

5.3.1  PKI的国内外应用状态 257

5.3.2  PKI的应用前景 258

5.3.3  PKI存在的问题及发展趋势 258

5.4  基于X.509证书的PKI认证体系 260

5.4.1  数字证书 261

5.4.2  数字信封 264

5.4.3  PKI体系结构 264

5.4.4  基于X.509证书的身份认证 269

第 6 章  实战PKI 271

6.1  只有密码算法是不够的 271

6.2  利用OpenSSL实现CA的搭建 273

6.2.1  准备实验环境 273

6.2.2  熟悉CA环境 274

6.2.3  创建所需要的文件 276

6.2.4  CA自签名证书(构造根CA) 276

6.2.5  根CA为子CA颁发证书 278

6.2.6  普通用户向子CA申请证书 281

6.3  基于OpenSSL的证书编程 283

6.3.1  把DER编码转换为内部结构体的d2i_X509函数 284

6.3.2  获得证书版本的X509_get_version函数 285

6.3.3  获得证书序列号的X509_get_serialNumber函数 285

6.3.4  获得证书颁发者信息的X509_get_issuer_name函数 285

6.3.5  获得证书拥有者信息的X509_get_subject_name函数 286

6.3.6  获得证书有效期的起始日期的X509_get_notBefore函数 286

6.3.7  获得证书有效期的终止日期的X509_get_notAfter函数 286

6.3.8  获得证书公钥的X509_get_pubkey函数 286

6.3.9  创建证书存储区上下文环境的X509_STORE_CTX函数 286

6.3.10  释放证书存储区上下文环境的X509_STORE_CTX_free函数 287

6.3.11  初始化证书存储区上下文环境的X509_STORE_CTX_init函数 287

6.3.12  验证证书的X509_verify_cert函数 287

6.3.13  创建证书存储区的X509_STORE_new函数 287

6.3.14  释放证书存储区的X509_STORE_free函数 288

6.3.15  向证书存储区添加证书的X509_STORE_add_cert函数 288

6.3.16  向证书存储区添加证书吊销列表的X509_STORE_add_crl函数 288

6.3.17  释放X.509结构体的X509_free函数 288

6.4  证书编程实战 289

第 7 章  IPSec VPN基础知识 295

7.1  概述 295

7.1.1  IPSec VPN技术现状 296

7.1.2  国密VPN现状 296

7.2  IPSec协议研究 297

7.2.1  IPSec体系结构 297

7.2.2  传输模式和隧道模式 299

7.2.3  AH协议概述 299

7.2.4  AH数据包封装 300

7.2.5  ESP协议概述 301

7.2.6  ESP数据包封装 302

7.2.7  安全联盟 304

7.2.8  安全策略数据库和安全联盟数据库 305

7.3  IKE协议 306

7.3.1  IKE概述 306

7.3.2  IKE的安全机制 307

7.3.3  ISAKMP 308

7.4  IKEv1协议 309

7.4.1  第一阶段 310

7.4.2  第二阶段 312

7.4.3  主模式和快速模式的9个包分析 312

7.5  IKEv2协议 320

7.5.1  IKEv2概述 320

7.5.2  初始交换 321

7.5.3  创建子SA交换 326

7.5.4  通知交换 326

7.6  IKEv1与IKEv2的区别 326

7.7  IKEv2的优点 327

第 8 章  VPN实战 328

8.1  准备网络环境 328

8.2  strongSwan实战 333

8.2.1  编译安装strongSwan 333

8.2.2  常用程序概述 339

8.2.3  配置文件概述 342

8.2.4  使用ipsec.conf文件 343

8.2.5  使用swanctl.conf 353

8.2.6  strongSwan签发证书 357

8.3  OpenSwan实战 364

8.3.1  OpenSwan概述 364

8.3.2  OpenSwan的整体架构 364

8.3.3  OpenSwan的下载和编译 365

8.3.4  OpenSwan连接方式 367

8.3.5  OpenSwan的认证方式 367

8.3.6  配置文件ipsec.conf 367

第 9 章  SSL-TLS编程 378

9.1  SSL协议规范 378

9.1.1  SSL协议的优点 378

9.1.2  SSL协议的发展 378

9.1.3  SSLv3/TLS提供的服务 379

9.1.4  SSL协议层次结构模型 380

9.1.5  SSL记录协议层 380

9.1.6  SSL握手协议层 382

9.2  OpenSSL中的SSL编程 385

9.3  SSL函数 386

9.3.1  初始化SSL算法库的函数SSL_library_init 386

9.3.2  初始化SSL上下文环境变量的函数SSL_CTX_new 386

9.3.3  释放SSL上下文环境变量的函数SSL_CTX_free 387

9.3.4  以文件形式设置SSL证书的函数SSL_CTX_use_certificate_file 387

9.3.5  以结构体方式设置SSL证书的函数SSL_CTX_use_certificate 387

9.3.6  以文件形式设置SSL私钥的函数SSL_CTX_use_PrivateKey_file 387

9.3.7  以结构体方式设置SSL私钥的函数SSL_CTX_use_PrivateKey 387

9.3.8  检查SSL私钥和证书是否匹配的函数SSL_CTX_check_private_key 388

9.3.9  创建SSL结构的函数SSL_new 388

9.3.10  释放SSL套接字结构体的函数SSL_free 388

9.3.11  设置读写套接字的函数SSL_set_fd 388

9.3.12  设置只读套接字的函数SSL_set_rfd 388

9.3.13  设置只写套接字的函数SSL_set_wfd 389

9.3.14  启动TLS/SSL握手的函数SSL_connect 389

9.3.15  接受SSL连接的函数SSL_accept 389

9.3.16  获取对方的X.509证书的函数SSL_get_peer_certificate 389

9.3.17  向TLS/SSL连接写数据的函数SSL_write 390

9.3.18  从TLS/SSL连接上读取数据的函数SSL_Read 390

9.4  准备SSL通信所需的证书 390

9.4.1  准备实验环境 390

9.4.2  熟悉CA环境 391

9.4.3  创建根CA的证书 391

9.4.4  生成服务端的证书请求文件 393

9.4.5  签发服务端证书 393

9.4.6  生成客户端的证书请求文件 394

9.4.7  签发客户端证书 395

9.5  实战SSL网络编程 396

第 10 章  内核和文件系统 404

10.1  认识QEMU 405

10.1.1  QEMU的两种执行模式 405

10.1.2  QEMU的用途 406

10.1.3  使用QEMU虚拟机的几种选择 406

10.2  安装Linux版的QEMU 407

10.3  下载和编译内核 410

10.4  制作简易的文件系统 413

10.4.1  BusyBox简介 414

10.4.2  编译和安装BusyBox 415

10.4.3  制作根文件系统的映像文件 417

10.5  非嵌入式方式启动内核 419

10.5.1  BusyBox启动过程简要分析 423

10.5.2  在新内核系统中运行C程序 425

10.6  基本功能的完善 426

10.6.1  挂载proc支持ifconfig 426

10.6.2  挂载sysfs支持lspci 428

10.6.3  实现文件系统可写 433

10.7  QEMU的用户网络模式 433

10.7.1  不使用-net选项 434

10.7.2  使用-net选项 437

10.8  QEMU桥接网络模式 438

10.8.1  网桥的概念 439

10.8.2  TUN/TAP的工作原理 439

10.8.3  带TAP的QEMU系统架构 440

10.8.4  brctl命令的简单用法 442

10.8.5  3个网络配置选项 444

10.8.6  实战桥接模式网络 445

10.8.7  手工命令创建TAP网卡 450

10.8.8  使用qemu-ifup 452

10.9  QEMU运行国产操作系统 453

10.9.1  安装Windows版的QEMU 454

10.9.2  UEFI固件下载 454

10.9.3  安装麒麟操作系统 455

10.9.4  运行麒麟系统 457

10.10  开发一个内核模块 458

第 11 章  Kali Linux的渗透测试研究 461

11.1  渗透测试的概念 461

11.2  渗透测试的分类 464

11.2.1  基于信息量的测试 464

11.2.2  基于攻击强度的测试 465

11.2.3  基于范围的测试 465

11.2.4  基于方法的测试 466

11.2.5  基于技术的测试 466

11.2.6  基于初始攻击点的测试 467

11.3  渗透测试的局限性 467

11.4  渗透测试方法 468

11.4.1  开源安全测试方法手册 468

11.4.2  信息系统安全评估框架 469

11.4.3  信息安全测试与评估技术指南 469

11.4.4  开放式Web应用程序安全项目 469

11.4.5  渗透测试执行标准 469

11.5  渗透测试过程 470

11.5.1  计划与准备阶段 470

11.5.2  发现阶段 471

11.5.3  评估阶段 472

11.5.4  攻击阶段 472

11.5.5  报告阶段 473

11.6  渗透测试平台与工具 473

11.6.1  Kali Linux 473

11.6.2  Metasploit 474

11.6.3  Nmap 475

11.6.4  OpenVAS 476

11.6.5  VMware Workstation 477

11.6.6  VirtualBox 478

11.7  实验平台的设计 478

11.8  实验过程设计 480

本文摘自《Linux信息安全和渗透测试》,获出版社和作者授权发布。

Linux信息安全和渗透测试——京东

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/quanzhankaifaqua/article/details/136037114

关机恶搞小程序-爱代码爱编程

1. system("shutdown")的介绍 当system函数的参数是"shutdown"时,它将会执行系统的关机命令。 具体来说,system("shutdown")的功能是向操作系统发送一个关机信号,请求关闭计算机。这将触发操作系统执行一系列的关机操作,包括关闭所有正在运行的程序、保存必要的系统信息、并最终关闭计算机的电源。 需要注意的是,

fastadmin添加活动二维码图片,扫码可以直接跳转到该活动-爱代码爱编程

一,在controll重写add方法 /** * 添加 */ public function add() { if ($this->request->isPost()) { $params = $this->request->post("row/a"); if ($params) {

apache paimon 文件操作-爱代码爱编程

本文旨在澄清不同文件操作对文件的影响。 本页面提供具体示例和实用技巧,以有效地管理这些操作。此外,通过对提交(commit)和压实(compact)等操作的深入探讨,我们旨在提供有关文件创建和更新的见解。 前提 对以下几篇有了解:1、Apache Paimon 介绍2、Apache Paimon 基础概念3、Apache Paimon 文

piflowx新增apache beam引擎支持-爱代码爱编程

参考资料: Apache Beam 架构原理及应用实践-腾讯云开发者社区-腾讯云 (tencent.com) 在之前的文章中有介绍过,PiflowX是支持spark和flink计算引擎,其架构图如下所示: 在pif