网络攻击看来正在日益得势。几乎每一天都会听说发生了新的针对软件漏洞的攻击,要么就是出现了一个更有效的散布垃圾邮件的方法(我的收件箱可以证明这一
点),或者就是某公司或政府机构的敏感个人数据被窃这种轰动一时的事件。实现安全计算是一个永恒的挑战。我们并不缺乏挫败狡猾的黑帽黑客的技术,但他们仍
然在不断地成功入侵一个又一个系统和网络。
每一类安全问题都有对应的开源解决方案或专有的解决方案。在网络入侵检测系统和网络访问控制设备(防火墙、过滤路由器等)方面尤其如此。防火墙技术的一种发
展趋势是将来自入侵检测范畴的应用层检测技术与过滤网络流量的能力相结合,一些防火墙早就已经开始这么做了。本书的目的就是向读者显示
Linux系统上的
iptables防火墙可以充分把握这一趋势,特别是当它与一些旨在从入侵检测角度充分利用
iptables的软件相结合时更是如此。
我希望《
Linux防火墙》在已出版的相关著作中是独一无二的。市面上已有一些讨论
Linux防火墙各个方面的优秀书籍,但就我所知,还没有一本书是专门讨论通过
iptables及其提供的数据来检测(并在某些情况下挫败)攻击的。市面上还有许多介绍入侵检测的书籍,但没有一本书侧重于介绍如何真正地使用防火墙技术来辅助入侵检测过程。本书讨论的则是如何将这两种技术进行结合。
查看详情
本书相关信息:http://turingbooks.iteye.com/admin/blogs/371232
我会在书中用大量的篇幅来介绍
3个开源软件项目,它们旨在最大限度地发挥
iptables的效力以检测和防御攻击。这
3个项目是:
q
psad——
iptables日志分析程序和积极回应工具;
q
fwsnort——将
Snort规则转换为等价的
iptables规则的脚本;
q
fwknop——
iptables的单数据包授权(
SPA)的一个实现。
所有这些项目都是按照
GNU公共许可证(
GPL)的规定以开源软件的形式发布的,它们都可以从
http://www.cipherdyne.org网站上下载。
为什么要使用iptables
来检测攻击
ROSENCRANTZ
:
我是说
,
你们到底做什么呢
?
PLAYER
:
平时
,
我们或多或少做些自己份内的事情。在舞台上,我们按剧情要求进行表演。
其实每一个出口也可以是一个入口,如果你能这么看待的话,那事情就圆满了。
——
汤姆·斯托帕德《君臣人子小命呜呼》
如果你运行的是
Linux操作系统,那么很有可能遇到过
iptables防火墙。我这么说是有充分理由的,因为
iptables提供了一个有效的手段来控制谁可以并如何通过网络连接到
Linux系统。在因特网这个浩瀚自由的网络中,攻击可以来自全球的任何一个角落——虽然作恶之人可能就在附近。如果运行一个联网的
Linux主机,系统时时刻刻都将冒着被攻击和入侵的危险。
部署一个严格的
iptables过滤策略是维护一个强大安全实体的第一步。即使你的
Linux系统所连接的网络已受到上游的另一个防火墙或其他过滤设备的保护,但该上游设备总是有可能无法提供足够的保护。比如这类设备可能配置不当,也可能遇到
bug或其他故障,或不具备防御某类攻击的能力。所以在有可能的情况下实现一定程度的冗余是非常重要的,在每个
Linux系统(服务器和桌面机)上运行
iptables所带来的安全利益要大于因此所付出的额外管理开销。换句话说,在
Linux基础设施中部署并维护
iptables所付出的成本肯定要小于系统被入侵或有价值的数据丢失所带来的损失。
本书的主要目标是向读者显示如何从检测和回应网络攻击的角度来最大限度地利用
iptables。采用
iptables策略对用户访问
Linux系统上服务的行为进行限制是完成这个目标的第一步,但你将很快看到还需要做更多的事情。
专用的网络入侵检测系统怎么样
对入侵进行检测的工作通常是留给专门的系统来处理的,它们就是为这个目的设计的,并且它们对本地网络有着广泛全面的了解。本书并不主张改变这个策略。专用的网络入侵检测系统(
IDS
)作为负责保护网络安全的基础设施的一部分,其地位是不可替代的。此外,
IDS
可以收集到的原始数据包中的数据是一个宝贵的数据源。每当安全分析员需要搞清楚在攻击或系统入侵中究竟发生了什么时,原始数据包中的数据是至关重要的,可用于顺藤摸瓜,而来自
IDS
的事件则可以指明调查的方向。如果没有
IDS
对可疑活动发出警告,分析员可能完全不会想到系统遭受到了攻击。
本书主张的是将
iptables作为现有入侵检测基础设施的一个补充。虽然
iptables主要用于对网络流量加以策略限制,而不是检测网络攻击,但它所提供的强大功能使其能够模拟一些传统上只属于入侵检测范畴的重要功能。例如,
iptables的日志格式提供了网络层和传输层首部中几乎所有字段(包括
IP和
TCP选项)的详细数据,而且
iptables的字符串匹配功能可以针对应用层数据执行字节序列的匹配。这类功能对于检测入侵企图是至关重要的。
入侵检测系统通常都是被动设备,它们没有被配置为针对可能怀有恶意的网络流量自动采取任何惩罚行动。一般而言,这么做是有充分理由的,因为这可以避免误将正常的流量看作怀有恶意的流量(即
误报
)。但也有一些
IDS可以被部署为线内模式,当系统以这种方式部署时,通常就称为网络
入侵防御系统
(
IPS)
[①]
。因为
iptables是一个防火墙,所以它总是以线内模式运行的,这使得它可以在许多攻击造成重大损失之前将它们过滤掉。出于保障网络的基本连通性和网络性能的考虑,许多机构一直在犹豫是否在它们的网络基础设施中部署一个线内模式的
IPS,但在某些情况下,基于应用层检查条件来过滤流量又是非常有用的。在
Linux系统上,
iptables可以通过将
IDS签名转换进
iptables策略以阻止网络攻击的方式来提供基本的
IPS功能。
纵深防御
纵深防御
是
一个从军事上借用的原则,它常在计算机安全领域中应用。它规定我们必须在一个任意系统的各个层次都考虑到受攻击的可能性,攻击可能来自于计算机网络或一个
实际的军事设施等各个方面。没有任何事情可以确保攻击绝不会发生。而且,一些攻击可能会成功地入侵或破坏一个系统的某些组件。因此,在系统中的各个层次部
署多级防御机制是非常重要的,这样一来,当攻击入侵了一个安全设备时,另一个设备仍能正常工作以阻止它造成更多的损害。
在网络安全领域,最优秀的开源入侵检测系统是
Snort,许多商业厂商也生产了优秀的防火墙和其他过滤设备。但如果你的基础设施中运行的是
Linux系统,那么你需要考虑的真正问题是仅仅依靠这些安全机制来保护关键资产是否明智。纵深防御原则表明
iptables可以作为对现有安全基础设施的一个重要补充。
先决条件
本书假设读者比较熟悉
TCP/IP网络概念和
Linux系统管理。如果读者对
OSI参考模型、主要的网络层和传输层协议(
IPv4、
ICMP、
TCP和
UDP)以及
DNS和
HTTP应用层协议也比较了解的话,会对理解本书的内容很有帮助。虽然书中会经常提到
OSI参考模型中的各层,但主要讨论的是其中的网络层、传输层和应用层(分别对应的是第
3、
4和
7层),会话层和表示层在书中没有提及,物理层和数据链路层只是简略提到(有关第
2层过滤的详细信息可以在
http://ebtables.sourceforge. net
上找到)。本书对网络层、传输层和应用层的涵盖强调了攻击可能在上述每一层中发生——我们假设读者对这些层的结构和功能都比较熟悉。虽然我们并没有专门讨论无线协议和
IPv6,但书中的许多例子都同样适用于这些协议。
如果读者具备一些基本的编程实践(尤其是
Perl和
C编程语言),那么对理解本书的内容也将是有益的,书中的代码示例一般都会被细分和解释。书中有些地方还会显示由
tcpdump以太网嗅探器捕获到的原始数据包中的数据,因此若用过以太网嗅探器(如
tcpdump或
Wireshark)也将有助于你阅读本书。除了上面提到的这些内容以外,我们并不要求读者必须具备计算机安全、网络入侵检测或防火墙概念的知识才能阅读本书。
最后,因为本书主要讨论的是对网络攻击的检测和回应,所以书中一般不讨论主机级的安全问题,如通过删除编译器来加固运行
iptables的系统、大量削减用户账号、打上最新的安全补丁,等等。
Bastille Linux项目(见
http://www.bastille-linux.org)提供了很好的主机安全方面的信息。对于真正的核心安全员来说,美国国家安全局的
SELinux发行版(见
http://www.nsa.gov/selinux)在这方面是个很好的榜样,它从系统中最重要的组件——内核本身开始增强系统的安全性。
技术参考
下面列出的都是一些优秀的技术参考书籍,它们为本书所介绍的内容提供了更多的技术细节。
q
《构建
Internet防火墙》第
2版(
Building Internet Firewalls
,
Elizabeth D. Zwicky,
Simon Cooper和
D. Brent Chapman著,
O’Reilly公司
2000年出版);
q
《计算机网络》第
4版(
Computer Networks
,
Andrew S. Tannenbaum著,
Prentice Hall公司,
2002年出版);
q
《防火墙与
Internet安全:击退狡猾的黑客》第
2版(
Firewalls and Internet Security
:
Repelling the Wily Hacker
,
William R. Cheswick,
Steven M. Bellovin和
Aviel D. Rubin著,
Addison-Wesley公司
2003年出版);
q
《
Linux系统安全》第
2版(
Linux System Security
,
Scott Mann和
Ellen L. Mitchell著,
Pearson Education公司
2002年出版);
q
《
Perl语言编程》第
3版(
Programming Perl
,
Larry Wall,
Tom Christiansen和
Jon Orwant著,
O’Reilly公司
2000年出版);
q
《网络安全监控之道:超越入侵检测》(
The Tao of Network Security Monitoring
:
Beyond Intrusion Detection
,
Richard Bejtlich著,
Addison-Wesley公司
2004年出版);
q
《
TCP/IP指南》(
The TCP/IP Guide
,
Charles M. Kozierok著,中文版人民邮电出版社
2008年出版);
q
《
TCP/IP详解,卷
1:协议》(
TCP/IP Illustrated
,
Volume 1
:
The Protocols
,
W. Richard Stevens著
Addison-Wesley公司
1994年出版)。
有关网站
本书中包含一些示例脚本、
iptables策略和命令、网络攻击案例和相关的数据包捕获。所有这些材料都可以在本书的网站
http://www.cipherdyne.org/LinuxFirewalls上下载。拥有这样一份电子副本是自己修改并试验本书中的概念和代码的最佳方式。该网站还提供了
psad、
fwsnort和
fwknop项目的使用示例和文档,以及使你能够查看每个项目源代码的
Trac接口(
http://trac.edgewall.com)。每个项目的源代码都被小心地保存在一个
Subversion版本库(
http://subversion.tigris.org)中,使我们可以很容易地看出代码是如何从一个版本改进到下一个版本的。最后,读者还可以在该网站上找到一些有趣的
iptables日志数据的图形表示。
如果在阅读本书时有任何问题,你还可能在本书的网站上找到答案,当然也可以直接问我,我的电子邮件地址是
mbr@cipherdyne.org。
每章摘要
你在阅读本书的过程中将接触到许多内容,本节提供各章的简要概述,让你提前了解将要学习的内容。
第
1章
:
iptables使用简介
这一章介绍如何使用
iptables进行数据包过滤,包括内核编译的细节和
iptables管理。这一章还提供了一个默认的策略和网络图,本书的其余章节都将参考这个策略和网络图。运行默认策略的
Linux主机作为局域网(
LAN)的防火墙,针对这个系统的攻击将在后续章节中说明。
第
2章:网络层的攻击与防御
这一章介绍了网络层的攻击类型,以及我们的应对办法。我将向读者介绍
iptables日志格式,并强调可以从
iptables日志中收集到的网络层信息。
第
3章:传输层的攻击与防御
传输层是使用端口扫描和端口扫射实现服务器侦查的领域,这一章将研究这些方法的内部机理。
iptables的日志格式非常适合于表示传输层首部信息,这些信息可用于检测各种类型的攻击。
第
4章:应用层的攻击与防御
如今的大多数攻击都是在利用位于
TCP/IP协议簇顶端的日益复杂的应用层的漏洞。这一章说明了
iptables可以检测到的各类应用层攻击,并介绍了
iptables的字符串匹配扩展。
第
5章:端口扫描攻击检测程序
psad简介
这一章讨论
psad
的安装和配置,并展示为什么倾听
iptables
日志叙述的故事是那么地重要。
第
6章:
psad运作:检测可疑流量
psad提供了许多功能,旨在最大限度地发挥
iptables日志信息的作用。
psad可以检测各种可疑活动(从端口扫描到后门探测)并通过详细的电子邮件和
syslog警报来报告这些活动。
第
7章:
psad高级主题:从签名匹配到操作系统指纹识别
这一章介绍
psad的高级功能,包括集成的被动式操作系统指纹识别、通过数据包首部实现
Snort签名检测、详细的状态信息和
DShield报告。这一章显示了
iptables日志信息在提供安全数据方面所能发挥的巨大作用。
第
8章:使用
psad实现积极回应
如果对入侵检测的讨论没有提及自动回应攻击,那么这样的讨论就是不完整的。
psad提供的回应功能是建立在整洁的接口之上的,它使得
psad与第三方软件的集成变得更加容易,这一章包括了一个
psad与
Swatch项目集成的例子。
第
9章:转换
Snort规则为
iptables规则
Snort IDS向
IDS社区显示了基于网络攻击的检测方法,因此在
iptables中充分利用
Snort签名语言是合乎逻辑的。因为
iptables提供了丰富的日志记录格式和检查应用层数据的能力,所以有相当数量的
Snort签名都可以转换为
iptables规则。
第
10章:部署
fwsnort
将
Snort签名转换为
iptables规则的繁琐任务由
fwsnort项目来自动完成。这一章将告诉你它是如何完成的。部署
fwsnort将赋予你的
iptables策略以入侵检测的能力。
第
11章:结合
psad与
fwsnort
由
fwsnort生成的日志信息可以被
psad识别并分析,从而通过电子邮件更好地进行报告(电子邮件中包括了集成的
whois、反向
DNS查询以及被动式操作系统指纹识别)。这一章代表了攻击检测的最高点和
iptables可以做到的减缓策略。
第
12章:端口碰撞与单数据包授权
被动授权对于保持网络服务的安全正变得越来越重要。通过使用这类技术,零日攻击的破坏范围将大大受到限制,但并不是所有的被动授权模型都适用于关键部署。这一章将对比两种被动授权机制:端口碰撞和单数据包授权(
SPA)。
第
13章:
fwknop简介
目前可以使用的
SPA实现很少,
fwknop是其中开发最活跃并受到广泛支持的
SPA实现。这一章将讲述如何安装
fwknop并将
fwknop与
iptables结合起来以维护默认丢弃的
iptables策略,该策略将阻止所有未经验证和授权而企图连接到你的
SSH守护进程的行为。
第
14章:可视化
iptables日志
最后一章介绍
iptables日志数据的图形化表示。图形可以快速地展现网络通信中的变化趋势,揭示可能的系统入侵活动,通过将
psad与
AfterGlow项目相结合,可以洞悉
iptables日志数据中原本难以发现的关联。
附录
A:攻击伪造
剖析
Snort签名规则集,然后使用伪造的源地址构造一个匹配这些签名的数据包是极其容易的。附录
A讨论了一个
Perl脚本示例(与
fwsnort项目一起发布),该脚本就是用来做这件事情的。
附录
B:一个完整的
fwsnort脚本
fwsnort项目创建一个
shell脚本自动执行
iptables命令,必须执行这些命令才能创建一个能够检测应用层攻击的
iptables策略。附录
B包含了一个由
fwsnort生成的
fwsnort.sh脚本的完整示例。
本书采用的是一种高度实用的写法。理解概念的最好方法莫过于研究实例,而研究源代码或仔细检查数据包跟踪总是理解计算机工作原理的最佳方式。希望读者通过阅读本书,可以掌握使用
iptables来检测并处理网络攻击的实用知识。再次重申,我欢迎读者向我提问,我的电子邮件地址是
mbr@cipherdyne.org。
[①
]
尽管
IPS有着这样一个冠冕堂皇的名字和供应商永无休止的营销炒作,但如果网络入侵防御系统没有一种方法来
检测
攻击,那么它就什么都不是——而检测机制就来自
IDS领域。网络
IPS通常只是增加了一些额外的设施来处理线内流量并回应攻击。
分享到:
相关推荐
他是psad, fwknop, and fwsnort等著名开源安全软件的开发者,也是屡获大奖的Dragon入侵防御系统的安全架构师。除本书外,他还与人合撰了Snort 2.1 Intrusion Detection和Intrusion Prevention and Active Response等...
他是psad, fwknop, and fwsnort等著名开源安全软件的开发者,也是屡获大奖的Dragon入侵防御系统的安全架构师。除本书外,他还与人合撰了Snort 2.1 Intrusion Detection和Intrusion Prevention and Active Response等...
书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。 ...
书中全面阐述了iptable防火墙,并详细讨论了如何应用psad、fwsnort、fwknop3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。
书中全面阐述了iptables防火墙,并详细讨论了如何应用psad,fwsnort,fwknop3个开源软件最大限度的发挥iptables检测和防御攻击的效力。大量真实离职以及源代码更有助于理解安全防御的原理、技术和实际操作。 本书适合...
Linux上iptables防火墙的基本应用教程,简单明了,希望有用。
Linux Firewalls Attack Detection and Response,这是英文原版,内容清晰,...书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。
fwknop-client
包括fwknop服务器和客服端的dockerfile,以及docker-compose文件。可以演示ssh的登录的单包认证
fwknop安卓客户端
fwknop客户端Windows 详见:http://blog.csdn.net/suntongo/article/details/53806943
fwknop2 - Android Single Packet Authorization Client Introduction This repository contains the Fwknop2 client for using Single Packet Authorization from Android phones. Here are a few screenshots to ...
fwknop项目支持四种不同的防火墙:Linux,OpenBSD,FreeBSD和Mac OS X上的iptables,firewalld,PF和ipfw。还支持自定义脚本,因此可以使fwknop支持其他基础结构,例如ipset或nftables。 。 SPA本质上是下一代Port...
防火墙攻击原理介绍.pdf
只有一个缓冲区溢出实验,新手学习LINUX操作系统开发总要做些实验,这个实验就是个简单实验
openwrt中的dl目录文件,编译工具链、目标平台的软件包等需要下载的文件
Morpheus是fwknop(单一数据包授权系统)的Windows客户端。