当前位置:文档之家› linux防火墙的设置

linux防火墙的设置

linux防火墙的设置
linux防火墙的设置

Linux防火墙配置(一)

随着Internet规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免受侵害的最基本的一种手段。虽然防火墙并不能保证系统绝对的安全,但由于它简单易行、工作可靠、适应性强,还是得到了广泛的应用。本章主要介绍与Linux系统紧密集成的iptables防火墙的工作原理、命令格式,以及一些应用实例。

9.1 iptables防火墙介绍

netfilter/iptables是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关iptables防火墙的基本知识,包括netfilter框架、iptables防火墙结构与原理、iptables命令格式等内容。

9.1.1 netfilter框架

Linux内核包含了一个强大的网络子系统,名为netfilter,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT、IP伪装等,也可以因高级路由或连接状态管理的需要而修改IP头信息。netfilter位于Linux网络层和防火墙内核模块之间,如图9-1所示。

图9-1 netfilter在内核中的位置

虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter模块将防火墙的功能引入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。netfilter模块的结构如图9-2所示。

图9-2 netfilter结构框架图

对IPv4协议来说,netfilter在IP数据包处理流程的5个关键位置定义了5个钩子(hook)函数。当数据包流经这些关键位置时,相应的钩子函数就被调用。从图9-2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数PRE_ROUTING处理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。

若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD处理,然后还要经钩子函数POST_ROUTING处理后才能传输到网络。本机进程产生的数据包要先经过钩子函数LOCAL_OUT处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING处理后再发送到网络。

%说明:内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,钩子

函数就会按照优先级依次调用这些注册的函数,从而可以使其他内核模块参与对数据包的处

理。这些处理可以是包过滤、NAT以及用户自定义的一些功能。

9.1.2 iptables防火墙内核模块

netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块正是通过把自己的函数注册到netfilter的钩子函数这种方式介入了对数据包的处理。这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT)和对数据包进行修改。其中,NAT还分为SNAT和DNAT,分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图9-3所示。

由图9-3可以看出,防火墙模块在netfilter的LOCAL_IN、FORWARD和LOCAL_OUT 3个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进行过滤。这三个位置也称为三条链,名称分别为INPUT、FORWARD和OUTPUT,它们共同组成了一张过滤表,每条链可以包含各种规则,每

一条规则都包含0个或多个匹配以及一个动作。当数据包满足所有的匹配时,则过滤函数将执行设定的动作,以便对数据包进行过滤的。

图9-3 iptables防火墙内核模块结构框架图

%注意:这些规则的次序是很重要的,过滤函数对数据包执行了某一规则动作后,对数据包的

处理即告结束,即使这个数据包还满足后面其他规则的所有匹配,也不会执行那些规则所设

定的动作。

从图9-3中可以看出,除了过滤表以外,在PRE_ROUTING、LOCAL_OUT和POST_ ROUTING 3个位置各有一条有关NAT的链,名称分别为PREROUTING、OUTPUT和POSTROUTING,它们组成了NAT表。NAT链里面也可以包含各种规则,它指出了如何对数据包的地址进行转换。

此外,5个钩子函数位置的mangle链还组成了一张mangle表,这个表的主要功能是根据规则修改数据包的一些标志位,例如TTL、TOS等,也可以在内核空间为数据包设置一些标志。防火墙内的其他规则或程序(如tc等)可以利用这种标志对数据包进行过滤或高级路由。

以上介绍的是iptables防火墙的内部结构,Linux系统还提供了iptables 防火墙的用户接口,它可以在上述各张表所包含的链中添加规则,或者修改、删除规则,从而可以根据需要构建自己的防火墙。具体来说,用户是通过输入iptables命令来实现上述功能的。

9.1.3 iptables命令格式

在RHEL 5中,iptables命令由iptables-1.3.5-1.2.1软件包提供,默认时,系统已经安装了该软件包,因此,用户可以直接输入iptables命令对防火墙中的规则进行管理。iptables命令相当复杂,具体格式如下所示。

iptables [-t 表名] <命令> [链名] [规则号] [规则] [-j 目标]

-t选项用于指定所使用的表,iptables防火墙默认有filter、nat和mangle 3张表,也可以是用户自定义的表。表中包含了分布在各个位置的链,iptables 命令所管理的规则就是存在于各种链中的。该选项不是必需的,如果未指定一个具体的表,则默认使用的是 filter表。

命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。还有一些命令要指定规则号。具体的命令选项名称及其与后续选项的搭配形式如下所示。

示例1:

-A <链名> <规则>

功能:在指定链的末尾添加一条或多条规则。

示例2:

-D <链名> <规则>

-D <链名> <规则号>

功能:从指定的链中删除一条或多条规则。可以按照规则的序号进行删除,也可以删除满足匹配条件的规则。

示例3:

-R <链名> <规则号> <规则>

功能:在指定的链中用新的规则置换掉某一规则号的旧规则。

示例4:

-I <链名> [规则号] <规则>

功能:在给出的规则序号前插入一条或多条规则,如果没有指定规则号,则默认是1。

示例5:

-L [链名]

功能:列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将被列出。

示例6:

-F [链名]

功能:删除指定链中的所有规则,如果没有指定链,则所有链中的规则都将被删除。

示例7:

-N <链名>

功能:建立一个新的用户自定义链。

示例8:

-X [链名]

功能:删除指定的用户自定义链,这个链必须没有被引用,而且里面也不包含任何规则。如果没有给出链名,这条命令将试着删除每个非内建的链。

示例9:

-P <链名> <目标>

功能:为指定的链设置规则的默认目标,当一个数据包与所有的规则都不匹配时,将采用这个默认的目标动作。

示例10:

-E <旧链名> <新链名>

功能:重新命名链名,对链的功能没有影响。

以上是有关iptables命令格式中有关命令选项部分的解释。iptables命令格式中的规则部分由很多选项构成,主要指定一些IP数据包的特征。例如,上一层的协议名称、源IP地址、目的IP地址、进出的网络接口名称等,下面列出构成规则的常见选项。

● -p<协议类型>:指定上一层协议,可以是icmp、tcp、udp和all。

● -s:指定源IP地址或子网。

● -d:指定目的IP地址或子网。

● -i<网络接口>:指定数据包进入的网络接口名称。

● -o<网络接口>:指定数据包出去的网络接口名称。

%注意:上述选项可以进行组合,每一种选项后面的参数前可以加“!”,表示取反。

对于-p选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据包特征。常见的子选项如下所示。

● -p tcp --sport :指定TCP数据包的源端口。

● -p tcp --dport :指定TCP数据包的目的端口。

● -p tcp --syn:具有SYN标志的TCP数据包,该数据包要发起一个新的TCP连接。

● -p udp --sport :指定UDP数据包的源端口。

● -p udp --dport :指定UDP数据包的目的端口。

● -p icmp --icmp-type :指定icmp数据包的类型,可以是echo-reply、echo-request等。

上述选项中,port可以是单个端口号,也可以是以port1:port2表示的端口范围。每一选项后的参数可以加“!”,表示取反。

上面介绍的这些规则选项都是iptables内置的,iptables软件包还提供了一套扩展的规则选项。使用时需要通过-m选项指定模块的名称,再使用该模块提供的选项。下面列出几个模块名称和其中的选项,大部分的选项也可以通过“!”取反。

-m multiport --sports

功能:指定数据包的多个源端口,也可以以port1:port2的形式指定一个端口范围。

-m multiport --dports

功能:指定数据包的多个目的端口,也可以以port1:port2的形式指定一个端口范围。

-m multiport --ports

功能:指定数据包的多个端口,包括源端口和目的端口,也可以以

port1:port2的形式指定一个端口范围。

-m state --state

功能:指定满足某一种状态的数据包,state可以是INVALID、ESTABLISHED、NEW和RELATED等,也可以是它们的组合,用“,”分隔。

-m connlimit --connlimit-above

功能:用于限制客户端到一台主机的TCP并发连接总数,n是一个数值。

-m mac --mac-source

功能:指定数据包的源MAC地址,address是xx:xx:xx:xx:xx:xx形式的48位数。

-m选项可以提供的模块名和子选项内容非常多,为iptables提供了非常强大、细致的功能,所有的模块名和子选项可以通过“man iptables”命令查看iptables命令的手册页获得。

最后,iptables命令中的-j选项可以对满足规则的数据包执行指定的操作,其后的“目标”可以是以下内容。

● -j ACCEPT:将与规则匹配的数据包放行,并且该数据包将不再与其他规则匹配,而是跳向下一条链继续处理。

● -j REJECT:拒绝所匹配的数据包,并向该数据包的发送者回复一个ICMP错误通知。该处理动作完

成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

● -j DROP:丢弃所匹配的数据包,不回复错误通知。该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

● -j REDIRECT:将匹配的数据包重定向到另一个位置,该动作完成后,会继续与其他规则进行匹配。

● -j LOG:将与规则匹配的数据包的相关信息记录在日志(/var/log/message)中,并继续与其他规则匹配。

● -j <规则链名称>:数据包将会传递到另一规则链,并与该链中的规则进行匹配。

除了上述目标动作外,还有一些与NAT有关的目标,将在9.4节中讲述。所有的目标也可以通过查看iptables命令的手册页获得。

9.2 iptables主机防火墙

主机防火墙主要用于保护防火墙所在的主机免受外界的攻击,当一台服务器为外界提供比较重要的服务,或者一台客户机在不安全的网络环境中使用时,都需要在计算机上安装防火墙。本节主要介绍iptables主机防火墙规则的配置,包括iptables防火墙的运行与管理、RHEL 5默认防火墙规则的解释、用户根据需要添加自己的防火墙规则等内容。

9.2.1 iptables防火墙的运行与管理

RHEL 5默认安装时,已经在系统中安装了iptables软件包,可以用以下命令查看。

[root@localhost ~]# rpm -qa | grep iptables

iptables-1.3.5-1.2.1

iptables-ipv6-1.3.5-1.2.1

#

一般情况下,iptable开机时都已经默认运行,但与其他一些服务不同,iptables的功能是管理内核中的防火墙规则,不需要常驻内存的进程。如果对防火墙的配置做了修改,并且想保存已经配置的iptables规则,可以使用以下命令。

# /etc/rc.d/init.d/iptables save

此时,所有正在使用的防火墙规则将保存到/etc/sysconfig/iptables文件中,可以用以下命令查看该文件的内容。

# more /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Fri Jan 16 14:58:31 2009

filter

*

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [2237:2371316]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p esp -j ACCEPT

-A RH-Firewall-1-INPUT -p ah -j ACCEPT

-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 808 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

可以看到,/etc/sysconfig/iptables文件中包含了一些iptables规则,这些规则的形式与iptables命令类似,但也有区别。

%注意:一般不建议用户手工修改这个文件的内容,这个文件只用于保存启动iptables时,需

要自动应用的防火墙规则。

以上看到的实际上是默认安装RHEL 5时该文件中的内容,其所确定的规则的解释见9.2.2小节。还有一种保存iptables规则的方法是使用iptables-save 命令,格式如下:

# iptables-save > abc

此时,正在使用的防火墙规则将保存到abc文件中。如果希望再次运行iptables,可以使用以下命令。

# /etc/rc.d/init.d/iptables start

上述命令实际上是清空防火墙所有规则后,再按/etc/sysconfig/iptables 文件的内容重新设定防火墙规则。还有一种复原防火墙规则的命令如下:

# iptables-restore < abc

此时,由iptables-save命令保存在abc文件中的规则将重新载入到防火墙中。如果使用以下命令,将停止iptables的运行。

# /etc/rc.d/init.d/iptables stop

上述命令实际上是清空防火墙中的规则,与“iptables -F”命令类似。此外,/etc/sysconfig目录的iptables-config文件是iptables防火墙的配置文件,去掉注释后的初始内容和解释如下:

配置1:

IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"

功能:当iptables启动时,载入ip_conntrack_netbios_ns和

ip_conntrack_ftp两个iptables模块。

配置2:

IPTABLES_MODULES_UNLOAD="yes"

功能:当iptables重启或停止时,是否卸载所载入的模块,yes表示是。

配置3:

IPTABLES_SAVE_ON_STOP="no"

功能:当停止iptables时,是否把规则和链保存到/etc/sysconfig/iptables 文件,no表示否。

配置4:

IPTABLES_SAVE_ON_RESTART="no"

功能:当重启iptables时,是否把规则和链保存到/etc/sysconfig/iptables 文件,no表示否。

配置5:

IPTABLES_SAVE_COUNTER="no"

功能:当保存规则和链时,是否同时保存计数值,no表示否。

配置6:

IPTABLES_STATUS_NUMERIC="yes"

功能:输出iptables状态时,是否以数字形式输出IP地址和端口号,yes 表示是。

配置7:

IPTABLES_STATUS_VERBOSE="no"

功能:输出iptables状态时,是否包含输入输出设备,no表示否。

配置8:

IPTABLES_STATUS_LINENUMBERS="yes"

功能:输出iptables状态时,是否同时输出每条规则的匹配数,yes表示是。

9.2.2 RHEL 5开机时默认的防火墙规则

在Linux系统中,可以通过使用iptables命令构建各种类型的防火墙。RHEL 5操作系统默认安装时,iptables防火墙已经安装,并且开机后会自动添加了一些规则,这些规则实际上是由/etc/sysconfig目录中的iptables文件决定的。可以通过“iptables -L”命令查看这些默认添加的规则。

# iptables -L

Chain INPUT (policy ACCEPT) #INPUT链中的规则

target prot opt source destination

RH-Firewall-1-INPUT all -- anywhere anywhere #规则1

Chain FORWARD (policy ACCEPT) # FORWARD链中的规则

target prot opt source destination

RH-Firewall-1-INPUT all -- anywhere anywhere #规则2

Chain OUTPUT (policy ACCEPT) # OUTPUT链中的规则

target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references) #自定义的RH-Firewall-1-INPUT链

中的规则,被其他链引用两次

target prot opt source destination

ACCEPT all -- anywhere anywhere #规则3 ACCEPT icmp -- anywhere anywhere icmp any #规则4 ACCEPT esp -- anywhere anywhere #规则5 ACCEPT ah -- anywhere anywhere #规则6 ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns #规则7 ACCEPT udp -- anywhere anywhere udp dpt:ipp #规则8 ACCEPT tcp -- anywhere anywhere tcp dpt:ipp #规则9 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED #规则10 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp #规则11 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh #规则12 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http #规则13

ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp #规则14

REJECT all -- anywhere anywhere reject-with icmp-host-

prohibited #规则15

#

由于上面的iptables命令没有用-t选项指明哪一张表,也没有指明是哪一条链,因此默认列出的是filter表中的规则链。由以上结果可以看出,filter 表中总共有4条链。其中,INPUT、FORWARD和OUTPUT链是内置的,而

RH-Firewall-1-INPUT链是用户自己添加的。

1.规则列

在前面列出的防水墙规则中,每一条规则列出了5项内容。target列表示规则的动作目标。prot列表示该规则指定的上层协议名称,all表示所有的协议。opt列出了规则的一些选项。source列表示数据包的源IP地址或子网,而destination列表示数据包的目的IP地址或子网,anywhere表示所有的地址。除了上述5列以外,如果存在,每一条规则的最后还要列出一些子选项,如

RH-Firewall-1-INPUT链中的规则4等。

如果执行iptables命令时加了-v选项,则还可以列出每一条规则当前匹配的数据包数、字节数,以及要求数据包进来和出去的网络接口。如果加上-n选项,则不对显示结果中的IP地址和端口做名称解析,直接以数字的形式显示。还有,如果加上“--line-number”选项,可以在第一列显示每条规则的规则号。

2.规则解释

INPUT链中的规则1其target列的内容是RH-Firewall-1-INPUT,opt列是all,source和destination列均为anywhere,表示所有的数据包都交给自定义的RH-Firewall-1-INPUT链去处理。FORWARD链的规则2与规则1完全一样。OUTPUT链中没有规则。

在自定义的RH-Firewall-1-INPUT链中,列出了很多的规则,规则3表示接收所有的数据包。需要注意的是,如果在iptables中加-v选项列出这条规则时,将会看到in列是lo,即要求数据包是从环回接口中进来的,而不是任意网络接口进来的数据包都接收。

规则4表示所有icmp数据包都接收,即其他计算机ping本机时,予以接收,而且在OUTPUT链中没有规则,因此本机的ICMP回复数据包也能顺利地进入网络,被对方收到。规则5和规则6表示接收所有的esp和ah协议的数据包,这两种协议属于IPv6协议。

规则7表示目的地址是224.0.0.251,目的端口是mdns的UDP数据包允许通过。224.0.0.251是一种组播地址,mdns是端口号的一种名称。如果执行iptables 命令时加了-n选项,则会显示数字5353,它是组播地址的DNS端口。

规则8和规则9表示允许所有目的端口是ipp的UDP和TCP数据包通过,ipp 是端口631的名称解析,它是用于网络打印服务的端口。规则10表示所有状态是RELATED和ESTABLISHED的数据包通过,RELATED状态表示数据包要新建一个连接,而且这个要新建的连接与现存的连接是相关的,如FTP的数据连接。ESTABLISHED表示本机与对方建立连接时,对方回应的数据包。

规则11至规则14表示允许目的端口是ftp、ssh、http和smtp,状态是NEW 的TCP数据包通过,状态为NEW即意味着这个TCP数据包将与主机发起一个TCP 连接。这几条规则的端口对应的都是最常见的网络服务,它们的端口号分别是21、22、80和25。最后一条规则15表示拒绝所有的数据包,并向对方回应icmp-host-prohibited数据包。

3.补充解释

需要再次提醒的是,这些规则是有次序的。当一个数据包进入

RH-Firewall-1-INPUT链后,将依次与规则3至规则15进行比较。按照这些规则的目标设置,如果数据包能与规则3至14中的任一条匹配,则该数据包将被接收。如果都不能匹配,则肯定能和规则15匹配,于是数据包被拒绝。

由于RH-Firewall-1-INPUT链是被INPUT链调用的,如果要返回到INPUT链,需要执行名为RETURN的目标动作。

%说明:在FORWARD链中也调用了RH-Firewall-1-INPUT链,即数据包如果不是发送给本

机的,当经过FORWARD链时,还要进入RH-Firewall-1-INPUT链,与规则3到规则15再

次进行匹配。

9.2.3 管理主机防火墙规则

可以有很多功能种类的防火墙,有些是安装在某一台主机上,主要用于保护主机本身的安全;有些是安装在网络中的某一节点,专门用于保护网络中其他计

算机的安全;也有一些可以为内网的客户机提供NAT服务,使内网的客户机共用一个公网IP,以便节省IP地址资源。下面首先介绍一下主机防火墙的应用示例。

当一台服务器为外界提供比较重要的服务,或者一台客户机在不安全的网络环境中使用时,都需要在计算机上安装防火墙,以最大限度地防止主机受到外界的攻击。9.2.2小节介绍的开机时默认的防火墙设置非常典型,用户可以根据自己主机的功能关闭已经开放的端口,或者开放更多的端口,以便允许符合更多规则的数据包通过。

例如,为了使主机能为外界提供telnet服务,除了配置好telnet服务器外,还需要开放TCP23号端口。因为在默认的防火墙配置中,并不允许目的端口为23的TCP数据包进入主机。为了开放TCP23号端口,可以有两种办法,一种是在RH-Firewall-1-INPUT链中加入相应的规则,还有一种是把规则加到INPUT

链中。但需要注意的是,规则是有次序的,如果使用以下命令,则是没有效果的。# iptables -A RH-Firewall-1-INPUT -p tcp --dport 23 -j ACCEPT

上述命令执行后,可以再次查看规则情况。

# iptables -L -n --line-number

Chain RH-Firewall-1-INPUT (2 references)

num target prot opt source destination

11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80

12 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25

13 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-

prohibited

14 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:23

# 新添加的规则

#

可以看到,新添加的规则位于最后的位置。由于所有的数据包都可以与目标动作为REJECT的规则号为13的规则匹配,而REJECT代表的是拒绝,因此数据包到达新添加的规则前肯定已被丢弃,这条规则是不会被使用的。为了解决这个问题,需要把上述规则插入到现有的规则中,要位于规则13的前面。下面是正确的开放TCP23号端口的命令。

# iptables -I RH-Firewall-1-INPUT 11 -p tcp --dport 23 -j ACCEPT

以上命令中,“-I RH-Firewall-1-INPUT 11”表示在RH-Firewall-1-INPUT 链原来的规则11前面插入一条新规则,规则内容是接受目的端口为23的TCP 数据包。为了删除前面添加的无效规则,可以执行以下命令。

# iptables -D RH-Firewall-1-INPUT 15

15是第一次添加的那条无效规则此时的规则号,也可能是其他的数值,可根据具体显示结果加以改变。如果希望新加的规则与原来的规则11、12等类似,可以执行以下命令。

# iptables -I RH-Firewall-1-INPUT 11 -m state --state NEW -p tcp --dport 23 -j ACCEPT

以上是在RH-Firewall-1-INPUT链中添加规则,以开放TCP23号端口。还有一种开放TCP23号端口的方法是在INPUT链中添加规则,具体命令如下所示。

# iptables -I INPUT 1 -p tcp --dport 23 -j ACCEPT

# iptables -L --line-number

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT tcp -- anywhere anywhere tcp dpt:telnet

2 RH-Firewall-1-INPUT all -- anywhere anywhere

%注意:添加的规则也要位于原来规则2的前面,否则,任何数据包都匹配规则2,将会跳到

RH-Firewall-1-INPUT链,并且不再回来。因此,添加在规则2后面的规则都是无效的。

前面介绍的是在RHEL5默认防火墙规则的基础上添加用户自己的防火墙规则,以开放TCP23号端口。在很多的时候,用户可能希望从最初的状态开始,构建自己的防火墙。为了从零开始设置iptables防火墙,可以用以下命令清空防火墙中所有的规则。

# iptables -F

然后再根据要求,添加自己的防火墙规则。一般情况下,保护防火墙所在主机的规则都添加在INPUT内置链中,以挡住外界访问本机的部分数据包。本机向外发送的数据包只经过OUTPUT链,一般不予限制。如果不希望本机为外界数据包提供路由转发功能,可以在FORWARD链中添加一条拒绝一切数据包通过的规则,或者干脆在内核中设置不转发任何数据包。

9.2.4 常用的主机防火墙规则

当设置主机防火墙时,一般采取先放行,最后全部禁止的方法。也就是说,根据主机的特点,规划出允许进入主机的外界数据包,然后设计规则放行这些数据包。如果某一数据包与放行数据包的规则都不匹配,则与最后一条禁止访问的规则匹配,被拒绝进入主机。下面列出一些主机防火墙中常用的iptables命令及其解释,这些命令添加的规则都放在filter表的INPUT链中。

示例1:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

功能:允许目的端口为80的TCP数据包通过INPUT链。

说明:这种数据包一般是用来访问主机的Web服务,如果主机以默认的端口提供Web服务,应该用这条规则开放TCP80端口。

示例2:

iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j DROP

功能:从接口eth0进来的、源IP地址的前3字节为192.168.1的数据包予以丢弃。

说明:需要注意这条规则的位置,如果匹配这条规则的数据包同时也匹配前面的规则,而且前面的规则是放行的,则这条规则对匹配的数据包将不起作用。

示例3:

iptables -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT

功能:在INPUT链中允许源端口号为53,目标端口号为1024至65535的UDP 数据包通过。

说明:这种特点的数据包是当本机查询DNS时,DNS服务器回复的数据包。

示例4:

iptables -A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT

功能:SYN、RST、ACK 3个标志位中SYN位为1,其余两个为0的TCP数据包予以放行。符合这种特征的数据包是发起TCP连接的数据包。

说明:“--tcp-flags”子选项用于指定TCP数据包的标志位,可以有SYN、ACK、FIN、RST、URG和PSH共6种。当这些标志位作为“--tcp-flags”的参数时,用空格分成两部分。前一部分列出有要求的标志位,用“,”分隔;后一部分列出要求值为1的标志位,如果有多个,也用“,”分隔,未在后一部分列出的标志位其值要求为0。

%注意:这条命令因为经常使用,可以用“--syn”代替“--tcp-flags SYN,RST,ACK SYN”。

示例5:

iptables -A INPUT -p tcp -m multiport --dport 20:23,53,80,110 -j ACCEPT

功能:接收目的端口为20至23、53、80和110号的TCP数据包。

说明:“-m multiport”用于指定多个端口,最多可以有15项,用“,”分隔。

示例6:

iptables -A INPUT -p icmp -m limit --limit 6/m --limit-burst 8 -j ACCEPT

功能:限制ICMP数据包的通过率,当一分钟内通过的数据包达到8个时,触发每分钟通过6个数据包的限制条件。

说明:以上命令中,除了m表示分以外,还可以用s(秒)、h(小时)和d (天)。这个规则主要用于防止DoS攻击。

示例7:

iptables -A INPUT -p udp -m mac --mac-source ! 00:0C:6E:AB:AB:CC -j DROP

功能:拒绝源MAC地址不是00:0C:6E:AB:AB:CC的UDP数据包。

说明:该规则不应该放在前面,否则,大部分的UDP数据包都将被拒绝,随后的规则将不会使用。

9.2.5 使用图形界面管理主机防火墙规则

为了使初学者也能构建iptables主机防火墙,在RHEL 5中,还为用户提供了配置主机防火墙的图形界面。在RHEL 5桌面环境下,选择“系统”|“管理”|“安全级别和防火墙”命令后,将出现图9-4所示的对话框。

在图9-4中,名为“信任的服务”的列表框中列出了常见的网络服务名称,前面打勾的服务所对应的网络端口是开放的,允许外界的用户访问。如果用户需要开放更多的端口,可以在列出的服务名称前的框内单击鼠标,打上勾后再单击“应用”按钮即可。

此外,窗口中还提供了启用或禁用防水墙的选择菜单,如图9-5所示。还有,如果在图9-4中单击了“其他端口”标签,将在下面出现如图9-5所示的一个列表框和“添加”、“删除”按钮,用于添加和删除“信任的服务”列表框中未列出的端口。

图9-4 防火墙设置对话框

图9-5 展开后的防火墙设置对话框

在图9-5中,如果单击“添加”按钮,将出现图9-6所示的对话框。此时,可以输入需要开放的端口号,并选择TCP或UDP协议,然后单击“确定”按钮,将返回到图9-5所示的防火墙设置对话框,然后在“其他端口”列表框中将出现所添加的端口号和协议名称。单击“删除”按钮可以删除列表框中选中的端口。为了使添加或删除端口生效,需要单击图9-5中的“应用”按钮,此时将出现图9-7所示的对话框,要求用户确认该操作。

图9-6 添加端口

图9-7 确认修改防火墙设置

linux防火墙iptables配置(Linux下多网段Nat实现与应用)

Linux下多网段Nat实现与应用 Iptables/netfilter是一个可以替代价格昂贵的商业防火墙的网络安全保护解决方案,能够实现数据包过滤、数据包重定向和网络地址转换(NAT)等多种功能。 准备: 操作系统安装光盘:CentOS-6.1版本 硬件要求:dell poweredge 410(需双网卡) 实现功能: 192.168.11.0/24、192.168.10.0/24网段通过防火墙NAT转换访问外网,并实现数据包过滤。 过程: 步骤#1. 安装操作系统(最基本安装即可) 步骤#2. 设置网卡地址 外网eth0 IP:xx.xx.xx.xx 内网eth1 IP:172.16.1.254 网卡路径:/etc/sysconfig/network-scripts DEVICE=eth0 HWADDR=00:0e:0c:3a:74:c4 NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPV6INIT=no USERCTL=no IPADDR=xx.xx.xx.xx NETMASK=255.255.255.252 DEVICE=eth1 HWADDR=00:0e:0c:3a:74:c4 NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPV6INIT=no USERCTL=no IPADDR=172.16.1.254 NETMASK=255.255.255.0 步骤#3. 添加路由 把路由写到 /etc/rc.d/rc.local文件里,这样每次启动就不用重新设置了。 route add -net 172.16.1.0 netmask 255.255.255.0 gw 172.16.1.1 route add -net 192.168.11.0 netmask 255.255.255.0 gw 172.16.1.1 route add -net 192.168.10.0 netmask 255.255.255.0 gw 172.16.1.1 route add default gw 60.190.103.217 172.16.1.1是交换机与Linux的内网网卡接口的地址

firewall防火墙配置-RHEL7

尽管工作在Linux内核的网络过滤器代码上,总体上和旧有的配置防火墙的方法是不兼容的。Red Hat Enterprise Linux 7 和其他的新版本则需要依靠新的配置方法。 本文的所有命令都基于RHEL 7. 防火墙工作网络 首先,检查防火墙是否在运行。使用列表1中的systemctl status firewalld命令。 列表1.下面的序列表明防火墙是活动状态且在运行中。这些斜线是有帮助的,当你试图将表1全面显示出来,使用-1命令。 [root@rhelserver ~]# systemctl status firewalld - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/; enabled) Active: active (running)since Thu 2014-05-22 07:48:08 EDT; 14min ago Main PID: 867 (firewalld) CGroup: / └─867 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid May 22 07:48:08 systemd[1]: Started firewalld - dynami… 防火墙中的一切都与一个或者多个区域相关联。 配置之后,RHEL 7服务器正常会在公共区域,但是你也许会想将它放置在另一个网络配置防火墙访问。这时使用firewall-cmd --get-default-zone命令,该命令显示你的服务器在哪一个网络。如果你想查看配置特定网络的详细信息,你可以使用列表2中的firewall-cmd --zone=zonename --list-all命令。

Linux6 防火墙配置

linux配置防火墙详细步骤(iptables命令使用方法) 通过本教程操作,请确认您能使用linux本机。如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重! 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 referenc es) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 ACCEPTah--0.0.0.0/00.0.0.0/0 ACCEPTudp--0.0.0.0/0224.0.0.251udpdpt:5353 ACCEPTudp--0.0.0.0/00.0.0.0/0udpdpt:631 ACCEPTall--0.0.0.0/00.0.0.0/0stateRELATED,ESTABLISHED ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:22 ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:80 ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:25 REJECTall--0.0.0.0/00.0.0.0/0reject-withicmp-host-prohibited

2018Linux防火墙iptables配置详解

2018-Linux防火墙iptables配置详解 一、开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口. 如果你在安装linux时没有选择启动防火墙,是这样的 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么规则都没有. (2)清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. [root@tp ~]# iptables -F清除预设表filter中的所有规则链的规则 [root@tp ~]# iptables -X清除预设表filter中使用者自定链中的规则 我们在来看一下

2.1.5 节点防火墙和SELinux配置.

2.1.5 节点防火墙和SELinux配置 1.防火墙设置 在控制和计算节点上分别执行以下操作进行防火墙设置。(1)停止iptables服务。 [root@controller ~]# service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] (2)将iptables服务配置为开机不自动启动。 [root@controller ~]# chkconfig iptables off 2.SELinux设置 在控制和计算节点上分别执行以下操作进行SELinux设置。(1)编辑SELinux的配置文件。 [root@controller ~]# vi /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # 将SELinux配置为允许模式 # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 配置完成后,重新启动控制节点和计算节点。

linux防火墙配置实验

单个IP地址建立连接 和DOS 攻击 实验 第九组 2017.05.19 单个IP地址限制连接 实验原理: 防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。 netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,

也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。 实验环境 攻击者win7 64位 ip:172.16.9.1,被攻击者虚拟机vm构造,与宿主机采用桥接,在同一网段,ip为1.1.1.2 实验目的: 通过Vmware虚拟机,配置网关,以及模拟外网,内网,Web服务器。通过 外网来进行DOS攻击,通过在被攻击的主机上抓包可以清楚地看到整个攻击过程,并且在网关上设置了NAT地址转换,在访问外网时将内网地址转换成公网地址(SNAT),以及外网访问内网时将公网地址转换成内网地址(DNAT)。并且可以在网关上设置上网时间,限制某些应用访问Internet等。 实验拓扑:

实验步骤: 搭建实验环境(Vmware虚拟机作为平台),按照逻辑拓扑图进行连接。 1.配置网关 1)配置三块网卡,分别是eth0,eth1,eth2,全部设置为桥接模式。 2)Eth1 ip地址192.168.9.1,eth2 ip地址192.168.19.1,eth0 ip地址1.1.9.1 3)使用命令echo “1”> /proc/sys/net/ipv4/ip_forward,打开路由功能 4)使用命令 /etc/init.d/iptables stop。关闭防火墙。 5)制定NAT转化策略,建议当底层网络全部通时再测试NAT。 2.配置主机(包括web服务器,外网主机) 1)配置一块网卡eth0 添加ip地址,模式为桥接。 2)增加各自的默认网关。 3)关闭本地防火墙。 3.调试dos攻击程序,在模拟外网的pc上编译执行,在web服务器上抓包观察。 4.观察NAT转化是否实现 5.实验截图: 5.1.将网卡配置为桥接模式。

Linux 防火墙的功能及安全策略

Linux 防火墙的功能及安全策略 防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。因此,防火墙的功能有以下几点: ●防火墙是网络安全的屏障 一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸如众所周知的不安全的NFS 协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路径。防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。 ●防火墙可以强化网络安全策略 通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。 ●对网络存取和访问进行监控审计 如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。另外,收集一个网络的使用和误用情况也是非常重要的。首先的理由是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。 ●防止内部信息的外泄 通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如Finger,DNS等服务。Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。但是Finger显示的信息非常容易被攻击者所获悉。攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时引起注意等等。防火墙可以同样阻塞有关内部网络中的DNS信息,这样一台主机的域名和IP地址就不会被外界所了解。

Linux防火墙 iptables详细介绍

周旭光unixzhou@https://www.doczj.com/doc/df3269219.html, Linux防火墙iptables 周旭光 unixzhou@https://www.doczj.com/doc/df3269219.html, 2011年5月10日 目录 1、Linux防火墙基础 (2) 1、iptables的规则表、链结构 (2) 1.1 规则表 (2) 1.2 规则链 (2) 2、数据包的匹配流程 (2) 2.1 规则表之间的优先级 (2) 2.2 规则链之间的优先级 (2) 2.3 规则链内部各防火墙规则之间的优先顺序 (3) 2、管理和设置iptables规则 (3) 2.1 iptables的基本语法格式 (3) 2.2 管理iptables规则 (3) iptables命令的管理控制项 (3) 2.3 条件匹配 (5) 2.3.1 通用(general)条件匹配 (5) 2.3.2 隐含(implicit)条件匹配 (6) 2.3.3 显示(explicit)条件匹配 (6) 2.4 数据包控制 (7) 3、使用防火墙脚本 (8) 3.1 导出、导入防火墙规则 (8) 3.2 编写防火墙脚本 (8)

1、Linux防火墙基础 1、iptables的规则表、链结构 1.1 规则表 iptables管理4个不同的规则表,其功能由独立的内核模块实现。 filter表:包含三个链INPUT , OUTPUT , FORWARD nat表:PREROUTING , POSTROTING , OUTPUT mangle表:PREROUTING , POSTROUTING , INPUT , OUTPUT , FORWARD raw表:OUTPUT , PREROUTING 1.2 规则链 INPUT链当收到访问防火墙本机的数据包(入站)时,应用此链中的规则 OUTPUT链当防火墙本机向外发送数据包(出站)时,应用此链中的规则 FORWARD链收到需要通过防火墙发送给其他地址的数据包,应用此链 PREROUTING链做路由选择之前,应用此链 POSTROUTING链对数据包做路由选择之后,应用此链中的规则 2、数据包的匹配流程 2.1 规则表之间的优先级 Raw mangle nat filter 2.2 规则链之间的优先级 入站数据流向:来自外界的数据包到达防火墙,首先呗PREROUTING规则链处理(是否被修改地址),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT 链进行处理,通过以后再交给上次的应用程序进行响应 转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后进行路由选择,如果数据包的目标地址是其他外部地址,则内核将其传递给FPRWARD链进行处理,然后再交给POSTROUTIING 规则链(是否修改数据包的地址等)进行处理。 出站数据流向:防火墙本身向外部地址发送数据包,首先被OUTPUT规则链处理,之后进行路由选择,然后

linux防火墙的设置

linux 防火墙的设置

Linux防火墙配置(一) 随着In ternet规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免受侵害的最基本的一种手段。虽然防火墙并不能保证系统绝对的安全,但由于它简单易行、工作可靠、适应性强,还是得到了广泛的应用。本章主要介绍与Linux系统紧密集成的iptables防火墙的工作原理、命令格式,以及一些应用实例。 9.1 iptables 防火墙介绍 netfilter/iptables 是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关iptables防火墙的基本知识,包括netfilter 框架、iptables 防火墙结构与原理、iptables命令格式等内容。 9.1.1 netfilter 框架 Linux内核包含了一个强大的网络子系统,名为netfilter ,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT IP伪装 等,也可以因高级路由或连接状态管理的需要而修改IP头信息。netfilter 位 于Linux网络层和防火墙内核模块之间,如图9-1所示。 图9-1 netfilter 在内核中的位置 虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter 模块将防火墙的功能引 入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。netfilter 模块的结构如图9-2所示。

对IPv4协议来说,netfilter 在IP数据包处理流程的5个关键位置定义了 5个钩子(hook)函数。当数据包流经这些关键位置时,相应的钩子函数就被调用。从图9-2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数 PRE_ROUTING理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。 若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机 的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD理,然后 还要经钩子函数POST_ROUTIN处理后才能传输到网络。本机进程产生的数据包要先经过钩子函数LOCAL_OU处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING理后再发送到网络。 %说明:内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,钩子函数就会 按照优先级依次调用这些注册的函数,从而可以使其他内核模块参与对数据包的处理。这些处理可以是 包过滤、NAT以及用户自定义的一些功能。 9.1.2 iptables 防火墙内核模块 netfilter 框架为内核模块参与IP层数据包处理提供了很大的方便,内核 的防火墙模块正是通过把自己的函数注册到n etfilter 的钩子函数这种方式介 入了对数据包的处理。这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT和对数据包进行修改。其中,NAT还分为SNATCH DNAT分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图9-3所示。 由图9-3可以看出,防火墙模块在netfilter 的LOCAL_IN FORWARD LOCAL_OUT 个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进行过滤。这三个位置也称为三条链,名称分别为INPUT

Linux防火墙的配置实例

Linux防火墙的配置实例 我们该如何利用Linux操作系统自带的防火墙来提高网络的管理控制功能呢?具体的来说,我们可以分三步走。一是先在Linux服务器上开一个后门,这个后门是专门给我们网络管理员管理服务器用的。二是把所有的进站、出站、转发站接口都关闭,此时,只有通过我们上面开的后门,管理员才能够远程连接到服务器上,企图任何渠道都不能连接到这台主机上。三是根据我们服务器的用途,把一些需要用到的接口开放出去。 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: service iptables start 关闭: service iptables stop 清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. [root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则 [root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则 我们在来看一下 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存. [root@tp ~]# /etc/rc.d/init.d/iptables save

LINUX在防火墙环境下DNS的安装与设置

经过几天的研究BIND,终于解决了我们单位的DNS问题。 在一般防火墙下,都是采用DMZ区内放服务器,外部访问DMZ区得到外部的IP,内部访问DMZ区时得到内部的IP。 如一个, 内部IP地址<--->放在DMZ的web服务器的IP<----->外部IP地址 从DNS上可以从以下四个方面解决: 一.iptables应用 1. 核心思想 配置动态DNS服务器的核心思想是:在DNS服务器上运行多个BIND,每个BIND为来自不同区域的用户提供解析,因此每个BIND都应具有不同的配置文件和域文件,并且分别监听在不同的端口。在接到客户端DNS请求时,根据客户的ip地址将请求重定向不同的BIND 服务端口。BIND响应时,再改写相应包的服务端口为标准的53端口。这样就可以根据客户端的ip地址将不同的解析结果返回给客户端。整个过程对于客户端来说都是透明的。实现的关键在于运行不同的BIND及运用iptables进行ip地址及端口改写操作。 2 配置过程 步骤1:配置内核 netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于"Networking options"子项下。以,我们应该选中的项目有: ?Kernel/User netlink socket [ ] Routing messages <*>; Netlink device emulation ?Network packet filtering (replaces ipchains) ....... 然后,在"IP: Netfilter Configuration ---->;"选中: Connection tracking (required for masq/NAT) FTP protocol support IP tables support (required for filtering/masq/NAT) limit match support MAC address match support Netfilter MARK match support Multiple port match support TOS match support

linux防火墙iptables常用规则(屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链)

linux防火墙iptables常用规则(屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链) 一、iptables:从这里开始 删除现有规则 iptables -F (OR) iptables --flush 设置默认链策略 iptables的filter表中有三种链:INPUT, FORWARD和OUTPUT。默认的链策略是ACCEPT,你可以将它们设置成DROP。 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 你需要明白,这样做会屏蔽所有输入、输出网卡的数据包,

除非你明确指定哪些数据包可以通过网卡。 屏蔽指定的IP地址 以下规则将屏蔽BLOCK_THIS_IP所指定的IP地址访问本地主机: BLOCK_THIS_IP="x.x.x.x" iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP (或者仅屏蔽来自该IP的TCP数据包) iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP 允许来自外部的ping测试 iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT 允许从本机ping外部主机 iptables -A OUTPUT -p icmp --icmp-type echo-request -j

Linux 防火墙的分类

Linux 防火墙的分类 世界时没有两种一样的事物,防火墙也是如此,防火墙的分类方法有很多,可以从形式上、技术上、结构上、性能上对其进行分类。 1.从形式上分类 从形式上分类,可以把防火墙分为软件和硬件防火墙两大类。 ●软件防火墙 软件防火墙运行于特定的计算机上,它需要用户预先安装好的计算机操作系统的支持,一般来说这台计算机就是整个网络的网关。软件防火墙就像其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。使用这类防火墙,需要用户对操作系统平台比较熟悉。 ●硬件防火墙 硬件防火墙是一种以物理形式存在的专用设备,通常架设在内部局域网和外部互联网的连接处,直接在网络设备上检查过滤有害的数据,位于防火墙设备后端的网络或服务器接收到的是经过防火墙处理过的相对安全的数据,其不必占用CPU资源,进行基于软件的架构的NDIS(网络驱动程序接口)数据检测,这样大大提高了工作效率。 普通硬件防火墙,其拥有标准计算机的硬件平台和一些功能经过简化处理的Unix、Linux操作系统已及防火墙软件,这种防火墙措施相当于专门在一台计算机上安装了软件防火墙,除了不需要处理其他事务以外,其仍使用一般的操作系统,因此操作系统的安全问题,会对其造成影响。 芯片级防火墙基于专门的硬件平台,使用专用的OS(操作系统)。专有的ASIC 芯片促使它们比其他种类的防火墙速度更快,处理能力更强,性能更高。这类防火墙最出名的厂商有Juniper、Cisco、NetScreen、等。这类防火墙由于使用专用OS,因此防火墙本身的漏洞比较少,不过价格相对比较高昂。 2.从技术上分类 从技术上,可以把防火墙分为包过滤型、应用代理型(网关防火墙)和状态监视型防火墙3大类。 ●包过滤(Packet filtering)型 包过滤型防火墙工作在OSI网络参考模型的网络层和传输层,它根据数据包头源地址,目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。 包过滤方式是一种通用、廉价和有效的安全手段。之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。

linux下防火墙的配置

Linux 自带的iptables 配置防火墙 一.实验目的: 通过自己所学的网络安全知识,完成Linux 自带的iptables 配置防火墙。 二.设计内容: 利用Linux 自带的iptables 配置防火墙。完成如下配置: 要求: (1)阻止任何外部世界直接与防火墙内部网段直接通讯 (2)允许内部用户通过防火墙访问外部HTTP 服务器允许内部用户通过防 火墙访问外部HTTPS 服务器 (3)允许内部用户通过防火墙防问外部FTP 服务器 三.实验步骤: 用实体机做内网,Linux 做防火墙,Redhat 做外网。 Linux 防火墙的设置 : Renhat 的设置: —————————————————装 订 线————————————————————————————————

内网的IP地址: 首先内网拼通防火墙内的路由器和外网: 防火墙启动IP转发功能: 外网添加路由使得外网可以拼同内网:

添加成功: 此时外网可以拼通内网: 在外网Redhat中编写脚本语言,使得允许内部用户通过防火墙访问外部HTTP服务器允许内部用户通过防火墙访问外部HTTPS服务器,允许内部用户通过防火墙防问外部FTP服务器: 外网启动http和ftp:

外网中编写网页内容: 启动编写的脚本,启动防火墙 此时再用外网拼内网拼不通,即防火墙阻止了外网访问内网: 用内网访问外网http://192.168.23.23 内部用户通过防火墙访问外部HTTP服务器,内部用户通过防火墙访问外部HTTPS服务器

用内网访问外网ftp://192.168.23.23 允许内部用户通过防火墙防问外部FTP服务器

Linux防火墙 配置文件 iptables详解

对于Internet上的系统,不管是什么情况都要明确一点:网络是不安全的。因此,虽然创建一个防火墙并不能保证系统100%安全,但却是绝对必要的。 Linux提供了一个非常优秀的防火墙工具—netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍使用netfilter/iptables实现防火墙架设和Internet连接共享等应用。 netfilter/iptabels 应用程序,被认为是 Linux中实现包过滤功能的第四代应用程序。netfilter/iptables包含在2.4以后的内核中,它可以实现防火墙、NAT(网络地址翻 译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。netfilter/iptables 从ipchains和ipwadfm(IP防火墙管理)演化而来,功能更加强大。下文将netfilter/iptabels统一称为iptables。 可 以用iptables为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。iptales只读取 数据包头,不会给信息流增加负担,也无需进行验证。要想获得更好的安全性,可以将其和一个代理服务器(比如squid)相结合。 基本概念 典型的防火墙设置有两个网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。 通 过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用iptables系统提 供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下: iptables [-t table] command [match] [target] 1.表(table) [-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和 mangle。该选项不是必需的,如果未指定,则filter作为缺省表。各表实现的功能如表1所示。 表1 三种表实现的功能

信息安全实验报告Linux下的防火墙配置

【实验6】 使用iptables 实现防火墙 一、 实验目的: 1. 掌握iptables 命令的语法。 2. 掌握Linux 下防火墙的配置。 二、 【实验环境】 1. 虚拟机软件VM Ware 6.0,Redhat Enterprise Linux 虚拟机或光盘镜像文件。 2. 3台以上机器组成的局域网。 三、 实验内容: 某单位由于业务需要,假设了3台服务器,分别提供WWW 服务、FTP 服务和电子邮件服务。 该单位拥有一个局域网,IP 地址范围是192.168.1.0/24;使用一台Linux 主机配置包过滤防火墙以保护内部网络的安全,该Linux 主机有两个网络接口: eth0: 192.168.1.1,用于连接内网。 Eth1: 218.98.1.26,用于连接外网(internet )。 三台服务器的IP 地址分别为: WWW 服务器:192.168.1.11 FTP 服务器:192.168.1.12 电子邮件服务器:192.168.1.13 WWW 192.168.1.11 FTP 192.168.1.12

这个实验中以虚拟机模拟Linux防火墙 四、实验步骤 1、配置内网和外网接口的网络参数 内网接口eth0:192.168.1.1 子网掩码:255.255.255.0 外网接口eth0:218.98.1.26 子网掩码:255.255.255.0

2、建立脚本文件,使防火墙在Linux启动时自动运行。 在/etc/rc.d目录下建立一个名为“filter-firewall”的文件; 打开/etc/rc.d目录下的rc.local文件,在最后一行添加:/etc/rc.d/filter-firewall 保存,退出。

如何在RedHat Linux设置防火墙

如何在RedHatLinux设置防火墙 RedHatLinux是目前世界上使用最多的Linux操作系统。 因为它具备最好的图形界面,无论是安装、配置还是使用都十分方便,而且运行稳定,因此不论是新手还是老玩家都对它有很高的评价,但他同时也跟普通操作系统一样需要保护,下面是小编整理的一些关于REDHATLinux防火墙配置的方法资料,供你参考。 RedHatLinux下防火墙配置技巧 RedHatLinux为增加系统安全性提供了防火墙保护。防火墙存在于你的计算机和网络之间,用来判定网络中的远程用户有权访问你的计算机上的哪些资源。一个正确配置的防火墙可以极大地增加你的系统安全性。 为你的系统选择恰当的安全级别。 高级 如果你选择了“高级”,你的系统就不会接受那些没有被你具体指定的连接(除了默认设置外)。只有以下连接是默认允许的:DNS回应 DHCP—任何使用DHCP的网络接口都可以被相应地配置。如果你选择“高级”,你的防火墙将不允许下列连接: 1.活跃状态FTP(在多数客户机中默认使用的被动状态FTP 应该能够正常运行。) 2.IRCDCC文件传输。 3.RealAudio.

4.远程X窗口系统客户机。 如果你要把系统连接到互联网上,但是并不打算运行服务器,这是最安全的选择。如果需要额外的服务,你可以选择“定制”来具体指定允许通过防火墙的服务。 注记:如果你在安装中选择设置了中级或高级防火墙,网络验证方法(NIS和LDAP)将行不通。 中级 如果你选择了“中级”,你的防火墙将不准你的系统访问某些资源。访问下列资源是默认不允许的: 1.低于1023的端口—这些是标准要保留的端口,主要被一些系统服务所使用,例如:FTP、SSH、telnet、HTTP、和NIS. 2.NFS服务器端口(2049)—在远程服务器和本地客户机上,NFS都已被禁用。 3.为远程X客户机设立的本地X窗口系统显示。 4.X字体服务器端口(xfs不在网络中监听;它在字体服务器中被默认禁用)。 如果你想准许到RealAudio之类资源的访问,但仍要堵塞到普通系统服务的访问,选择“中级”。你可以选择“定制”来允许具体指定的服务穿过防火墙。注记:如果你在安装中选择设置了中级或高级防火墙,网络验证方法(NIS和LDAP)将行不通。 无防火墙

防火墙DNS配置详解(有图)

Linux服务器配置 一、网卡配置 Linux配置网络有两种方法: (1)鼠标配置:系统——首选项——网络连接——编辑——IPV4设置为自动——配置IP地址,例Ipaddress 202.206.90.129 NETMASK 255.255.255.0 GW 202.206.90.4 DNS 202.206.80.33 (2)用命令配置:按住Ctrl+Alt+F2进入命令编辑模式,键入以下代码: ——cd /etc/sysconfig/network-scripts ——vi ifcfg-eth0 配置:ipaddress:202.206.90.129 Netmask:255.255.255.0 Gw: 202.206.90.4 Dns: 202.206.80.33 退出并保存(ESC+:+wq) 二、DNS服务器 网卡设置好后,可以访问校园网了,接着配置DNS服务器 在命令行下:输入以下命令 1、创建挂载点文件夹mkdir rong 2、将文件挂起,以便安装包的使用mount /dev/cdrom rong 3、进到rong里找到Packages服务安装包cd rong/Packages 4、查看服务的安装情况,当前情况下是没有安装的ls –q dns 5、找到安装包并进行安装ls bind*.* rmp –ivh bind-9.7.8-5.P2.e16.i686.rpm 6、启动服务service named start 三、对安装上的服务做配置 1、对named.conf 文件编辑cd /etc vi named.conf 2、对resolv.conf 文件编辑vi /etc/resolv.conf 3、对正向区域文件name.rong 和反向区域文件name.ma 编辑 4、重启服务测试service network restart和service named restart 四、服务做好之后,把本地计算机上的DNS指向虚拟机里服务器的IP地址即202.206.90.129 7、安装dns服务rmp –ivh bind-9.7.8-5.P2.e16.i686.rpm

相关主题
文本预览
相关文档 最新文档