内容摘要

1、防火墙(Firewall)

1.1防火墙定义

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。

在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。

1.2防火墙分类

1)网络防火墙

网络层防火墙可视为一种 IP 封包过滤器,运作在底层的TCP/IP协议堆栈上。我们可以以枚举的方式,只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。

我们也能以另一种较宽松的角度来制定防火墙规则,只要封包不符合任何一项“否定规则”就予以放行。操作系统及网络设备大多已内置防火墙功能

2)应用防火墙

应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。

防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。不过就实现而言,这个方法既烦且杂(软件有千千百百种啊),所以大部分的防火墙都不会考虑以这种方法设计。

XML 防火墙是一种新型态的应用层防火墙。

根据侧重不同,可分为:包过滤型防火墙、应用层网关型防火墙、服务器型防火墙。

3)数据库防火墙

数据库防火墙是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。

数据库防火墙通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。

数据库防火墙面对来自于外部的入侵行为,提供SQL注入禁止和数据库虚拟补丁包功能。

2、netfilter/iptables

在Linux系统中,提供了一个叫做netfilter的框架,用于对数据管理。

Netfilter官方网站:http://www.netfilter.org

1)Netfilter的设计架构

在NetFilter的处理中,提供了一系列的钩子函数。

图中1、2、3、4、5就是钩子函数的位置。分为3条路径:

1、2:代表了到本机的封包。

5、4:代表了由本机发出的封包。

1、3、4:代表了需要转发的封包。

2)iptables

Iptables就是在netfilter框架基础上,实现相关钩子函数,从而提供了防火墙(packet filter)、网络地址转换(NAT)、封包修改(package mangle)等功能:

图中涉及的功能有:Filter、Connection Track、NAT、Mangle,其实还有两个:raw、Security。

Connection Track其实是NAT的一部分。

从上图,也能看出有3条数据流向,分别对应了:目的为本机的报文、由本机发出的报文、转发的报文。

Iptables实现了netfilter的钩子函数从而提供这些功能。在钩子的实现过程中,利用了一系列的规则链(rule chain),封包就是要在相应的规则链上进行检查,检查通过后才会到达最终目的地。

功能与规则链对照表

功能(表)

Filter

INPUT、FORWARD、OUTPUT

Nat

PREROUTING、OUTPUT、POSTROUTING

Mangle

PREROUTING、INPUT、OUTPUT、POSTROUTING

raw

PREROUTING、OUTPUT

Security

INPUT、FORWARD、OUTPUT

从该表也可以看出,规则链也正好与所处的钩子函数的位置是一一对应的。

如果系统中使用了多个功能,也就是配置了多个规则链是如何结合工作的呢?

上图就是封包在这些规则链的处理流程。

3、iptables命令详解

在终端使用man iptables就可以看到这个命令的说明。也可以在线查看:http://ipset.netfilter.org/iptables.man.html

3.1命令的语法

iptables [-t table] {-A|-C|-Dchain rule-specification

iptables [-t table-I chain [rulenumrule-specification

iptables [-t table-R chain rulenum rule-specification

iptables [-t table-D chain rulenum

iptables [-t table-S [chain [rulenum]]

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

iptables [-t table-N chain

iptables [-t table-X [chain]

iptables [-t table-P chain target

iptables [-t table-E old-chain-name new-chain-name

rule-specification = [matches...] [target]

match = -m matchname [per-match-options]

target = -j targetname [per-target-options]

其中最常用的规则是:

iptables –t command match_parameters –j target

下面使用一个例子来说明参数:

例子:允许以SSH方式连接到本机:

Iptables –t filter -A INPUT –p tcp –m tcp -–dport 22 –j ACCEPT

1)table 参数

-t :表名。Iptables提供了多种功能。table参数其实就是功能的名称。

上面例子中,使用了防火墙功能(filter),所以参数-t的值就是filter。table的可选值参见:功能与规则链对照表

该参数默认值就是filter,所以配置防火墙时,可以不设置表名。

2)command 参数

command参数是对规则链进行操作,例如添加一条规则。Iptables提供了下面这些command。

-A,--append chain rule-specification追加一个规则。

-C,--check chain rule-specification检查你输入的规则在规则链中是否已存在。

-D,--delete(chain rule-specification | chain rulenum)删除指定规则链中的指定的规则。

-I, --insert chain [rulenum] rule-specification在指定规则链中插入规则。

-L,--list [chain]列出所有指定规则链中所有的规则。

-R,--replace chain rulenum rule-specification替换规则。

-S,--list-rules [chain]打出指定链中的所有规则。

-N,--new-chain chain自定义一条规则链。

-X,--delete-chain [chain]删除指定的用户自定义的规则链。

-P,--policy chain target 设置指定链的target参数的默认值。

-E,--rename-chain old-chain new-chain 对规则链重命名。

-F,清除规则。

-h 查看帮助。

4) match paramtes

[!] –p,--protocol protocol协议

用于判断一个packet是否采用了指定的协议。

参数值可以是:tcp、udp、udplit、icmp、esp、sh、sctp,或者是all(所有协议),或者是数字。数字0等价于all。

如果参数值前面有!,则是做相反的判断。即判断packet没有采用指定的协议。

[!] –s,--source address[/mask][,….]

用于匹配封包的来源,即判断一个封包的是否来自于指定的地址。

该参数值可以是网络名,主机名,IP地址(可以带有子网掩码)。如果参数值前面有!,则是做相反的判断。

[!] –d, --destination address[/mask][,…]

用于匹配封包的目的地址,即判断一个封包的是否要到达指定的地址。

参数值与-s类似。

-m,--match expression扩展匹配

-j,--jump target 这个参数的作用是在封包匹配上述规则的情况下,接下来要执行的规则。而接下来要执行的规则,则是由target参数指定的。

[!] –i,--in-interface name 指定接收时采用的网络接口

当一个packet进入了INPUT、FORWARD、PREROUTING链时,判断这个packet是否是指定的这个网络接口(interface)接收的。

如果参数值前面有!,则是做相反的判断。

如果参数值以+结尾,则是指所有的开始于指定的接口的那些网络接口都会被匹配到。

[!]-o ,--out-interface name 指定发送时采用的网络接口。

这与--in-interface是一样的。

-g,--goto chain

packet继续被指定的chain处理。

4)target 规则名称

防火墙规则中不单单会对packet进行匹配限定,也会对target进行限定。如果packet 与指定的规则不匹配,就会执行下一条规则。如果匹配,执行target所代表的下一条规则。

也就是说target是接下来要执行的规则的名称。此外,也提供了几个特定的值。

ACCEPT:接收该包,让该包通过。

DROP:在底层丢掉这个包。就是将该包废弃了。

QUEUE:传递该包到用户空间。

RETURN:停止在改chain上传输,继续执行前一条chain上的下一个规则。

5) match extension 匹配的扩展

在匹配参数中,只能针对协议、源地址、目标地址、网络接口等进行匹配。对于需要更细致的匹配(例如对目标端口的匹配),则无能为力。匹配参数中,有一个-m,这个可以提供更细致的匹配。

例如,要使接受SSH发的packet,则需要使用tcp的扩展,可以指定Packet的目标地址:

使用-m tcp –dport 就可以了。

Iptables –t filter -A INPUT –p tcp –m tcp –dport 22 –j ACCEPT

如果想要一次指定多个端口,可以使用multiport的扩展:

Iptables –t filter -A INPUT –p tcp –m tcp -–dport 22,21,8080,1900 –j ACCEPT

具体有哪些扩展匹配,可以参考:

http://ipset.netfilter.org/iptables-extensions.man.html

3.2、示例

网上有很多示例,可以参考:

http://www.cnblogs.com/argb/p/3535179.html

 4、防火墙管理

service iptables {start|restart|stop|condrestart|status|panic|save}

start:启动

stop:停止

restart:重启

status:查看状态

save:保存到配置文件中

在配置防火墙时,通常会:

、servic iptables start

、使用iptables命令来配置规则

、service iptables save,将配置保存到配置文件中

如果是远程进行防火墙配置时, 记得要将22(SSH)端口配置进去,不然自个不能登录操作了。

Linux iptables 防火墙的更多相关文章

  1. linux iptables 防火墙简介

    iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非 ...

  2. 15.linux iptables防火墙规则vsftp服务

    一.服务所开启的端口号.          dhcp 67       samba 139 445       http 80  https 443       mysql 3306         ...

  3. Linux iptables防火墙

    查找安装包yum list | grep iptables 安装iptables yum install iptables-services 重启防火墙使配置文件生效 systemctl restar ...

  4. CentOS Linux iptables 防火墙

    快速安装,配置,启动,检查 - 关闭 5002 - 5011 端口开放所有其它 yum install iptables iptables -F iptables -X iptables -Z ipt ...

  5. Linux iptables 防火墙详解

    0x00 iptables介绍 linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成. netfilter 组件也称为内核空间,是内核的一部分,由一些 ...

  6. Linux iptables 防火墙设置

    1.查看防火墙iptables -L -niptablesb -L -n --line-number  显示规则行号看到 INPUT ACCEPT, FORWARD ACCEPT , OUTPUT A ...

  7. LINUX IPTABLES 防火墙配置

     0.iptables(ACL)的匹配原则: 与cisco等一致,从上到下依次匹配. 1.iptables的基本用法:. (1)命令格式 iptables [–ttable] command [mat ...

  8. Linux iptables 防火墙常用规则

    iptables 安装 yum install iptables iptables 规则清除 iptables -F iptables -X iptables -Z 开放指定的端口允许本地回环接口(即 ...

  9. linux 的iptables防火墙

    .a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A  ???.a看到的 symbolic符合名称都是 相应的,  包含的  .o文件.... linux 2.4内核中 ...

随机推荐

  1. ORA-00257 archiver error 处理思路

    1.首先查下oerr给出的简要说明 2.查询V$RECOVERY_AREA_USAGE信息 3.根据实际空间剩余情况先适当增加归档目录的大小,保证先恢复业务 4.查看备份是否存在问题 1.首先查下oe ...

  2. Kooboo CMS - Html.FrontHtml.Position 详解

    DataContract 数据契约 http://www.cnblogs.com/Gavinzhao/archive/2010/06/01/1748736.html https://msdn.micr ...

  3. 你的日志组件记录够清晰嘛?--自己开发日志组件 Logger

    现在现成的日志组件实在是太多太多,为什么我还需要自己实现呢????? 需求来源于java的log4j, [07-31 16:40:00:557:WARN : com.game.engine.threa ...

  4. Block知识点总结

    block的作用 block用于保存一段代码 在适当的时候再使用  它是一种数据类型 block的定义格式: 返回值  (^block变量名)(形参列表) = ^(形参列表) { 需要执行的代码}; ...

  5. 使用CodeDom动态生成类型

    .NET 3.5的时候加入了匿名类型这个特性,我们可以直接使用 new {name="abc"} 来直接生成一个对象.这个特性现在应用的地方很多,比如dapper的查询参数都是用匿 ...

  6. 详解Javascript的继承实现(二)

    上文<详解Javascript的继承实现>介绍了一个通用的继承库,基于该库,可以快速构建带继承关系和静态成员的javascript类,好使用也好理解,额外的好处是,如果所有类都用这种库来构 ...

  7. C#基础-关于用json给控制台程序传值的坑

    上周遇到了一个非常诡异的坑,首先写了两个程序,第一个程序输出成dll,第二个程序是控制台程序. 在第一个程序里,我使用了process去启动第二个程序,同时传入了一个Json作为参数,即: Proce ...

  8. webControls与客户端脚本路径

    网上有用的资料不多,在一本电子书中摘抄了内容如下 webControls配置节只有一个clientScriptsLocation属性,此属性用于指定ASP.NET客户端脚本的默认存放路径.这些文件是包 ...

  9. Redis两种持久化方式(RDB&AOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...

  10. IIS实现反向代理

    http://www.cnblogs.com/dreamer-fish/p/3911953.html C#实现: C#写的一个反向代理,可以缓存 https://www.oschina.net/cod ...