《Linux系统安全:纵深防御、安全扫描与入侵检测 》

华章计算机 发表于 2019/11/13 19:05:00 2019/11/13
【摘要】 本节书摘来自华章计算机《Linux系统安全:纵深防御、安全扫描与入侵检测》一作者是胥峰。

网络空间安全技术丛书

Linux系统安全:纵深防御、安全扫描与入侵检测


1573643146614495.jpg




胥峰 著



前  言

为什么要写本书

我国西汉时期著名学者戴圣在其著作《礼记·中庸》中写道,“凡事豫则立,不豫则废。”面对日益严峻的网络安全形势,这句话尤为适用。

全球知名网络安全公司Gemalto发布的《数据泄露水平指数》指出,2018年上半年,全球每天有超过2500万条数据遭到入侵或泄露,涉及医疗、信用卡、财务、个人身份信息等。网络威胁事件时时刻刻在发生,黑客攻击手法也趋于复杂和多样。高速的网络连接是一把双刃剑,它在加速了互联网应用的同时,也助长了入侵者的危害能力。面对这样险峻的形势,我们亟需构建自己的网络防御体系,这样才能做到胸有成竹,御敌于千里之外。

Linux是广受欢迎的互联网基础设施之一,具有开源、免费的特点,并有丰富健康的生态环境和社区支持。正因如此,Linux也成为黑客攻击的重要目标,因为其承载了大量互联网上不可或缺的基础服务,也是收集、生产、处理、传输和存储有价值数据的实体。保护Linux安全的重要性不言而喻。

笔者注意到,虽然市面上有很多以“信息安全”和“网络安全”为主题的书籍,但这些书籍大多聚焦在安全意识、法律法规和一些通用技术上。虽然这些书籍对网络安全建设起到了一定的指导作用,但是它们并不侧重于Linux安全,也不强调在保障Linux安全上的特定实践。因此,笔者认为有必要写一本侧重于Linux安全实践的书籍,真正把安全的规范和指南落实在Linux上,构建Linux的安全体系。

本书以Linux安全为主线,强调实践。实践出真知,因此,笔者也鼓励读者在阅读本书的过程中,多多动手在测试机上进行验证,然后把这些技术应用到生产环境中。

本书内容介绍

本书整体上按照纵深防御、安全扫描、入侵检测这3个大的方面来组织内容。

第1章概要介绍安全的概念和保障安全的主要原则,引申出“纵深防御”理念。

第2章、第3章是纵深防御的第1个关键步骤,是从网络层面对Linux系统进行防护。第4章介绍了使用相应工具定位网络安全问题的方法。

第5~7章是纵深防御的第2个关键步骤,即从操作系统层面对Linux系统进行防护。

第8章是纵深防御的第3个关键步骤,即保障Linux应用的安全,避免应用成为黑客入侵的入口。

第9章是纵深防御的第4个关键步骤,即确保业务的连续性,降低数据被篡改或者数据丢失的风险。

第10章介绍安全扫描的工具及其使用案例。安全并非一蹴而就,它需要按照PDCA的顺序不断检查和改进,而安全扫描正是最有效的自我检查途径。通过安全扫描,我们可以发现现有防御手段的不足及新的安全风险,为持续改进提供强有力的、有针对性的指南。

第11~13章介绍入侵检测相关技术和实践,目的是在发生入侵事件后,能够及时发现入侵事件、找到入侵事件遗漏的后门和威胁项、利用日志和审计工具找到黑客的行踪和动作。通过这些技术,我们可以知道黑客是怎么入侵进来的、他做了什么,从而为后续完善防御手段提供支持。

第14章介绍利用威胁情报追踪最新攻击趋势、确定攻击事件性质的方法。

读者对象

本书以广泛适用的信息安全基本原则为指导,聚焦Linux安全,强调实战。本书适合的读者对象包括:

网络安全工程师

Linux运维工程师

Linux运维架构师

Linux开发工程师

Web开发工程师

软件架构师

大中专院校计算机系学生

勘误和支持

尽管笔者努力确保书中不存在明显的技术错误,但由于技术水平和能力有限,书中可能存在某项技术不适用于读者特定环境的情况,也可能存在纰漏。在此,笔者恳请读者不吝指正。反馈专属邮箱:xufengnju@163.com。

本书中所有已发现的错误,除了在下一次印刷中修正以外,还会通过微信公众号“运维技术实践”(yunweijishushijian)发布。

为了更好地服务读者,笔者建立了本书的专属支持QQ群(434242482)。有兴趣的读者可以加入该群,就本书的内容进行探讨。

致谢

写作的过程就像一场长跑,在这个跑道上,我收获了无数的鼓励和支持。

在此,我首先感谢机械工业出版社华章公司的杨福川老师和李艺老师。杨福川老师是出版界的资深人士,他出版了一系列高质量、广受赞誉的IT类书籍。杨福川老师协助我完成了本书的选题并确定了基本内容和组织结构。李艺老师是一位专业、尽职、高效的编辑,她多次就本书提出非常有建设性的建议。

在长达数月的写作过程中,我的太太承担了全部的家庭责任,她使得我能持久安心地完成本书的写作。感谢她!我的女儿今年5岁了,活泼灵巧。感谢她成为我生命中的一部分,鼓励我努力前行!

 

 

 

 

目  录

 

前言

第1章 Linux系统安全概述1

1.1 什么是安全2

1.1.1 什么是信息安全2

1.1.2 信息安全的木桶原理4

1.1.3 Linux系统安全与信息安全的关系5

1.2 威胁分析模型5

1.2.1 STRIDE模型5

1.2.2 常见的安全威胁来源6

1.3 安全的原则8

1.3.1 纵深防御8

1.3.2 运用PDCA模型9

1.3.3 最小权限法则11

1.3.4 白名单机制12

1.3.5 安全地失败12

1.3.6 避免通过隐藏来实现安全13

1.3.7 入侵检测14

1.3.8 不要信任基础设施14

1.3.9 不要信任服务15

1.3.10 交付时保持默认是安全的15

1.4 组织和管理的因素16

1.4.1 加强安全意识培训16

1.4.2 特别注意弱密码问题17

1.4.3 明令禁止使用破解版软件18

1.4.4 组建合理的安全组织结构18

1.5 本章小结19

第2章 Linux网络防火墙21

2.1 网络防火墙概述21

2.2 利用iptables构建网络防火墙23

2.2.1 理解iptables表和链23

2.2.2 实际生产中的iptables脚本编写25

2.2.3 使用iptables进行网络地址转换27

2.2.4 禁用iptables的连接追踪29

2.3 利用Cisco防火墙设置访问控制34

2.4 利用TCP Wrappers构建应用访问控制列表35

2.5 利用DenyHosts防止暴力破解36

2.6 在公有云上实施网络安全防护38

2.6.1 减少公网暴露的云服务器数量39

2.6.2 使用网络安全组防护40

2.7 使用堡垒机增加系统访问的安全性41

2.7.1 开源堡垒机简介43

2.7.2 商业堡垒机简介44

2.8 分布式拒绝服务攻击的防护措施46

2.8.1 直接式分布式拒绝服务攻击46

2.8.2 反射式分布式拒绝服务攻击47

2.8.3 防御的思路48

2.9 局域网中ARP欺骗的防御48

2.10 本章小结50

第3章 虚拟专用网络52

3.1 常见虚拟专用网络构建技术53

3.1.1 PPTP虚拟专用网络的原理53

3.1.2 IPSec虚拟专用网络的原理53

3.1.3 SSL/TLS虚拟专用网络的原理54

3.2 深入理解OpenVPN的特性55

3.3 使用OpenVPN创建点到点的虚拟专用网络55

3.4 使用OpenVPN创建远程访问的虚拟专用网络61

3.5 使用OpenVPN创建站点到站点虚拟专用网络69

3.6 回收OpenVPN客户端的证书70

3.7 使用OpenVPN提供的各种script功能71

3.8 OpenVPN的排错步骤73

3.9 本章小结77

第4章 网络流量分析工具79

4.1 理解tcpdump工作原理80

4.1.1 tcpdump的实现机制80

4.1.2 tcpdump与iptables的关系82

4.1.3 tcpdump的简要安装步骤82

4.1.4 学习tcpdump的5个参数和过滤器83

4.1.5 学习tcpdump的过滤器83

4.2 使用RawCap抓取回环端口的数据84

4.3 熟悉Wireshark的最佳配置项85

4.3.1 Wireshark安装过程的注意事项85

4.3.2 Wireshark的关键配置项86

4.3.3 使用追踪数据流功能89

4.4 使用libpcap进行自动化分析90

4.5 案例1:定位非正常发包问题91

4.6 案例2:分析运营商劫持问题94

4.6.1 中小运营商的网络现状94

4.6.2 基于下载文件的缓存劫持95

4.6.3 基于页面的iframe广告嵌入劫持99

4.6.4 基于伪造DNS响应的劫持100

4.6.5 网卡混杂模式与raw socket技术100

4.7 本章小结103

第5章 Linux用户管理105

5.1 Linux用户管理的重要性105

5.2 Linux用户管理的基本操作107

5.2.1 增加用户108

5.2.2 为用户设置密码108

5.2.3 删除用户109

5.2.4 修改用户属性109

5.3 存储Linux用户信息的关键文件详解110

5.3.1 passwd文件说明110

5.3.2 shadow文件说明111

5.4 Linux用户密码管理112

5.4.1 密码复杂度设置112

5.4.2 生成复杂密码的方法113

5.4.3 弱密码检查方法116

5.5 用户特权管理118

5.5.1 限定可以使用su的用户118

5.5.2 安全地配置sudo118

5.6 关键环境变量和日志管理119

5.6.1 关键环境变量设置只读119

5.6.2 记录日志执行时间戳119

5.7 本章小结120

第6章 Linux软件包管理122

6.1 RPM概述122

6.2 使用RPM安装和移除软件123

6.2.1 使用RPM安装和升级软件123

6.2.2 使用RPM移除软件124

6.3 获取软件包的信息125

6.3.1 列出系统中已安装的所有RPM包125

6.3.2 软件包的详细信息查询125

6.3.3 查询哪个软件包含有指定文件126

6.3.4 列出软件包中的所有文件126

6.3.5 列出软件包中的配置文件127

6.3.6 解压软件包内容127

6.3.7 检查文件完整性127

6.4 Yum及Yum源的安全管理129

6.4.1 Yum简介129

6.4.2 Yum源的安全管理130

6.5 自启动服务管理130

6.6 本章小结131

第7章 Linux文件系统管理133

7.1 Linux文件系统概述133

7.1.1 Inode134

7.1.2 文件的权限135

7.2 SUID和SGID可执行文件136

7.2.1 SUID和SGID可执行文件概述136

7.2.2 使用sXid监控SUID和SGID文件变化137

7.3 Linux文件系统管理的常用工具137

7.3.1 使用chattr对关键文件加锁137

7.3.2 使用extundelete恢复已删除文件138

7.3.3 使用srm和dd安全擦除敏感文件的方法141

7.4 案例:使用Python编写敏感文件扫描程序141

7.5 本章小结143

第8章 Linux应用安全145

8.1 简化的网站架构和数据流向145

8.2 主要网站漏洞解析146

8.2.1 注入漏洞147

8.2.2 跨站脚本漏洞148

8.2.3 信息泄露149

8.2.4 文件解析漏洞150

8.3 Apache安全152

8.3.1 使用HTTPS加密网站153

8.3.2 使用ModSecurity加固Web154

8.3.3 关注Apache漏洞情报158

8.4 Nginx安全158

8.4.1 使用HTTPS加密网站158

8.4.2 使用NAXSI加固Web159

8.4.3 关注Nginx漏洞情报160

8.5 PHP安全160

8.5.1 PHP配置的安全选项160

8.5.2 PHP开发框架的安全162

8.6 Tomcat安全163

8.7 Memcached安全165

8.8 Redis安全165

8.9 MySQL安全166

8.10 使用公有云上的WAF服务167

8.11 本章小结168

第9章 Linux数据备份与恢复170

9.1 数据备份和恢复中的关键指标171

9.2 Linux下的定时任务172

9.2.1 本地定时任务172

9.2.2 分布式定时任务系统174

9.3 备份存储位置的选择175

9.3.1 本地备份存储175

9.3.2 远程备份存储176

9.3.3 离线备份177

9.4 数据备份178

9.4.1 文件备份178

9.4.2 数据库备份179

9.5 备份加密181

9.6 数据库恢复182

9.7 生产环境中的大规模备份系统案例182

9.8 本章小结184

第10章 Linux安全扫描工具186

10.1 需要重点关注的敏感端口列表186

10.2 扫描工具nmap188

10.2.1 使用源码安装nmap188

10.2.2 使用nmap进行主机发现189

10.2.3 使用nmap进行TCP端口扫描190

10.2.4 使用nmap进行UDP端口扫描192

10.2.5 使用nmap识别应用192

10.3 扫描工具masscan193

10.3.1 安装masscan193

10.3.2 masscan用法示例193

10.3.3 联合使用masscan和nmap194

10.4 开源Web漏洞扫描工具195

10.4.1 Nikto2195

10.4.2 OpenVAS196

10.4.3 SQLMap198

10.5 商业Web漏洞扫描工具199

10.5.1 Nessus199

10.5.2 Acunetix Web Vulnerability Scanner201

10.6 本章小结202

第11章 入侵检测系统204

11.1 IDS与IPS204

11.2 开源HIDS OSSEC部署实践205

11.3 商业主机入侵检测系统214

11.3.1 青藤云215

11.3.2 安全狗215

11.3.3 安骑士215

11.4 Linux Prelink对文件完整性检查的影响217

11.5 利用Kippo搭建SSH蜜罐218

11.5.1 Kippo简介218

11.5.2 Kippo安装219

11.5.3 Kippo捕获入侵案例分析220

11.6 本章小结221

第12章 Linux Rootkit与病毒木马检查223

12.1 Rootkit分类和原理223

12.2 可加载内核模块225

12.3 利用Chkrootkit检查Rootkit226

12.3.1 Chkrootkit安装227

12.3.2 执行Chkrootkit227

12.4 利用Rkhunter检查Rootkit228

12.4.1 Rkhunter安装228

12.4.2 执行Rkhunter228

12.5 利用ClamAV扫描病毒木马229

12.6 可疑文件的在线病毒木马检查230

12.6.1 VirusTotal231

12.6.2 VirSCAN231

12.6.3 Jotti232

12.7 Webshell检测232

12.7.1 D盾233

12.7.2 LMD检查Webshell234

12.8 本章小结235

第13章 日志与审计237

13.1 搭建远程日志收集系统237

13.1.1 Syslog-ng server搭建238

13.1.2 Rsyslog/Syslog client配置239

13.2 利用Audit审计系统行为239

13.2.1 审计目标239

13.2.2 组件240

13.2.3 安装241

13.2.4 配置241

13.2.5 转换系统调用242

13.2.6 审计Linux的进程243

13.2.7 按照用户来审计文件访问244

13.3 利用unhide审计隐藏进程244

13.4 利用lsof审计进程打开文件245

13.5 利用netstat审计网络连接246

13.6 本章小结246

第14章 威胁情报248

14.1 威胁情报的概况248

14.2 主流威胁情报介绍249

14.2.1 微步在线威胁情报社区249

14.2.2 360威胁情报中心252

14.2.3 IBM威胁情报中心253

14.3 利用威胁情报提高攻击检测与防御能力254

14.4 本章小结255

附录A 网站安全开发的原则257

附录B Linux系统被入侵后的排查过程273


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。