完全免费自建Linux防火墙的方法

一、防火墙的类型和设计策略

在构造防火墙时,常采用两种方式,包过滤和应用代理服务。包过滤是指建立包过滤规则,根据这些规则及IP包头的信息,在网络层判定允许或拒绝包的通过。如允许或禁止FTP的使用,但不能禁止FTP特定的功能(例如Get和Put的使用)。应用代理服务是由位于内部网和外部网之间的代理服务器完成的,它工作在应用层,代理用户进、出网的各种服务请求,如FTP和Telenet等。

目前,防火墙一般采用双宿主机(Dual-homedFirewall)、屏蔽主机(ScreenedHostFirewall)和屏蔽子网(ScreenedSubnetFirewall)等结构。双宿主机结构是指承担代理服务任务的计算机至少有2个网络接口连接到内部网和外部网之间。屏蔽主机结构是指承担代理服务任务的计算机仅仅与内部网的主机相连。屏蔽子网结构是把额外的安全层添加到屏蔽主机的结构中,即添加了周边网络,进一步把内部网和外部网隔开。

防火墙规则用来定义哪些数据包或服务允许/拒绝通过,主要有2种策略。一种是先允许任何接入,然后指明拒绝的项;另一种是先拒绝任何接入,然后指明允许的项。一般地,我们会采用第2种策略。因为从逻辑的观点看,在防火墙中指定一个较小的规则列表允许通过防火墙,比指定一个较大的列表不允许通过防火墙更容易实现。从Internet的发展来看,新的协议和服务不断出现,在允许这些协议和服务通过防火墙之前,有时间审查安全漏洞。

二、基于Linux操作系统防火墙的实现

基于Linux操作系统的防火墙是利用其内核具有的包过滤能力建立的包过滤防火墙和包过滤与代理服务组成的复合型防火墙。下面,让我们来看看怎样配置一个双宿主机的基于Linux的防火墙。

由于Linux的内核各有不同,提供的包过滤的设置办法也不一样。IpFwadm是基于Unix中的ipfw,它只适用于Linux2.0.36以前的内核;对于Linux2.2以后的版本,使用的是Ipchains。IpFwadm和Ipchains的工作方式很相似。用它们配置的4个链中,有3个在Linux内核启动时进行定义,分别是:进入链(InputChains)、外出链(OutputChains)和转发链(ForwardChains),另外还有一个用户自定义的链(UserDefinedChains)。进入链定义了流入包的过滤规则,外出链定义了流出包的过滤规则,转发链定义了转发包的过滤规则。

这些链决定怎样处理进入和外出的IP包,即当一个包从网卡上进来的时候,内核用进入链的规则决定了这个包的流向;如果允许通过,内核决定这个包下一步发往何处,如果是发往另一台机器,内核用转发链的规则决定了这个包的流向;当一个包发送出去之前,内核用外出链的规则决定了这个包的流向。某个特定的链中的每条规则都是用来判定IP包的,如果这个包与第一条规则不匹配,则接着检查下一条规则,当找到一条匹配的规则后,规则指定包的目标,目标可能是用户定义的链或者是Accept、Deny、Reject、Return、Masq和Redirect等。

其中,Accept指允许通过;Deny指拒绝;Reject指把收到的包丢弃,但给发送者产生一个ICMP回复;Return指停止规则处理,跳到链尾;Masq指对用户定义链和外出链起作用,使内核伪装此包;Redirect只对进入链和用户定义链起作用,使内核把此包改送到本地端口。为了让Masq和Redirect起作用,在编译内核时,我们可以分别选择Config_IP_Masquerading和Config_IP_Transparent_Proxy。

假设有一个局域网要连接到Internet上,公共网络地址为202.101.2.25。内部网的私有地址根据RFC1597中的规定,采用C类地址192.168.0.0~192.168.255.0。为了说明方便,我们以3台计算机为例。实际上,最多可扩充到254台计算机。

具体操作步骤如下:

1、在一台Linux主机上安装2块网卡ech0和ech1,给ech0网卡分配一个内部网的私有地址191.168.100.0,用来与Intranet相连;给ech1网卡分配一个公共网络地址202.101.2.25,用来与Internet相连。

2、Linux主机上设置进入、转发、外出和用户自定义链。本文采用先允许所有信息可流入和流出,还允许转发包,但禁止一些危险包,如IP欺骗包、广播包和ICMP服务类型攻击包等的设置策略。

具体设置如下:

(1)刷新所有规则

(2)设置初始规则

(3)设置本地环路规则

本地进程之间的包允许通过。

(4)禁止IP欺骗

(5)禁止广播包

(6)设置ech0转发规则

(7)设置ech1转发规则

将规则保存到/etc/rc.firewallrules文件中,用chmod赋予该文件执行权限,在/etc/rc.d.rc.local中加入一行/etc/rc.firewallrules,这样当系统启动时,这些规则就生效了。

通过以上各步骤的配置,我们可以建立一个基于Linux操作系统的包过滤防火墙。它具有配置简单、安全性高和抵御能力强等优点,特别是可利用闲置的计算机和免费的Linux操作系统实现投入最小化、产出最大化的防火墙的构建。另外,如果在包过滤的基础上再加上代理服务器,如TIS Firewall Toolkit 免费软件包,还可构建更加安全的复合型防火墙。

猜你喜欢

  1. 构筑Linux防火墙之IPtables的概念与用法(1)

    构筑Linux防火墙之什么是Linux防火墙 防火墙典型的设置是有两个网卡,一个流入,一个流出。iptables读取流入和流出的数据包的报头,然后将它们与规划集(ruleset)相比较,然后将可接受的 ...

  2. Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  3. Linux防火墙伪装机制抵抗恶意黑客的详细介绍

    防火墙可分为几种不同的安全等级。在Linux中,由于有许多不同的防火墙软件可供选择,安全性可低可高,最复杂的软件可提供几乎无法渗透的保护能力。不过,Linux核心本身内建了一种称作”伪装”的简单机制, ...

  4. Linux防火墙伪装机制帮您抵抗恶意黑客

    防火墙可分为几种不同的安全等级。在Linux中,由于有许多不同的防火墙软件可供选择,安全性可低可高,最复杂的软件可提供几乎无法渗透的保护能力。不过,Linux核心本身内建了一种称作”伪装”的简单机制, ...

  5. Linux系统能使用网银吗?Linux网银使用方法介绍

    作为一个Linux的爱好者,经过数次决心后放弃了双系统,只在自己的笔记本电脑里安装了Linux,坚持数月后发现网银使用是个大问题.不知能否有好的解决方案?下面就为大家介绍一下,一起来看看吧! [解题思 ...

  6. 如何设置网络防火墙?xp/win7/win8防火墙设置方法

    如何设置网络防火墙?很多网友其实并不会操作,如果网络出现问题怎么处理呢?下面小编就为大家介绍xp/win7/win8防火墙设置方法,一起来看看吧! xp系统的防火墙设置就比较简单了,直接右键网络连接图 ...

  7. 删的不彻底如何彻底删除Linux文件(多种方法)

    我们都知道Linux下如何删除系统文件,但是有时删的不彻底,要如何彻底删除文件呢?下面小编就给大家介绍下彻底删除Linux文件的方法,一起来学习下吧。 linux删除目录很简单,很多人还是习惯用rmd ...

  8. Linux防火墙怎么设置

    一般开启防火墙是防止一些病毒、木马入侵计算机,当然虽然说不一定能完全防止,但是对于一些一般的木马之类还是有一定的效果,那么怎么启动这些linux系统的防火墙。 首先你要知道你的linux系统的版本是属 ...

  9. Linux时间转化方法

    Linux时间转化方法: (1)date -d"2008年 12月 17日 星期三 17:27:22 CST" +"%s" 该命令将2008年 12月 17日 星期三 17:27:22 CST转化为时 ...