首页 > Linux教程 > 正文

软件防火墙与硬件防火墙详解

在建筑行业,“防火墙”是指一种专门设计用来阻止火在建筑的不同部分蔓延的墙,后来这个术语传播到了类似汽车制造业等其他行业,并在20世纪80年代末进入计算机领域。在防火墙的一侧是热闹且混乱的互联网,在另一侧是你强大但易受攻击的Web服务器。

实际上防火墙更像是一扇有时不得不让某些东西正常通过的防火门,它们监视着所有进出互联网的电子交通,并根据一系列严格的规则来判断那些是可以通过,那些是不可以通过的。

这篇文章详细地解释了它们的工作原理,有效防火墙的不同类型,以及它们所擅长和不太擅长的工作,并且详细说明了如何通过配置防火墙来保护一般的Web服务器。

协议和端口

一台电脑就像是一个大的住宅区.每个在Internet上的电脑都拥有一个数字地址——即我们平时所说的IP地址.在每个地址我们有两个非常大的公寓楼,每个公寓楼包含65,535个独立的公寓。这些公寓中大部分是空的,但其中少数部分特别是号码较低的住着经常沟通的居民,所有的沟通都通过邮件。

一台电脑就像两栋公寓楼. 你可以通过10点标示这些公寓建筑.

这两栋公寓大楼就称为TCP和UDP. TCP大楼中的住户仅接受认证的邮件,他们保证可以回复你,一旦你开始与TCP大楼中的某人开始交换信件,你可以一直看到他们到结束. UDP大楼有点寒酸,这栋大楼的居民只能回答,如果他们被打扰,通常会这样做,但这个也不能保证。

大楼内每一户居民都有各自不同的工作。例如,住在TCP街区房号为80的居民负责处理网站查询。你可以向他们发出一个像“发给我www.smashingmagazine.com的网站主页”这样的请求,他们就会及时回复你并发给你相应的数据。

住在UDP街区房号为53的居民负责DNS服务。他们负责把域名翻译为IP地址。在这个街区有时信件会丢失,但这也没关系。UDP街区负责处理的信息并不是那么关键。丢了之后需要信息的人总会再重新请求一次。

在该邮局系统中,所有地址都分三部分:计算机的IP地址,街区,和公寓的房间号。例如:80.72.139.101,TCP,80。实际上,街区指的是协议(protocol),而公寓的房间号指的是端口(port)号。TCP是Transmission Control Protocol(传输控制协议)的缩写,而UDP是User Datagram Protocol(用户数据报协议)的缩写。TCP和UDP两者最大的不同在于,TCP要在两台计算机间建立和维护一个对话(也就是连接),而UDP不需要。因而TCP比较可靠但速度上会慢一点。

发送者的地址

在前面的例子中,居住在80.72.139.101, TCP, 80处的提供web服务的那户居民一般都是在家读书,就等着大家的来信。他们从不主动发起对话或连接,总是处于接收端。

但是,信件的发送者也要有个地址。无论你是通过Web浏览器还是通过智能手机浏览网页时,你都会有个由系统分配给你的、住在某房间的助手帮你完成浏览过程。这个助手的房间往往是在大楼中靠上面的高层。Web浏览器同Web服务器间进行对话的典型情况大致如下:

来自99.99.99.99,TCP,63454:“亲爱的80.72.139.101,TCP,80,据我所知,你负责处理对网站www.smashingmagazine.com的查询请求。可否请你将/books/page发送给我?  敬启,一个Web浏览器。”

来自80.72.139.101,TCP,80:“当然没问题。这就给你:<!DOCTYPE html> <html>…”

来自99.99.99.99,TCP,63454:“谢谢。就此搁笔。再见!“

号码低于1024的房间要比号码更大的房间稳定。这些房间有CCTV(译者注:这个CCTV所指应是闭路电视或远程监控摄像头而非那个著名的CCTV),专为提供类似网站或FTP服务等特定任务而预留。而高层的房间特别不稳定,人们总在搬家,一会搬进来一会搬出去;这些房间负责处理类似于请求Web页面和发起FTP连接等等这样的任务。

发送者的地址

在前面的例子中,居住在80.72.139.101, TCP, 80处的提供web服务的那户居民一般都是在家读书,就等着大家的来信。他们从不主动发起对话或连接,总是处于接收端。

但是,信件的发送者也要有个地址。无论你是通过Web浏览器还是通过智能手机浏览网页时,你都会有个由系统分配给你的、住在某房间的助手帮你完成浏览过程。这个助手的房间往往是在大楼中靠上面的高层。Web浏览器同Web服务器间进行对话的典型情况大致如下:

来自99.99.99.99,TCP,63454:“亲爱的80.72.139.101,TCP,80,据我所知,你负责处理对网站www.smashingmagazine.com的查询请求。可否请你将/books/page发送给我?  敬启,一个Web浏览器。”

来自80.72.139.101,TCP,80:“当然没问题。这就给你:<!DOCTYPE html> <html>…”

来自99.99.99.99,TCP,63454:“谢谢。就此搁笔。再见!“


号码低于1024的房间要比号码更大的房间稳定。这些房间有CCTV(译者注:这个CCTV所指应是闭路电视或远程监控摄像头而非那个著名的CCTV),专为提供类似网站或FTP服务等特定任务而预留。而高层的房间特别不稳定,人们总在搬家,一会搬进来一会搬出去;这些房间负责处理类似于请求Web页面和发起FTP连接等等这样的任务。

危险

但是,并非所有人都是规规矩矩的。下面就是住在咖啡馆上面的爱耍花招的骗子同住在一个易受攻击的服务器上的、爱轻信比尔的SSH居民间对话的例子。SSH是一种连接到远程计算机并在其上执行命令的方法。SSH居民一直住在TCP街区,房间号通常是22号。

来自88.88.88.88,TCP,58123:“亲爱的SSH服务器,我想同你建立一个连接,并以root的身份登录。”

来自80.72.139.101, TCP, 22:“当然没有问题,你的口令是?”

来自88.88.88.88:“smith”

来自80.72.139.101:“那不对。再试一试吧。”

来自88.88.88.88:“jones”

来自80.72.139.101:“还不对。再试一试吧。”

来自88.88.88.88:“bloggs”

来自80.72.139.101:“太棒了,Root先生你好!很久不见了,你今天想做什么?”

来自88.88.88.88:“我想我要看一下/etc/passwd这个文件,里面有所有用户名?”

来自80.72.139.101:“你要的信息在这里...别的还要什么?”

来自88.88.88.88:“再给我看看所有内容中包含'信用卡'的文件”

来自80.72.139.101:“不好意思,这需要花点时间。好了,给你。。。”

来自88.88.88.88:“谢谢!就此搁笔,再见!”


上面所说的SSH对话第一部分:以root身份登录,口令输错两次,查看了一个文件。

保护级别

上面描述的服务器是易受攻击的,任何人可以通过TCP协议使用22端口向80.72.139.101服务器发送信件,如果他们能够正确猜到密码,那么他们就拥有了服务器和所有服务器文件的完全访问权限。这一节我们讨论四种基本的保护级别,你可以用来让你的服务器避免上面的情况发生,并且可以只允许你所信任的人与你的服务器进行通信。

尽管SSH只是运行在服务器上的众多服务中的一个,但通过它来起步是非常合适的,因为它能提供对服务器的大部分控制。如果一个黑客入侵了你的FTP或者SMTP服务器,他们会进行一些破坏,但是通过SSH的话,遭到的破坏会更大。

好的密码

SSH确实有它自己的内置保护机制,因为它需要用户名和密码。保卫一个服务器最基本的也是首要的是选择一个复杂的并且很难被猜中的密码。

无论住在22号公寓的居民什么时候收到一封邮件,他首先会询问正确的密码。尽管他是一个值得信任的人,但如果你回答错误,那么他不会给你提供任何帮助。你可以随便尝试多少次,不过每隔三次或许你要重新发送你最初的请求信件,但是他一般不会介意。

拒绝连接

上面谈到的SSH会话在一定程度上是不正确的,如果你真的通过SSH请求80.72.139.101(Smashing Magazine的Web服务器),你会得到如下答复:

SSH连接被拒绝

这意味着住在80.72.139.101,TCP,22号公寓的居民正在接受邮件,但是立刻被发送回来了。在他的门上贴了一张纸,这张纸上列出了所有的允许通信的人员名单。当他收到邮件时,他会对应列表来检查发件人的地址,如果你不在名单之中,他就会拒绝任何的通信。但是他会很有礼貌地发个提示说:“不好意思,您的连接被拒绝了!”。

这种类型的保护是由类似UNIX服务器上的TCP包装器这样的软件来提供的。这种阻止是在应用程序级别使用/etc/hosts.denyand/etc/hosts.allow文件来实现的。

使用这种类型的阻止保护,特别狡猾的发送者仍然可以让住在22号公寓的居民相信他,并打开信件来阅读。同样,依赖个体居民来记录并执行名单列表。尽管在22号公寓的这个家伙非常尽职尽责,但是其它公寓的居民并非如此。

软件防火墙

软件防火墙就像门房中的看门人,对于所有发送进来的邮件,他会在将邮件分发给居民前,对这些所有这些邮件进行过滤。看门人办公桌上放着一张地址列表,他将邮件发送者的地址和列表中的地址逐一比对。如果列表中没有你的地址,那么看门人就会直接将你发送过来的信件扔进垃圾箱,而且不会给出任何跟踪信息或礼貌的道歉,一声不吭地扔了。看门人同样也对要发送出去的邮件进行过滤,过滤的方法是查看他手里的列表中允许哪些居民向外部世界发送邮件。

从技术角度看上去,就象这样:

SSH连接超时 —— 原因可能是因为目的地址那里没人在家或者整个途中有防火墙

这种类型的屏蔽操作发生在操作系统层面。软件防火墙确保不合格的邮件连目的地址都无法到达。请参见TCP封装器和软件防火墙之间的区别了解更详尽的解释。

硬件防火墙

硬件防火墙类似于邮局中受过专业培训的安全专家。她也有同看门人类似的一个列表,详尽地列出了允许谁向谁发送邮件。她可能仅在你的IP地址处为你提供保护,也肯能同时为许多IP地址甚至整个社区提供保护。她对进进出出的所有邮件中每一个字都要进逐一排查。只要发现有她不喜欢的内容就会果断抛弃邮件。此时你就会如上图所见,仅仅看到一个“连接超时”的消息。

这种是防火墙安全级别最高的情况。信件甚至还没有到达大门口,被误送给22号居民的机会根本毫无可能会发生。

当然,你可以在各个不同层次都实施这种保护措施,还可以采用多个硬件防火墙。在本地邮局设立一个硬件防火墙,在本市比较大的分拣办公室也安装一个,也可以安装一个防火墙对进入整个县、州或国家的所有邮件进行过滤。

请注意,实际上,硬件防火墙只是一台专门作为防火墙的计算机而已,它同Web服务器之间进行了物理隔离。防火墙本身依然是运行在计算机上的一个软件。

无状态和有状态的防火墙

看门人和安全专员对进出邮件进行过滤。如果他们是新上岗的,那他们就会有点象无状态的防火墙,也即,包过滤器(Packet Filter)。无状态防火墙平等处理所有邮件。当你向80号房间发送邮件时,80号房间会给你回一封邮件。回信需要通过列表的检查,发送给你的邮件只有在80号房间允许向外发出邮件的情况下,才能通过检查。

经过一段时间以后,他们的工资得以上调,从而成为了有状态的防火墙。经过培训,他们会对即将发出去的邮件进行区别对待,识别出哪些是回信哪些是全新的邮件。因此,他们的规则列表比以前要精炼得多。对于已经建立通信通道的回信,他们会按照要求给予放行;而那些新发起的发送出去的邮件就会被抛弃。因此,当你发邮件给80号房间时,给你的回信会自动允许通过检查。但如果是在冬日某个寂寞的夜晚,80号房间突然自行决定开始向外发起发邮件的活动,那么这些邮件将是无法通过检查的。


上一篇:Linux关机和重启服务器命令详解
下一篇:使用wget命令进行整站下载

PythonTab微信公众号:

Python技术交流互助群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854