如何在CentOS 5.1上设置Shorewall(Shoreline)4.0防火墙
介绍
本教程将引导您在CentOS 5.1上设置Shorewall(Shoreline)4.0防火墙,这可以轻松适应任何其他Linux发行版。
海岸线防火墙(俗称“Shorewall”)是配置Netfilter的高级工具。 您可以使用一组配置文件中的条目来描述您的防火墙/网关要求。 Shorewall读取这些配置文件,并在iptables实用程序的帮助下,Shorewall配置Netfilter以满足您的要求。 Shorewall可用于专用防火墙系统,多功能网关/路由器/服务器或独立的GNU / Linux系统上。 Shorewall不使用Netfilter的ipchains兼容性模式,因此可以利用Netfilter的连接状态跟踪功能。 http://www.shorewall.net/
重要提示:在安装shorewall之前,如果您安装在机器上,我们需要卸载ipchains。
下载shorewall
wget http://www.invoca.ch/pub/packages/shorewall/4.0/shorewall-4.0.11/shorewall-4.0.11-2.noarch.rpm
wget http://www.invoca.ch/pub/packages/shorewall/4.0/shorewall-4.0.11/shorewall-perl-4.0.11-2.noarch.rpm
wget http://www.invoca.ch/pub/packages/shorewall/4.0/shorewall-4.0.11/shorewall-shell-4.0.11-2.noarch.rpm
您可以在shorewall官方网站下载更新版本的下载部分。 http://www.shorewall.net/download.htm
安装Shorewall
安装shorewall是很容易的。 只要打开一个终端,做一个
rpm -ivh shorewall-perl-4.0.11-2.noarch.rpm shorewall-shell-4.0.11-2.noarch.rpm shorewall-4.0.11-2.noarch.rpm
你们都准备好了 不要关闭你的终端,因为我们将需要更多。
设置Shorewall
除非您更改shoetall配置文件/etc/shorewall/shorewall.conf
,否则该程序将不会启动。您可以按照以下方式执行此操作:
vim /etc/shorewall/shorewall.conf
更改第一行
STARTUP_ENABLED=No
至
STARTUP_ENABLED=Yes
保存并退出(在VIM中,按[ESC],然后按':wq')。
如果要配置shorewall,您需要从/usr/share/doc/shorewall-4.0.11/Samples/
中复制示例配置文件。 在Samples目录中有3个不同的目录: one-interface /
, two-interfaces /
和three-interfaces /
。 根据您的网络,您可以通过以下命令执行此操作:
cp /usr/share/doc/shorewall-4.0.11/Samples/one-interfaces/{interfaces,policy,masq,routestopped,rules,zones} /etc/shorewall/
要么
cp /usr/share/doc/shorewall-4.0.11/Samples/two-interfaces/{interfaces,policy,masq,routestopped,rules,zones} /etc/shorewall/
要么
cp /usr/share/doc/shorewall-4.0.11/Samples/three-interfaces/{interfaces,policy,masq,routestopped,rules,zones} /etc/shorewall/
现在你有配置文件位于/ etc / shorewall
。
区域配置
打开并编辑文件/ etc / shorewall / zones
以指定不同的网络区域,这些只是您将在其他文件中使用的标签。
vim /etc/shorewall/zones
将互联网(网络)作为一个区域,将私有网络(dmz)视为另一个区域。防火墙区域或“fw”是您的linux盒本身。 如果你有这些,那么区域文件将如下所示:
#ZONE TYPE OPTIONS IN OPTIONS OUT OPTIONS # fw firewall net ipv4 loc ipv4 dmz ipv4 #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
接口配置
要编辑的下一个文件是指定机器上的接口的interfaces文件。vim /etc/shorewall/interfaces
在这里,您将连接上一步中定义的区域与实际界面。 第三个字段是连接到接口的网络的广播地址(“detect”将为您显示出来)。 最后,最后一个字段是接口的选项。 下面列出的选项是一个很好的起点。
#ZONE INTERFACE BROADCAST OPTIONS net eth0 detect tcpflags,dhcp,routefilter,nosmurfs,logmartians loc eth1 detect tcpflags,nosmurfs dmz eth2 detect #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
策略配置
下一个文件定义您的防火墙默认策略。如果没有其他规则适用,则使用默认策略。通常您将默认策略设置为REJECT或DROP作为默认策略,然后在下一步中特别配置允许的端口/服务,默认情况下根据此策略拒绝或删除。vim /etc/shorewall/policy
一个示例策略(基于我们上面使用的区域和接口)将是:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST # # Policies for traffic originating from the local LAN (loc) # # If you want to force clients to access the Internet via a proxy server # in your DMZ, change the following policy to REJECT info. loc net ACCEPT # If you want open access to DMZ from loc, change the following policy # to ACCEPT. (If you chose not to do this, you will need to add a rule # for each service in the rules file.) loc dmz REJECT info loc $FW REJECT info loc all REJECT info # # Policies for traffic originating from the firewall ($FW) # # If you want open access to the Internet from your firewall, change the # $FW to net policy to ACCEPT and remove the 'info' LOG LEVEL. $FW net REJECT info $FW dmz REJECT info $FW loc REJECT info $FW all REJECT info # # Policies for traffic originating from the De-Militarized Zone (dmz) # # If you want open access from DMZ to the Internet change the following # policy to ACCEPT. This may be useful if you run a proxy server in # your DMZ. dmz net REJECT info dmz $FW REJECT info dmz loc REJECT info dmz all REJECT info # # Policies for traffic originating from the Internet zone (net) # net dmz DROP info net $FW DROP info net loc DROP info net all DROP info # THE FOLLOWING POLICY MUST BE LAST all all REJECT info #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
规则配置
最重要的文件是规则。 这是你设置允许或不允许的地方。 进入防火墙的任何新连接都会通过这些规则,如果这些规则都不适用,则默认策略将适用。
注意:这仅适用于新连接,现有连接将被自动接受。
文件中的注释可以帮助您了解事情的工作原理,但以下内容将提供一个可以让您开始前进的示例:
vim /etc/shorewall/rules
一个例子是:
############################################################################################################# #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP # # Accept DNS connections from the firewall to the Internet # DNS/ACCEPT $FW net # # # Accept SSH connections from the local network to the firewall and DMZ # SSH/ACCEPT loc $FW SSH/ACCEPT loc dmz # # DMZ DNS access to the Internet # DNS/ACCEPT dmz net # # Drop Ping from the "bad" net zone. # Ping/DROP net $FW # # Make ping work bi-directionally between the dmz, net, Firewall and local zone # (assumes that the loc-> net policy is ACCEPT). # Ping/ACCEPT loc $FW Ping/ACCEPT dmz $FW Ping/ACCEPT loc dmz Ping/ACCEPT dmz loc Ping/ACCEPT dmz net ACCEPT $FW net icmp ACCEPT $FW loc icmp ACCEPT $FW dmz icmp # Uncomment this if using Proxy ARP and static NAT and you want to allow ping from # the net zone to the dmz and loc #Ping/ACCEPT net dmz #Ping/ACCEPT net loc #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
最后
我们完成了,让我们开始服务并开始测试。
service shorewall start
Shorewall Web界面或GUI工具
我们有一个用于shorewall的webmin界面,可以通过GUI进行配置。 您可以从http://www.webmin.com/download/modules/shorewall.wbm.gz下载。
玩的开心!