所属分类: NetFilter 整理: FengNet.Com 更新日期:2007/3/22 10:33:22 阅读次数:4886

iptables防火墙配置工具ShoreWall的安装和使用实例 2/2


进阶组件

1、params
这是用来设定shell变量的一个档案,这个档案有点像是C语言中的include功能一样,把include进来的档案的变量放到现在这个档案中,只是在shorewall的设定档中,并不需要再使用include来引入,params这个档案的目的在于将所有相关的变量都统一设定在里面,当您的规则全都设定好了之后,只要变更params的内容就可以套用在别的网络状态,管理起来非常的方便,以下就是一个例子:


在/etc/shorewall/params中的设定:
NET_IF=eth0 NET_BCAST=130.252.100.255
NET_OPTIONS=blacklist,norfc1918


在/etc/shorewall/interfaces中的设定:
net$NET_IF$NET_BCAST$NET_OPTIONS

这样子的话,其它的规则就都可以使用变量的方式来写,所以说规则只要写一次,就可以重复的使用啰!

2、rules
这个档案是整个shorewall的重点档案,policy档案的目的在于制定整个防火墙政策,比方说loc这个接口对dmz这个接口的政策是REJECT或是ACCEPT等,通常由防火墙外至内部网络的政策都是全部先设定为关闭的。而rules这个档案则是在制定一些【例外】的状况,比方说,您的防火墙将所有的port都给关闭了,以至于从外不能由ssh连结进来,那么这个时候就可以在rules这个档案中来定义,它的格式如下所示:

#ACTIONSOURCEDESTPROTODESTSOURCEORIGINAL
#PORTPORT(S)DEST
DNAT fw loc:192.168.1.3 tcp ssh,http

以上的设定是指转送所有fw防火墙接口的ssh及http的请求至loc的界面,而IP为192.168.1.3的机器上。
在这个档案中有几个较常用到的字段,分别说明如下,其它较少用的字段在此笔者就不多加说明了:
 
字段名称设定项目说明
ACTIONACCEPT允许这个联机的要求。
ACCEPT+和ACCETP一样,但是会排除之后有关REDIRECT-及DNAT-的规则。
DROP忽略这个联机的请求。
REJECT不接受这联机的请求,并回复一个icmp-unreachable或是RST的封包给对方。
DNAT转送这个封包至另一个系统(或是其它的port号)。
DNAT-只有进阶的使用才会用到,这和DNAT的规则一样,但是只产生DNAT的iptables的规则而且也不是ACCEPT成对的规则。
REDIRECT重导这个联机的请求到local的另一个埠号中。
REDIRECT-只有进阶的使用才会用到,这和REDIRECT的规则一样,但是只产生REDIRECT的iptables的规则而且也不是ACCEPT成对的规则。
CONTINUE专家模式专用,对于这里所定义的来源及目的端的请求就会被pass通过。
LOG简单的记录封包信息
QUEUE将这个封包伫放在使用者的应用程序中。
<action>;定义在/etc/shorewall/actions或是/usr/share/shorewall/actions.std中的动作。
SOURCE 来源地址,格式可设定以下几种样式:loc、net(在zones档案中所定义的接口)192.168.1.1(IP格式)192.168.1.0/24(子网络格式)loc:192.168.1.1loc:192.168.1.0/24loc:192.168.1.1,192.168.1.2loc:~00-A0-C9-15-39-78(MACAddress)
DEST 目的地址,设定的方式和SOURCE一样,但是如果SOURCE设定为all时,则有以下的限制:并不允许使用MACAddress在DNAT的规则中只允许使用IPAddress不可同时使用interface及IP
PROTO 必需是tcp、udp、icmp或是all,或者是数字。
DESTPORT(S) 目的端的端口号,可用数字或名称,在设定这个字段时,可以用逗号(,)来建立多个端口号清单,也可以用一整个范围的埠号(1024:2048->;意思是从1024到2048之中所有的端口号)来建立清单。
CLIENTPORT(S) 客户端的埠号,这个字段可以忽略掉。


3、nat
这个档案主要是用来定义one-to-one型式的NAT,所谓的"one-to-one"是代表说一个真实IP将所有的服务都转向内部的一个虚拟IP,所以通常是一个真实的IP就【只能】指向一个虚拟的IP,这通常是用在当这台NAT主机是只有跑防火墙服务,然后所有提供外部服务的主机都是藏在内部虚拟IP的状况下,在一般的情况下比较少用到这个档案,如果想要使用forward或是DNAT的功能的话,就不能使用这个档案来设定,必需去设定rules这个档案才行,有关于nat的设定内容如下所示:

#EXTERNALINTERFACEINTERNALALLLOCAL
#INTERFACES
x.x.x.x eth0192.168.1.23
 
EXTERNAL设定此台服务器所要对外的【真实IP】。
INTERFACE设定此台服务器的对外网络网卡接口名称。
INTERNAL设定想将此真实IP转向内部的虚拟IP地址。
ALLINTERFACES如果不想同时套用到其它的网络接口时,请在此设定为no,如果为空白的话,就只会套用到这个界面。
LOCAL如果这个选项设定为Yes或yes,还有ALLINTERFACES也被设定为Yes或yes的话,那么由EXTERNAL传送至INTERNAL的封包就会被限制在内部,要开启这个功能的话,核心版本必需要在2.4.19以上,并且要确认开启CONFIG_IP_NF_NAT_LOCAL的功能,

4、masq
这个档案是用来架设一般所谓的NAT服务器,masq设定的内容如下所示:

#INTERFACESUBNETADDRESSPROTOPORT(S)IPSEC
eth0 eth1 206.124.146.176
#LASTLINE--ADDYOURENTRIESABOVETHISLINE--DONOTREMOVE
 
INTERFACE设定负责对外部网络的接口名称。
SUBNET设定负责对内部网络的接口名称。
ADDRESS设定负责对外部网络的IP地址,这个选项可以不设定。
PROTO在此您可以设定的内容为/etc/protocols的服务内容。
PORT(S)如果在PROTO的部份设定为TCP或是UDP的话,那么在这个选项中就可以设定端口号,或者是服务名称了。
IPSEC设定是否要对这个网络接口的联机进行加密,如果是空白,就是不需要,如果是yes的话,就会进行加密。
范例:
eth0 eth1 206.124.146.177 tcps mtp
eth0 eth1 206.124.146.176

以上的设定内容是代表所有由eth1的tcp协议的smtp封包,都会把IP的标头设定为206.124.146.177,然后由eth0送出去,然后其余的封包都是将封包的标头设定为206.124.146.176,然后由eth0送出去。

5、modules
这个档案会将所有Iptables所需要的模块都加载进去,预设的内容如下所示:

loadmoduleip_tables
loadmoduleiptable_filter
loadmoduleip_conntrack
loadmoduleip_conntrack_ftp
loadmoduleip_conntrack_tftp
loadmoduleip_conntrack_irc
loadmoduleiptable_nat
loadmoduleip_nat_ftp
loadmoduleip_nat_tftp
loadmoduleip_nat_irc

如果您有其它的模块的话,只要加入modules这个档案即可。

6、blacklist
这个档案是设定联机的黑名单,您可以在这个档案中限制某些网络地址的联机动作

ADDRESS/SUBNET PROTOCOL PORT
 
ADDRESS/SUBNET设定所要限制的网络地址,或是子网络及MAC Address,格式分别为下列三种:网络地址:192.168.1.10 子网络:192.168.1.0/24 MACAddress:~00-A0-C9-15-39-78
PROTOCOL可以设定的内容为/etc/protocols的服务内容,这个字段可以选择不设定。
PORT如果在PROTOCOL的部份设定为TCP或是UDP的话,那么在这个选项中就可以设定端口号,或者是服务名称了,这个字段可以选择不设定。
范例:
192.0.2.126 udp 53
上面这行所表示的是封锁由IP192.0.2.126所请求的DNS查询服务。


三、进阶应用
1、开放服务
前面的政策就是将所有由外而内的服务都给封锁掉了,所以现在要一个一个的打开,在此开放HTTP、SMTP、POP3、SSH、DNS、还有一个port10000的Webmin的服务,那么在rules的设定就会如下所示:

ACTION SOURCE DEST PROTO DEST PORT

ACCEPT net fw tcp http
ACCEPT loc fw tcp http

ACCEPT net fw tcp smtp
ACCEPT loc fw tcp smtp

ACCEPTnetfwtcppop3
ACCEPClocfwtcppop3

ACCEPT net fw tcp ssh
ACCEPT loc fw tcp ssh

ACCEPT net fw tcp dns
ACCEPT loc fw tcp dns
ACCEPT net fw udp dns
ACCEPT loc fw udp dns

ACCEPT net fw tcp10000
ACCEPT loc fw tcp10000

以上所有的服务因为都是在这台防火墙中,所以DEST的字段都是设定为fw这个接口,另外因为分别有对内及对外的接口,所以每一个服务都会设定两次,不过也有另外一种设定的方式,如下所示:

2、实例:阻挡MSN
MSN是1863,而MSN连结的网站地址则是为gateway.messenger.hotmail.com。

先挡掉gateway.messenger.hotmail.com的所有tcp连结,在rules的档案中加入以下的记录:
DROPlocnet:gateway.messenger.hotmail.comtcp-

接着再挡掉连结到任何地址的1863端口,
DROP local tcp1863

这样子就可以挡掉大部份msn连结的服务了。

--------------------------------------------------------------------------------

相关文章
Fail2ban简介 2012/3/30 10:53:11
iptables防火墙配置工具ShoreWall的安装和使用实例 2007/3/22 10:32:05
shorewall 企业防火墙的完美实现 2007/3/22 8:37:20


感性空间
设计&运维
网络技术
休闲娱乐
NetFilter
linux&Unix
网络安全
程序空间
软件考试
RFC&ISO
规划&规范
虚拟&存储
Apple技巧
云计算&大数据



文章搜索



站内搜索