防火墙(Firewall),也称防护墙,是由Check Point 创立者Gil Shwed于1993 年发明并引入国际互联网(US5606668(A)1993-12-15)。
它是一种位于内部网络与外部网络之间的网络安全系统。是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。
在网络的世界里,要由防火墙过滤的就是承载通信数据的通信包。
在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。
防火墙从诞生开始,已经历了四个发展阶段:
基于路由器的防火墙
用户化的防火墙工具套
建立在通用操作系统上的防火墙
具有安全操作系统的防火墙
现阶段常见的防火墙属于具有安全操作系统的防火墙,例如NETEYE、NETSCREEN、TALENTIT等。
网络层防火墙可视为一种 IP 封包过滤器,运作在底层的TCP/IP协议堆栈上。可以以枚举的方式只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。
应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
数据库防火墙是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。 数据库防火墙通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。 数据库防火墙面对来自于外部的入侵行为,提供SQL注入禁止和数据库虚拟补丁包功能。
Linux 防火墙在企业应用中非常有用,举例如下:
中小企业与网吧里有iptables 作为企业的NAT路由器,可以用来代替传统路由器,而节约成本。
IDC机房一般没有硬件防火墙,IDC机房的服务器可以用Linux 防火墙代替硬件防火墙。
iptables 可以结合squid 作为企业内部上网的透明代理。传统代理需要在浏览器里配置代理服务器信息,而iptables+squid 的透明代理则可以把客户端的请求重定向到代理服务器的端口。客户端不要作任何设置,而感觉不到代理的存在。
将iptables 作为企业NAT 路由器时,可以使用iptables 的扩展模块屏蔽P2P 流量,还可以禁止非法网页。
iptables 可以用于外网IP 向内网IP 映射。
iptables 可以轻松防止轻量级DOS 攻击,比如ping 攻击及SYN 洪水攻击。
综述,Iptables 有两种应用模式:主机防火墙,NAT路由器。
对应下图的字节传输流程,可以分为以下几层:
包过滤(Packet filtering):工作在网络层,仅根据数据包头中的IP地址、端口号、协议类型等标志确定是否允许数据包通过。
应用代理(Application Proxy):工作在应用层,通过编写不同的应用代理程序,实现对应用层数据的检测和分析。
状态检测(Stateful Inspection):工作在2~4层,访问控制方式与1同,但处理的对象不是单个数据包,而是整个连接,通过规则表和连接状态表,综合判断是否允许数据包通过。
完全内容检测(Compelete Content Inspection):工作在2~7层,不仅分析数据包头信息、状态信息,而且对应用层协议进行还原和内容分析,有效防范混合型安全威胁。
