Linux防火墙的设计与实现

摘要

目前防火墙的产品很多,而且其功能都十分强大,但是对于个人的小型应用来说价格都是很高,而在这一应用规模上可以选择的防火墙产品并不多。因此,设计一个适合于个人的具有包过滤功能的防火墙是很有必要的。

本设计首先对netfilter的框架进行了整体的了解,然后在这个框架中构造自己的一个过滤规则,其次对基于netfilter中的个人防火墙进行了详细的规划,讨论了个人防火墙在目前网络中的重要性,与研究的意义。对于本次设计,提出了三项功能,第一,要实现过滤规则;第二,与数据库结合,对历史信息进行分析。第三,与日志进行结合,可以对当前问题进行分析。目前这个阶段只是解决了第一个目标,另外两个目标正有待继续进行。第一个目标的实现过程是:首先是自己设置过滤规则,在这个过滤规则中,用到钩子函数,来钩取外部的数据包与自己所设置的过滤规则相比对;其次通过注册函数把自己设置的过滤规则注册到系统内核中,从新启动网卡就可以开始实现自己的过滤规则了。通过对过滤规则的详细设计,与一些数据库与日志相结合,来让这个个人防火墙更完美,功能更强大。通过对个人防火墙的设计,达到了过滤一些内容信息的目的。

关键词 防火墙 过滤

Abstract

Many of the current firewall products, and its features are very strong, but for small applications, individual prices are high, and in the size of the pplication firewall products can choose not many. Therefore, to design a suitable ersonal firewall with packet filtering is necessary.

The design is first carried out on the netfilter framework of overall understanding, and then construct their own in the framework of a filter rule, followed in the netfilter based personal firewall for the detailed planning, disCussed the personal firewall in the importance of the current network , and research significance. For this design, made three features: Firstly, to achieve the filter rules; II: combination with a database of historical information for analysis. Third: to combine with the log, you can analyze the current problems. Resolved at this stage only the first target, the other two goals are to be continued. The first objective of the implementation process is: First, set up their own filtering rules, in this filter rule, use the hook function to hook to take an external packet filter rules set by their own than on; followed up function by their own set up filtering rules to the system kernel, the rest is to start filtering. Through the detailed design of filter rules, with some combination of databases and logs to make this personal firewall is more perfect, more powerful. Through the design of personal firewall, reaching some of the content filtering information purposes.

Key words shared LAN VPN field

目录

引 言 8

第一章 Linux系统 ........................................................................................................................................ 9

1.1 Linux系统简介 ........................................................................................................................................ 9

1.2 Linux的特点 ............................................................................................................................................ 9

第二章 常用防火墙简介 ............................................................................................................................... 9

2.1 防火墙原理 .............................................................................................................................................. 9

2.2 防火墙的分类 ........................................................................................................................................ 10

2.2.1包过滤防火墙 ...................................................................................................................................... 10

2.2.2 应用网关防火墙 ................................................................................................................................. 10

2.2.3 状态检测防火墙 ................................................................................................................................. 10

2.2.4 复合型防火墙 ..................................................................................................................................... 11

第三章LINUX防火墙 11

3.1 Linux防火墙配置命令简介 .................................................................................................................. 11

3.1.1 概述 ..................................................................................................................................................... 11

3.1.2 表(table) ......................................................................................................................................... 12

3.1.3 命令(command) ............................................................................................................................. 12

3.1.4 匹配(match) ................................................................................................................................... 12

3.1.5 目标(target) .................................................................................................................................... 12

3.2 Netfilter/Iptables介绍 .......................................................................................................................... 13

3.2.1 配置防火墙的filter表 ....................................................................................................................... 13

3.2.2 配置防火墙的NAT表 .................................................................................... 1错误!未定义书签。

3.2.3 Iptables的结构 .................................................................................................................................... 15

3.2.4 Iptables的规则要素 ............................................................................................................................ 16

3.2.5 Iptables工具的调用语法 .................................................................................................................... 17

3.2.6 Iptables的优点 ................................................................................................. 1错误!未定义书签。

第四章 防火墙的设计和实现 ..................................................................................... 错误!未定义书签。

4.1设计思路 ................................................................................................................. 错误!未定义书签。

4.2 配置规则 ................................................................................................................................................ 18

4.3 实验环境 ................................................................................................................................................ 19

4.4 实验目的 ................................................................................................................ 错误!未定义书签。

4.5 实验详细设计 ........................................................................................................................................ 19

4.6LINUX防火墙测试 ................................................................................................ 错误!未定义书签。

结束语 ........................................................................................................................................................... 31

参考文献 ....................................................................................................................................................... 32

引 言

对于因特网上的系统,不管是什么情况,首先我们要明确一点:网络是不安全的。虽然创建一个防火墙并不能保证系统100%安全[7],但却是绝对有必要的。防火墙的目的就是将破坏网络安全的人挡在你的网络之外,使你可以顺利完成自己的工作。

LINUX是近几年突出的一种操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。LINUX防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火墙内核,LINUX操作系统会对接收到的数据包按一定的策略进行处理。随着Linux系统被越来越多地使用,安全问题成了关键。Linux防火墙技术也在不断的发展,经历了Ipfw、Ipchains等过程。Iptables作为Linux防火墙的新一代继承人,当然也针对骇客不断推陈出新的探测技术拟出一些因应之道,那就是对封包的联机状态,作出更详细的分析,透过这样的分析能对一些可能被骇客利用的弱点加以阻隔,另外也开发出真正的封包改写能力,不需要透过其它程序的协助来仿真网址转译,除此之外,Iptables也获得系统核心的直接支持,不需要像Ipchains那样需要自行重新编译核心。

Iptables优越的性能使它取代了Ipchains,成为网络防火墙的主流,而Ipchains并未被淘汰,目前Ipchains已经转型成单机防火墙,在安装新版Linux时,会自动被安装启用,以保护单机上未被使用的通讯端口[1]。

总之,目前大部分国内金融、商业等企业都采用Linux系统,因此在Linux上配置防火墙有极其重要的意义,同时可以学习这一先进的技术与熟悉一个优秀的操作平台。

第一章 Linux系统

1.1 Linux系统简介

Linux是一套免费使用和自由传播的类Unix操作系统。我们通常所说的Linux,指的是GNU/Linux ,即采用Linux内核的GNU操作系统。GNU代表GNU’s Not Unix。它既是一个操作系统,也是一种规范。Linux最早由Linus Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(程序的许可方式均为GPL:General Public License)。在不断的有程序员和开发者加入到GNU组织中后,变造就了今天我们所看到的Linux!Linux是一个内核。然而一个完整的操作系统不仅仅是内核而已。所以许多个人、组织和企业开发了基于GNU/Linux的Linux发行版。今天有不计其数的发行版可供人们选择使用,虽然不够统一的标准给不同版本的使用者在技术上的相互沟通带来了一定的麻烦,但归根结底“自由、开源、团结互助”的理念是Linux爱好者们共同的向往。

1.2 Linux的特点

有很多人现在都在学习和研究Linux。作为当今一种新兴和流行的操作系统的前身来源与强大的UNIX。而那个芬兰小伙子一开始就没把它定位成一种操作系统。但是Linux的作用在今天已越来越重要了。想接触和学习它,就要先了解它的特点。Linux可以说是作为开放源码的自由软件的代表,作为自由软件,它有如下两个特点:一是它开放源码并对外免费提供,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上,因此Linux操作系统可以从互联网上很方便地免费下载得到,这样你还可以省下购买Windows操作系统的一笔不小的资金。

第二章 常用防火墙简介

2.1防火墙原理

防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。其是不同网络或网络安全域之间信息的唯一出入口,通过监测、限制、更改跨越防火墙的数据流, 尽可能地对外部屏蔽网络内部的信息、结构和运行状况,有选择地接受外部访问,对内部强化设备监管、控制对服务器与外部网络的访问,在被保护网络和外部网络之间架起一道屏障,以防止发生不可预测的、潜在的破坏性侵入。防火墙有两种,硬件防火墙和软件防火墙,这些都能起到保护作用并筛选出网络上的攻击者。

2.2防火墙的分类

包过滤防火墙、应用网关防火墙、状态检测防火墙、复合型防火墙

2.2.1包过滤防火墙

包过滤防火墙:包过滤防火墙不检查数据区,包过滤防火墙不建立连接状态表,前后报文无关,应用层控制很弱。包过滤防火墙一般在路由器上实现,用以过滤用户定义的内容,如IP地址。包过滤防火墙的工作原理是:系统在网络层检查数据包,与应用层无关。这样系统就具有很好的传输性能,可扩展能力强。但是,包过滤防火墙的安全性有一定的缺陷,因为系统对应用层信息无感知,也就是说,防火墙不理解通信的内容,所以可能被黑客所攻破。

2.2.2应用网关防火墙

应用网关防火墙:不检查IP、TCP报头,不建立连接状态表,网络层保护比较弱。应用网关防火墙检查所有应用层的信息包,并将检查的内容信息放入决策过程,从而提高网络的安全性。然而,应用网关防火墙是通过打破客户机/服务器模式实现的。每个客户机/服务器通信需要两个连接:一个是从客户端到防火墙,另一个是从防火墙到服

务器。另外,每个代理需要一个不同的应用进程,或一个后台运行的服务程序,对每个新的应用必须添加针对此应用的服务程序,否则不能使用该服务。所以,应用网关防火墙具有可伸缩性差的缺点。

2.2.3状态检测防火墙

状态检测防火墙:不检查数据区,建立连接状态表,前后报文相关,应用层控制很弱。 状态检测防火墙基本保持了包过滤防火墙的优点,性能比较好,同时对应用是透明的,在此基础上,对于安全性有了大幅提升。这种防火墙摒弃了包过滤防火墙仅仅考察进出网络的数据包,不关心数据包状态的缺点,在防火墙的核心部分建立状态连接表,维护了连接,将进出网络的数据当成一个个的事件来处理。可以这样说,状态检测包过滤防火墙规范了网络层和传输层行为,而应用代理型防火墙则是规范了特定的应用协议上的行为。

2.2.4复合型防火墙

复合型防火墙:可以检查整个数据包内容,根据需要建立连接状态表,网络层保护强,应用层控制细,会话控制较弱。 复合型防火墙是指综合了状态检测与透明代理的新一代的防火墙,进一步基于ASIC架构,把防病毒、内容过滤整合到防火墙里,其中还包括VPN、IDS功能,多单元融为一体,是一种新突破。常规的防火墙并不能防止隐蔽在网络流量里的攻击,在网络界面对应用层扫描,把防病毒、内容过滤与防火墙结合起来,这体现了网络与信息安全的新思路。防火墙在网络边界实施OSI第七层的内容扫描,实现了实时在网络边缘布署病毒防护、内容过滤等应用层服务措施。

第三章 LINUX防火墙

3.1 Linux防火墙配置命令简介

3.1.1概述

Linux防火墙通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:

iptables [-t table] command [match] [target]

3.1.2表(table)

[-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。filter用于一般信息包过滤,nat用于转发信息包,mangle标记用于高级路由的信息包。

3.1.3命令(command)

command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则。用以下几个常用命令-A或--append,-D或--delete,-P或--polocy,-N或--newchain,-F或--flush,-L或--list。

3.1.4匹配(match)

iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。有一下几个参数-P或--protocol,-S或--source,-D或--destination。

3.1.5目标(target)

目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。常用的有accept,drop,reject,return。

还有许多用于建立高级规则的其它目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。

3.2 Netfilter/Iptables介绍

3.2.1 配置防火墙的filter表

(1)查看本机关于IPTABLES的设置情况

[root@localhost root]# iptables -L –n

(2)清除原有规则

不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter[8]的所有规则。

[root@localhost root]# iptables -F 清除预设表filter中的所有规则链的规则。

[root@localhost root]# iptables -X 清除预设表filter中使用者自定链中的规则。

(3)设定预设规则

[root@localhost root]# iptables -p INPUT DROP

[root@localhost root]# iptables -p OUTPUT ACCEPT

[root@localhost root]# iptables -p FORWARD DROP

(4)添加规则

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。为了能采用远程SSH登陆,我们要开启22端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@localhost root]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:

[root@localhost root]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT 如果做了WEB服务器,开启80端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 如果做了邮件服务器,开启25110端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[root@localhost root]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT 如果做了FTP服务器,开启21端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT 如果做了DNS服务器,开启53端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

3.2.2配置防火墙的NAT表

(1)查看本机关于NAT的设置情况

[root@localhost root]# iptables -t nat –L

(2) 添加规则

添加基本的NAT[8]地址转换,我们只添加DROP链.因为默认链全是ACCEPT。防止外网用内网IP欺骗

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

DROP非法连接

[root@localhost root]# iptables -A INPUT -m state --state INVALID -j DROP

[root@localhost root]# iptables -A OUTPUT -m state --state INVALID -j DROP

[root@localhost root]# iptables-A FORWARD -m state --state INVALID -j DROP 允许所有已经建立的和相关的连接

[root@localhost root]#iptables-A INPUT -m state --state

ESTABLISHED,RELATED -j ACCEPT

[root@localhost root]#iptables-A INPUT -m state --state

ESTABLISHED,RELATED -j ACCEPT

[root@localhost root]# iptables-A OUTPUT -m state --state

ESTABLISHED,RELATED -j ACCEPT

[root@localhost root]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里,写入后把防火墙重起一下,才能起作用。

[root@localhost root]# service iptables restart

3.2.3 Iptables的结构

Iptables一般由指定表(table)、指定链(chains)、指定操作命令(command)、指定规则匹配器(matcher)、指定目标动作(target)等构成,如图1所示。

图1 Iptables结构图

Iptables的指令结构如图2所示。

图2.2 Iptables的指令结构图

3.2.4 Iptables的规则要素

一条Iptables规则基本上应该包含5个要素:

1、指定表(table)

2、指定操作命令(command)

3、指定链(chains)

4、指定规则匹配器(matcher)

5、指定目标动作(target)

3.2.5 Iptables工具的调用语法

Iptables的语法通常可以简化为下面的形式:

Iptables[-t table]CMD[chain][rule-matcher][-j target]

其中:tables为表名,CMD为操作命令,chain为链名,rule-matcher为规则匹配器,target为目标动作。

Iptables软件包提供了两个命令分别用于保存和恢复规则集。可以使用下在的命令转储在内存中的内核规则集。其中/etc/sysconfig/Iptables是Iptables守护进程调用的默认规则集文件:

#/sbin/Iptables-save >; /etc/sysconfig/Iptables

要恢复原来的规则库,需使用命令:

#/sbin/Iptables-restore

为了使得用Iptables命令配置的规则在下次启动机器时还能被使用,有两种方法:

1、使用Iptables的启动脚本实现。Iptables的启动脚/etc/rc.d/init.d/Iptables每次启动时都使用/etc/sysconfig/Iptables所提供的规则进行规则恢复,并可以使用如下的命令保存规则:#service Iptables save

2、在自定义脚本中用Iptables命令直接创建规则集。可以直接用Iptables命令编写一个规则脚本,并在启动时执行这个脚本。例如:若规则脚本的文件名为/etc/fw/rules,则可以在启动脚本/etc/rd.d/init.d/rc.local中加入下面的代码:if[-x/etc/fw/rules];then/etc/fw/rules;fi;这样,机器每次启动时即可执行该规则脚本。如果使用此种方式,建议使用ntsysv命令关闭系统的Iptables守护进程。

3.2.6 Iptables的优点

1、Iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。

2、Iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。

3、系统日志比ipchains更容易配置,扩展性也更好。

4、对于网络地址转换(Network Address Translation)和透明代理的支持,

Netfilter更为强大和易于使用。

第四章 防火墙的设计和实现

4.1 设计思路

LINUX操作系统以公开的源代码、强大稳定的网络功能和大量的免费资源而受到众多网络管理员称赞。而LINUX防火墙其实是操作系统本身所自带的一个功能模块。

通过这个功能模块安装特定的防火墙内核,而形成LINUX防火墙。我们又知道LINUX操作系统会对接收到的数据包按一定的策略进行处理,因而用户只要配置这些策略就可以实现对LINUX操作系统的管理。

而用户所要做的,就是使用特定的配置软件(netfilter/iptables组件)去定制适合自己的“数据包处理策略”。

4.2 配置规则

一个LINUX防火墙系统需要一个合理、高效并且简单的安全机制,而安全机制通常通过Input、Output、Forward这三条“防火链”实现。

用户需要通过配置Input、Output、Forward这条“防火链”来实现“数据包处理策略”,创建一套“防火规则”来对数据包层层限制的目的。

而我们要弄明白系统如何对待数据包。这些数据包会经过相应的数据链,比如进入的你系统的数据包会通过Input链,而离开你系统的数据包会经过Output数据链,但一台计算机作为两个网络连接的两台计算机或是网关,那么将会有很多数据经过这台计算机。这台计算机相当与一个路由器,这是这些数据将经过Forward链。通过这些链来管理经过系统的数据包。那么怎样管理这些链呢?

这样用户就需要一个与LINUX系统对话的媒介,用户可以使用(netfilter/iptables组件)。netfilter/iptables组件是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统,该系统利于在 Linux 系统上控制 IP 信息包过滤和防火墙配置。

那么这个netifilter/iptables组建又是怎么工作的呢?我们可以举这么一个例子。比如有一用户需访问网站:www.baidu.com,我们在浏览器键入网址,那么系统将对网站:www.baidu.com发起请求,那么这些数据将经过Output链。在经过Output链时,Linux内核会检查是否有符合规则的数据包,如果没有Linux会选择选择默认的规则。如果得到允许请求就发出去了,然后网站:www.baidu.com将返回数据包会经过Input链,同样Linux内核会检查是否有符合规则的数据包,同理Linux同样也有相应的规则。而Forward链用于转发,在NAT时会用到。

4.3 实验环境

XXX公司搬移新址现需要重新配置网络。公司利用4M 电信专网进行上网,分配的IP为113.248.238.148。公司现有十四台电脑,其中一台为会计专用。公司使用DHCP分配IP,IP为192.168.1.0/24。

为了进行网络安全防护,现拿出一台电脑搭载上Red Hat Release 9操作系统作为ALG(应用层网关)。ALG eth0连接电信专网,eth1连接TP-link-SG1016DT交换机。SG1016DT后连接公司其余12台电脑。

现在ALG上建iptables防火墙。其余十二台电脑除会计电脑外通过ALG上网,公司内部网络共享一台打印机。

4.4 实验目的

利用Linux防火墙保证公司上网环境的安全、可控。

要求除会计电脑以外,其余十二台电脑能连接外网。并且局域网内网络共享打印服务。

4.5 实验详细设计

首先,我们在ALG上搭载Linux防火墙启动并且运行系统。

(1) 启动防火墙命令:

service iptables start

(2) 查看防火墙命令:iptables –

L

(3) 为了处于网络安全考虑,我们需要对防火墙里面原有的规则进行清除。

A.清除预设表filter中所有规则链中的规则

# iptables -F

B. 清除预设表filter中使用者自定链中的规则

# iptables -X

# iptables -Z

/etc/rc.d/init.d/iptables

我们用到命令。

#/etc/rc.d/init.d/iptables save (4) Linux防火墙配置命令没有保存,重启便会丢失。所以我们需要保存至:

(5)设定预设规则。

设置链的默认策略一般有两种。

A.首先允许所有的数据包通过防火墙,然后禁止危险的包。

可以这样设置:

#iptables -P INPUT ACCEPT

#iptables -P OUTPUT ACCEPT

#iptables -P FORWARD ACCEPT

B.首先禁止所有的数据包通过防火墙,然后允许特定的包。

可以这样设置:

#iptables -P INPUT DROP

#iptables -P OUTPUT DROP

#iptables -P FORWARD DROP

C.当然这两种默认规则都是合理且非常正确的,但根根我们的实验环境,我们可以采取另外一种高效可行的方法。我们设置OUTPUT ACCEPT、INPUT DROP、FORWARD DROP,控制流入的数据包,不限制流出的数据包。

(6)添加规则,开放网络接口

建立回环接口lo,只在INPUT和OUTPUT链上起作用。

#iptables -A INPUT -i lo -j ACCEPT

#iptables -A OUTPUT -i lo -j ACCEPT

在所有网卡上开放ping功能,便于维护与检测。

#iptables -A INPUT -i eho+ -p icmp --icmp-type 8 -j ACCEPT

#iptables -A OUTPUT -i eho+ -p icmp --icmp-type 0 -j ACCEPT

(7)设置管理IP

管理IP设置用于对于ALG的管理与维护。由于Linux防火墙的特殊性,我们需对其做一些限制。如端口、管理机器的IP等。

#iptables -A INPUT -i eth1 -s 192.168.1.111 -d 192.168.1.1 -p tcp --dport 22 -j ACCEPT

#iptables -A OUTPUT -i eth1 -s 192.168.1.1 -d 192.168.1.111 -p tcp --dport 22 -j ACCEPT

我们可以看到我们对管理机器的IP限制为192.168.1.111,其管理端口为22。

(8)ALG常用端口管理

ALG常用来作为FTP、WEB网站、邮件服务器、DNS等,所以需将这些常用的端口开启。

WEB服务器开启80端口。

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

邮件服务器开启25、110端口。

#iptables -A INPUT -p tcp --dport 25 -j ACCEPT

#iptables -A INPUT -p tcp --dport 110 -j ACCEPT

FTP服务器开启20、21端口。

#iptables -A INPUT -p tcp --dport 20 -j ACCEPT

#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

DNS服务器开启53端口。

#iptables -A INPUT -p tcp --dport 53 -j ACCEPT

为了安全起见,有些木马会扫描一些elite端口。然而这些非标准端口并不是常用的通信端口,我们阻塞这些端口将能有效减少网络被病毒感染的机会。

包括31337到31340等一系列27444、27665、Netbus、smb、NFS端口。

(9)转发功能

前面我们默认对FORWARD链设置为DROP,要保持内网与外网的正常通信。我们需开启FORWARD转发功能,并对其做一些必要的限制。

# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

#iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

对于从外网连接内网的RELATED、ESTABLISHED状态允许通过,对于内网对外网的连接则不做限制。

TCP数据包的管理,对于TCP连接不存在的包丢弃

#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

IP碎片的处理,防止DDos攻击。

#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

由于前文设置允许icmp数据包,因为在此需要对其加以限制。

#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

(10) 专有机器保护

由于公司会计电脑存有公司的重要数据,因此需对其加以保护和限制。此次实验用DHCP分配IP,因此只能采用MAC地址的限制。

#iptables -A FORWARD -m mac --mac 00:ff:d4:8d:d9:13 -p udp -m mulitport -port 53 -j DROP

#iptables -A FORWARD -m mac --mac 00:ff:d4:8d:d9:13 -p tcp -m mulitport -port 3128,110,25 -j DROP

(11) 附:配置文件

#!/bin/sh

#

# Startup script to implement /etc/sysconfig/iptables pre-defined rules. #

# chkconfig: 2345 08 92

#

# description: Automates a packet filtering firewall with iptables. #

# by [email protected], based on the ipchains script:

# Script Author: Joshua Jensen

# -- hacked up by gafton with help from notting

# modified by Anton Altaparmakov :

# modified by Nils Philippsen

#

# config: /etc/sysconfig/iptables

# Source 'em up

. /etc/init.d/functions

IPTABLES_CONFIG=/etc/sysconfig/iptables

if [ ! -x /sbin/iptables ]; then

exit 0

fi

KERNELMAJ=`uname -r | sed -e 's,\..*,,'`

KERNELMIN=`uname -r | sed -e 's,[^\.]*\.,,' -e 's,\..*,,'`

if [ "$KERNELMAJ" -lt 2 ] ; then

exit 0

fi

if [ "$KERNELMAJ" -eq 2 -a "$KERNELMIN" -lt 3 ] ; then

exit 0

fi

if /sbin/lsmod 2>/dev/null |grep -q ipchains ; then

# Don't do both

exit 0

fi

iftable() {

if fgrep -qsx $1 /proc/net/ip_tables_names; then

fi

}

start() {

# don't do squat if we don't have the config file

if [ -f $IPTABLES_CONFIG ]; then

# If we don't clear these first, we might be adding to

# pre-existing rules.

chains=`cat /proc/net/ip_tables_names 2>/dev/null`

echo -n $"Flushing all current rules and user defined chains:" let ret=0

for i in $chains; do iptables -t $i -F; let ret+=$?; done iptables -F

let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

iptables -t "$@"

echo

echo -n $"Clearing all current rules and user defined chains:" let ret=0

for i in $chains; do iptables -t $i -X; let ret+=$?; done iptables -X

let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

fi

echo

for i in $chains; do iptables -t $i -Z; done

echo -n $"Applying iptables firewall rules: "

grep -v "^[[:space:]]*#" $IPTABLES_CONFIG | grep -v '^[[:space:]]*$' success || \ failure | /sbin/iptables-restore -c && \

echo

touch /var/lock/subsys/iptables

fi

}

stop() {

chains=`cat /proc/net/ip_tables_names 2>/dev/null`

echo -n $"Flushing all chains:"

let ret=0

for i in $chains; do iptables -t $i -F; let ret+=$?; done

iptables -F; let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

fi

echo -n $"Removing user defined chains:"

let ret=0

for i in $chains; do iptables -t $i -X; let ret+=$?; done

iptables -X; let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

fi

echo

echo -n $"Resetting built-in chains to the default ACCEPT policy:" iftable filter -P INPUT ACCEPT && \

iftable filter -P OUTPUT ACCEPT && \

iftable filter -P FORWARD ACCEPT && \

iftable nat -P PREROUTING ACCEPT && \

iftable nat -P POSTROUTING ACCEPT && \

iftable nat -P OUTPUT ACCEPT && \

iftable mangle -P PREROUTING ACCEPT && \

iftable mangle -P POSTROUTING ACCEPT && \

iftable mangle -P INPUT ACCEPT && \

iftable mangle -P OUTPUT ACCEPT && \

iftable mangle -P FORWARD ACCEPT && \

success || \

failure

echo

rm -f /var/lock/subsys/iptables

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

# "restart" is really just "start" as this isn't a daemon,

# and "start" clears any pre-defined rules anyway.

# This is really only here to make those who expect it happy

start

;;

condrestart)

[ -e /var/lock/subsys/iptables ] && start

;;

status)

tables=`cat /proc/net/ip_tables_names 2>/dev/null`

for table in $tables; do

;;

panic)

echo -n $"Changing target policies to DROP: "

iftable filter -P INPUT DROP && \

iftable filter -P FORWARD DROP && \

iftable filter -P OUTPUT DROP && \

iftable nat -P PREROUTING DROP && \

iftable nat -P POSTROUTING DROP && \

iftable nat -P OUTPUT DROP && \

iftable mangle -P PREROUTING DROP && \

iftable mangle -P OUTPUT DROP && \

iftable mangle -P POSTROUTING DROP && \

iftable mangle -P INPUT DROP && \

iftable mangle -P FORWARD DROP && \

success || failure

echo

echo -n "Flushing all chains:"

iftable filter -F INPUT && \

iftable filter -F FORWARD && \

echo $"Table: $table" iptables -t $table --list done

iftable filter -F OUTPUT && \

iftable nat -F PREROUTING && \

iftable nat -F POSTROUTING && \

iftable nat -F OUTPUT && \

iftable mangle -F PREROUTING && \

iftable mangle -F OUTPUT && \

success || failure

echo

echo -n "Removing user defined chains:"

iftable iftable filter -X && \

iftable nat -X && \

iftable mangle -X && \

success || failure

echo

;;

save)

echo -n $"Saving current rules to $IPTABLES_CONFIG: "

touch $IPTABLES_CONFIG

chmod 600 $IPTABLES_CONFIG

/sbin/iptables-save -c > $IPTABLES_CONFIG 2>/dev/null && \

success $"Saving current rules to $IPTABLES_CONFIG" || \

failure $"Saving current rules to $IPTABLES_CONFIG"

echo

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status|panic|save}" exit 1

esac

exit 0

4.6 LINUX防火墙测试

为办公室搭建LINUX防火墙的配置,有两个局域网,LAN1地址:202.117.120.65/255.255.255.248

为公共网络IP,LAN2地址为

192.168.0.0/255.255.255.0,为内部保留地址。LINUX防火墙有两个内部接口:202.117.120.70接LAN1;192.168.0.1接LAN2。现对防火墙进行配置,使LAN2的主机通过IP伪装访问互联网,但只允许使用外部Web代理服务器202.117.112.34的1252端口。LAN1中的主机被限制使用几种常用的互联网服务(DNS、SMTP、POP3、HTTP和FTP)。下面就是创建的防火墙规则脚本:

#/etc/rc.d/rc.firewall

#!/bin/sh

# eth0---External_interface

# eth1---LAN1_interface

# eth2---LAN2_interface

echo "Starting firewalling . . ."

#Flush any existing rules from all chains

ipchains -F

#Set the default policy to deny

ipchains -P input DENY

ipchains -P output REJECT

ipchains -P forward REJECT

#Enable traffic on the loopback interface

ipchains -A input -i lo -j ACCEPT

ipchains -A output -i lo -j ACCEPT

#Enable the traffic on the eth1

ipchains -A input -i eth1 -j ACCEPT

ipchains -A output -i eth1 -j ACCEPT

#the traffic on the eth2 only enablling using the WEB PROXY

ipchains -A input -i eth2 -p tcp -s 192.168.0.0/24 1024:65535 202.117.112.34 1252 -j ACCEPT

ipchains -A output -i eth2 -p tcp ! -y -s 202.117.112.34 1252 192.168.0.0/24 1024:65535 -j ACCEPT

#Forwarding rules

ipchains -A forward -i eth0 -s 202.117.120.64/29 -j ACCEPT

ipchains -A forward -i eth0 -s 192.168.0.0/24 -j MASQ

ipchains -A forward -i eth1 -d 202.117.120.64/29 -j ACCEPT

#Enable outgoing the packets from LAN on the External_Interface

ipchains -A output -i eth0 -j ACCEPT

#Enable incoming some ICMP messages on eth

-d -d

# 1.Dest_Unreachable,Service_Unavailable

ipchains -A input -i eth0 -p icmp -s any/0 3 -d 202.117.120.64/29 -j ACCEPT # 2.Time_Exceeded

ipchains -A input -i eth0 -p icmp -s any/0 11 -d 202.117.120.64/29 -j ACCEPT # 3.Allow outgoing pings to anywhere

ipchains -A input -i eth0 -p icmp -s any/0 0 -d 202.117.120.64/29 -j ACCEPT #Enable Proxy of 202.117.112.34:1252

ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.34 1252 -j ACCEPT #DNS (53) (DNS:202.117.112.3)—client modes

ipchains -A input -i eth0 -p udp -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT

ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#SMTP(25)Enable sending mail through a remote SMTP gateway

ipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#POP(110)--Enable receiving mail from a remote POP server

ipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#HTTP(80) --Enable accessing remote WEB site s as a client

ipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#FTP(20,21) --Enable accessing remote FTP servers

ipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d 202.117.120.64/29 1024:65535 -j ACCEPT

ipchains -A input -i eth0 -p tcp -s any/0 20 -d 202.117.120.64/29 1024:65535 -j ACCEPT

echo "done"

结束语

通过这次网络系统的课程设计,使我对Linux操作系统有了一定的了解,同时我也总结出了一些分析问题和解决问题的方法及技巧。进一步加深了对基础知识、基础课程、基础语言的掌握,可以说是受益颇丰。在此次网络操作系统实验的设计中,我得到了老师的大力支持和帮助,也参考了大量的书籍和网上资料,学到了不少东西。在这里要首先感谢的是我的指导老师侯利娟老师,在此次课程设计过程中她耐心、细致的给我以指导,也提出了不少有益的建议和意见。其次我要感谢我的同学,是他们给了我很多建议和帮助,使我在课程设计过程中遇到的麻烦都能够迎刃而解。这次课程设计让我学到了很多书本上学不到的东西,极大地激发了自己和同学的学习热情和学习欲望。通过这种实践性的活动,真是让我受益匪浅,收获良多。我会在以后的学习生活中继续保持良好的学习势头,争取学以致用、学有所用。

参考文献

[1] 陈纯著. Linux操作系统网络服务[M]. 北京:科学出版社,2004

[2] 黄宏文著. Linux网络架站务实[M]. 北京:中国青年出版社,2002

[3] 朱华生著. Linux基础教程[M]. 北京:清华大学出版社,2005

[4] Current. Linux Networking-HOWTO (Previously the Net-3 Howto) [M]. August,1999

[5] 刘兵 吴煜煌.Linux实用教程[M].北京:中国水利水电出版社,2004

[6] Matthew Strebe,Charles Perkins著,黎文,董正卫等译.高效构筑与管理防火墙[M] 北京:电子工业出版社,2000.

[7] 张小斌,等。计算机网络安全工具[M].北京:清华大学出版社,1999.

[8] 罗传荣,郭文秀 著,政府上网工程实用技术[M] 北京:人民邮电出版社,2000.

[9} Stang. DJ著,程佩青译,计算机网络安全奥秘[M],北京:电子工业出版社,1996.

[10] Chris Hare,Karanjit Siyan 著,刘威勇,王明举等译.Internet防火墙与网络安全[M] 北京: 机械工业出版社,1998.

[11] Terry William Ogletree 著,防火墙原理与实施[M] 北京:电子工业出版社,2001.

摘要

目前防火墙的产品很多,而且其功能都十分强大,但是对于个人的小型应用来说价格都是很高,而在这一应用规模上可以选择的防火墙产品并不多。因此,设计一个适合于个人的具有包过滤功能的防火墙是很有必要的。

本设计首先对netfilter的框架进行了整体的了解,然后在这个框架中构造自己的一个过滤规则,其次对基于netfilter中的个人防火墙进行了详细的规划,讨论了个人防火墙在目前网络中的重要性,与研究的意义。对于本次设计,提出了三项功能,第一,要实现过滤规则;第二,与数据库结合,对历史信息进行分析。第三,与日志进行结合,可以对当前问题进行分析。目前这个阶段只是解决了第一个目标,另外两个目标正有待继续进行。第一个目标的实现过程是:首先是自己设置过滤规则,在这个过滤规则中,用到钩子函数,来钩取外部的数据包与自己所设置的过滤规则相比对;其次通过注册函数把自己设置的过滤规则注册到系统内核中,从新启动网卡就可以开始实现自己的过滤规则了。通过对过滤规则的详细设计,与一些数据库与日志相结合,来让这个个人防火墙更完美,功能更强大。通过对个人防火墙的设计,达到了过滤一些内容信息的目的。

关键词 防火墙 过滤

Abstract

Many of the current firewall products, and its features are very strong, but for small applications, individual prices are high, and in the size of the pplication firewall products can choose not many. Therefore, to design a suitable ersonal firewall with packet filtering is necessary.

The design is first carried out on the netfilter framework of overall understanding, and then construct their own in the framework of a filter rule, followed in the netfilter based personal firewall for the detailed planning, disCussed the personal firewall in the importance of the current network , and research significance. For this design, made three features: Firstly, to achieve the filter rules; II: combination with a database of historical information for analysis. Third: to combine with the log, you can analyze the current problems. Resolved at this stage only the first target, the other two goals are to be continued. The first objective of the implementation process is: First, set up their own filtering rules, in this filter rule, use the hook function to hook to take an external packet filter rules set by their own than on; followed up function by their own set up filtering rules to the system kernel, the rest is to start filtering. Through the detailed design of filter rules, with some combination of databases and logs to make this personal firewall is more perfect, more powerful. Through the design of personal firewall, reaching some of the content filtering information purposes.

Key words shared LAN VPN field

目录

引 言 8

第一章 Linux系统 ........................................................................................................................................ 9

1.1 Linux系统简介 ........................................................................................................................................ 9

1.2 Linux的特点 ............................................................................................................................................ 9

第二章 常用防火墙简介 ............................................................................................................................... 9

2.1 防火墙原理 .............................................................................................................................................. 9

2.2 防火墙的分类 ........................................................................................................................................ 10

2.2.1包过滤防火墙 ...................................................................................................................................... 10

2.2.2 应用网关防火墙 ................................................................................................................................. 10

2.2.3 状态检测防火墙 ................................................................................................................................. 10

2.2.4 复合型防火墙 ..................................................................................................................................... 11

第三章LINUX防火墙 11

3.1 Linux防火墙配置命令简介 .................................................................................................................. 11

3.1.1 概述 ..................................................................................................................................................... 11

3.1.2 表(table) ......................................................................................................................................... 12

3.1.3 命令(command) ............................................................................................................................. 12

3.1.4 匹配(match) ................................................................................................................................... 12

3.1.5 目标(target) .................................................................................................................................... 12

3.2 Netfilter/Iptables介绍 .......................................................................................................................... 13

3.2.1 配置防火墙的filter表 ....................................................................................................................... 13

3.2.2 配置防火墙的NAT表 .................................................................................... 1错误!未定义书签。

3.2.3 Iptables的结构 .................................................................................................................................... 15

3.2.4 Iptables的规则要素 ............................................................................................................................ 16

3.2.5 Iptables工具的调用语法 .................................................................................................................... 17

3.2.6 Iptables的优点 ................................................................................................. 1错误!未定义书签。

第四章 防火墙的设计和实现 ..................................................................................... 错误!未定义书签。

4.1设计思路 ................................................................................................................. 错误!未定义书签。

4.2 配置规则 ................................................................................................................................................ 18

4.3 实验环境 ................................................................................................................................................ 19

4.4 实验目的 ................................................................................................................ 错误!未定义书签。

4.5 实验详细设计 ........................................................................................................................................ 19

4.6LINUX防火墙测试 ................................................................................................ 错误!未定义书签。

结束语 ........................................................................................................................................................... 31

参考文献 ....................................................................................................................................................... 32

引 言

对于因特网上的系统,不管是什么情况,首先我们要明确一点:网络是不安全的。虽然创建一个防火墙并不能保证系统100%安全[7],但却是绝对有必要的。防火墙的目的就是将破坏网络安全的人挡在你的网络之外,使你可以顺利完成自己的工作。

LINUX是近几年突出的一种操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。LINUX防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火墙内核,LINUX操作系统会对接收到的数据包按一定的策略进行处理。随着Linux系统被越来越多地使用,安全问题成了关键。Linux防火墙技术也在不断的发展,经历了Ipfw、Ipchains等过程。Iptables作为Linux防火墙的新一代继承人,当然也针对骇客不断推陈出新的探测技术拟出一些因应之道,那就是对封包的联机状态,作出更详细的分析,透过这样的分析能对一些可能被骇客利用的弱点加以阻隔,另外也开发出真正的封包改写能力,不需要透过其它程序的协助来仿真网址转译,除此之外,Iptables也获得系统核心的直接支持,不需要像Ipchains那样需要自行重新编译核心。

Iptables优越的性能使它取代了Ipchains,成为网络防火墙的主流,而Ipchains并未被淘汰,目前Ipchains已经转型成单机防火墙,在安装新版Linux时,会自动被安装启用,以保护单机上未被使用的通讯端口[1]。

总之,目前大部分国内金融、商业等企业都采用Linux系统,因此在Linux上配置防火墙有极其重要的意义,同时可以学习这一先进的技术与熟悉一个优秀的操作平台。

第一章 Linux系统

1.1 Linux系统简介

Linux是一套免费使用和自由传播的类Unix操作系统。我们通常所说的Linux,指的是GNU/Linux ,即采用Linux内核的GNU操作系统。GNU代表GNU’s Not Unix。它既是一个操作系统,也是一种规范。Linux最早由Linus Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(程序的许可方式均为GPL:General Public License)。在不断的有程序员和开发者加入到GNU组织中后,变造就了今天我们所看到的Linux!Linux是一个内核。然而一个完整的操作系统不仅仅是内核而已。所以许多个人、组织和企业开发了基于GNU/Linux的Linux发行版。今天有不计其数的发行版可供人们选择使用,虽然不够统一的标准给不同版本的使用者在技术上的相互沟通带来了一定的麻烦,但归根结底“自由、开源、团结互助”的理念是Linux爱好者们共同的向往。

1.2 Linux的特点

有很多人现在都在学习和研究Linux。作为当今一种新兴和流行的操作系统的前身来源与强大的UNIX。而那个芬兰小伙子一开始就没把它定位成一种操作系统。但是Linux的作用在今天已越来越重要了。想接触和学习它,就要先了解它的特点。Linux可以说是作为开放源码的自由软件的代表,作为自由软件,它有如下两个特点:一是它开放源码并对外免费提供,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上,因此Linux操作系统可以从互联网上很方便地免费下载得到,这样你还可以省下购买Windows操作系统的一笔不小的资金。

第二章 常用防火墙简介

2.1防火墙原理

防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。其是不同网络或网络安全域之间信息的唯一出入口,通过监测、限制、更改跨越防火墙的数据流, 尽可能地对外部屏蔽网络内部的信息、结构和运行状况,有选择地接受外部访问,对内部强化设备监管、控制对服务器与外部网络的访问,在被保护网络和外部网络之间架起一道屏障,以防止发生不可预测的、潜在的破坏性侵入。防火墙有两种,硬件防火墙和软件防火墙,这些都能起到保护作用并筛选出网络上的攻击者。

2.2防火墙的分类

包过滤防火墙、应用网关防火墙、状态检测防火墙、复合型防火墙

2.2.1包过滤防火墙

包过滤防火墙:包过滤防火墙不检查数据区,包过滤防火墙不建立连接状态表,前后报文无关,应用层控制很弱。包过滤防火墙一般在路由器上实现,用以过滤用户定义的内容,如IP地址。包过滤防火墙的工作原理是:系统在网络层检查数据包,与应用层无关。这样系统就具有很好的传输性能,可扩展能力强。但是,包过滤防火墙的安全性有一定的缺陷,因为系统对应用层信息无感知,也就是说,防火墙不理解通信的内容,所以可能被黑客所攻破。

2.2.2应用网关防火墙

应用网关防火墙:不检查IP、TCP报头,不建立连接状态表,网络层保护比较弱。应用网关防火墙检查所有应用层的信息包,并将检查的内容信息放入决策过程,从而提高网络的安全性。然而,应用网关防火墙是通过打破客户机/服务器模式实现的。每个客户机/服务器通信需要两个连接:一个是从客户端到防火墙,另一个是从防火墙到服

务器。另外,每个代理需要一个不同的应用进程,或一个后台运行的服务程序,对每个新的应用必须添加针对此应用的服务程序,否则不能使用该服务。所以,应用网关防火墙具有可伸缩性差的缺点。

2.2.3状态检测防火墙

状态检测防火墙:不检查数据区,建立连接状态表,前后报文相关,应用层控制很弱。 状态检测防火墙基本保持了包过滤防火墙的优点,性能比较好,同时对应用是透明的,在此基础上,对于安全性有了大幅提升。这种防火墙摒弃了包过滤防火墙仅仅考察进出网络的数据包,不关心数据包状态的缺点,在防火墙的核心部分建立状态连接表,维护了连接,将进出网络的数据当成一个个的事件来处理。可以这样说,状态检测包过滤防火墙规范了网络层和传输层行为,而应用代理型防火墙则是规范了特定的应用协议上的行为。

2.2.4复合型防火墙

复合型防火墙:可以检查整个数据包内容,根据需要建立连接状态表,网络层保护强,应用层控制细,会话控制较弱。 复合型防火墙是指综合了状态检测与透明代理的新一代的防火墙,进一步基于ASIC架构,把防病毒、内容过滤整合到防火墙里,其中还包括VPN、IDS功能,多单元融为一体,是一种新突破。常规的防火墙并不能防止隐蔽在网络流量里的攻击,在网络界面对应用层扫描,把防病毒、内容过滤与防火墙结合起来,这体现了网络与信息安全的新思路。防火墙在网络边界实施OSI第七层的内容扫描,实现了实时在网络边缘布署病毒防护、内容过滤等应用层服务措施。

第三章 LINUX防火墙

3.1 Linux防火墙配置命令简介

3.1.1概述

Linux防火墙通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:

iptables [-t table] command [match] [target]

3.1.2表(table)

[-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。filter用于一般信息包过滤,nat用于转发信息包,mangle标记用于高级路由的信息包。

3.1.3命令(command)

command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则。用以下几个常用命令-A或--append,-D或--delete,-P或--polocy,-N或--newchain,-F或--flush,-L或--list。

3.1.4匹配(match)

iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。有一下几个参数-P或--protocol,-S或--source,-D或--destination。

3.1.5目标(target)

目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。常用的有accept,drop,reject,return。

还有许多用于建立高级规则的其它目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。

3.2 Netfilter/Iptables介绍

3.2.1 配置防火墙的filter表

(1)查看本机关于IPTABLES的设置情况

[root@localhost root]# iptables -L –n

(2)清除原有规则

不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter[8]的所有规则。

[root@localhost root]# iptables -F 清除预设表filter中的所有规则链的规则。

[root@localhost root]# iptables -X 清除预设表filter中使用者自定链中的规则。

(3)设定预设规则

[root@localhost root]# iptables -p INPUT DROP

[root@localhost root]# iptables -p OUTPUT ACCEPT

[root@localhost root]# iptables -p FORWARD DROP

(4)添加规则

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。为了能采用远程SSH登陆,我们要开启22端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@localhost root]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:

[root@localhost root]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT 如果做了WEB服务器,开启80端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 如果做了邮件服务器,开启25110端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[root@localhost root]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT 如果做了FTP服务器,开启21端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT 如果做了DNS服务器,开启53端口

[root@localhost root]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

3.2.2配置防火墙的NAT表

(1)查看本机关于NAT的设置情况

[root@localhost root]# iptables -t nat –L

(2) 添加规则

添加基本的NAT[8]地址转换,我们只添加DROP链.因为默认链全是ACCEPT。防止外网用内网IP欺骗

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

DROP非法连接

[root@localhost root]# iptables -A INPUT -m state --state INVALID -j DROP

[root@localhost root]# iptables -A OUTPUT -m state --state INVALID -j DROP

[root@localhost root]# iptables-A FORWARD -m state --state INVALID -j DROP 允许所有已经建立的和相关的连接

[root@localhost root]#iptables-A INPUT -m state --state

ESTABLISHED,RELATED -j ACCEPT

[root@localhost root]#iptables-A INPUT -m state --state

ESTABLISHED,RELATED -j ACCEPT

[root@localhost root]# iptables-A OUTPUT -m state --state

ESTABLISHED,RELATED -j ACCEPT

[root@localhost root]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里,写入后把防火墙重起一下,才能起作用。

[root@localhost root]# service iptables restart

3.2.3 Iptables的结构

Iptables一般由指定表(table)、指定链(chains)、指定操作命令(command)、指定规则匹配器(matcher)、指定目标动作(target)等构成,如图1所示。

图1 Iptables结构图

Iptables的指令结构如图2所示。

图2.2 Iptables的指令结构图

3.2.4 Iptables的规则要素

一条Iptables规则基本上应该包含5个要素:

1、指定表(table)

2、指定操作命令(command)

3、指定链(chains)

4、指定规则匹配器(matcher)

5、指定目标动作(target)

3.2.5 Iptables工具的调用语法

Iptables的语法通常可以简化为下面的形式:

Iptables[-t table]CMD[chain][rule-matcher][-j target]

其中:tables为表名,CMD为操作命令,chain为链名,rule-matcher为规则匹配器,target为目标动作。

Iptables软件包提供了两个命令分别用于保存和恢复规则集。可以使用下在的命令转储在内存中的内核规则集。其中/etc/sysconfig/Iptables是Iptables守护进程调用的默认规则集文件:

#/sbin/Iptables-save >; /etc/sysconfig/Iptables

要恢复原来的规则库,需使用命令:

#/sbin/Iptables-restore

为了使得用Iptables命令配置的规则在下次启动机器时还能被使用,有两种方法:

1、使用Iptables的启动脚本实现。Iptables的启动脚/etc/rc.d/init.d/Iptables每次启动时都使用/etc/sysconfig/Iptables所提供的规则进行规则恢复,并可以使用如下的命令保存规则:#service Iptables save

2、在自定义脚本中用Iptables命令直接创建规则集。可以直接用Iptables命令编写一个规则脚本,并在启动时执行这个脚本。例如:若规则脚本的文件名为/etc/fw/rules,则可以在启动脚本/etc/rd.d/init.d/rc.local中加入下面的代码:if[-x/etc/fw/rules];then/etc/fw/rules;fi;这样,机器每次启动时即可执行该规则脚本。如果使用此种方式,建议使用ntsysv命令关闭系统的Iptables守护进程。

3.2.6 Iptables的优点

1、Iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。

2、Iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。

3、系统日志比ipchains更容易配置,扩展性也更好。

4、对于网络地址转换(Network Address Translation)和透明代理的支持,

Netfilter更为强大和易于使用。

第四章 防火墙的设计和实现

4.1 设计思路

LINUX操作系统以公开的源代码、强大稳定的网络功能和大量的免费资源而受到众多网络管理员称赞。而LINUX防火墙其实是操作系统本身所自带的一个功能模块。

通过这个功能模块安装特定的防火墙内核,而形成LINUX防火墙。我们又知道LINUX操作系统会对接收到的数据包按一定的策略进行处理,因而用户只要配置这些策略就可以实现对LINUX操作系统的管理。

而用户所要做的,就是使用特定的配置软件(netfilter/iptables组件)去定制适合自己的“数据包处理策略”。

4.2 配置规则

一个LINUX防火墙系统需要一个合理、高效并且简单的安全机制,而安全机制通常通过Input、Output、Forward这三条“防火链”实现。

用户需要通过配置Input、Output、Forward这条“防火链”来实现“数据包处理策略”,创建一套“防火规则”来对数据包层层限制的目的。

而我们要弄明白系统如何对待数据包。这些数据包会经过相应的数据链,比如进入的你系统的数据包会通过Input链,而离开你系统的数据包会经过Output数据链,但一台计算机作为两个网络连接的两台计算机或是网关,那么将会有很多数据经过这台计算机。这台计算机相当与一个路由器,这是这些数据将经过Forward链。通过这些链来管理经过系统的数据包。那么怎样管理这些链呢?

这样用户就需要一个与LINUX系统对话的媒介,用户可以使用(netfilter/iptables组件)。netfilter/iptables组件是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统,该系统利于在 Linux 系统上控制 IP 信息包过滤和防火墙配置。

那么这个netifilter/iptables组建又是怎么工作的呢?我们可以举这么一个例子。比如有一用户需访问网站:www.baidu.com,我们在浏览器键入网址,那么系统将对网站:www.baidu.com发起请求,那么这些数据将经过Output链。在经过Output链时,Linux内核会检查是否有符合规则的数据包,如果没有Linux会选择选择默认的规则。如果得到允许请求就发出去了,然后网站:www.baidu.com将返回数据包会经过Input链,同样Linux内核会检查是否有符合规则的数据包,同理Linux同样也有相应的规则。而Forward链用于转发,在NAT时会用到。

4.3 实验环境

XXX公司搬移新址现需要重新配置网络。公司利用4M 电信专网进行上网,分配的IP为113.248.238.148。公司现有十四台电脑,其中一台为会计专用。公司使用DHCP分配IP,IP为192.168.1.0/24。

为了进行网络安全防护,现拿出一台电脑搭载上Red Hat Release 9操作系统作为ALG(应用层网关)。ALG eth0连接电信专网,eth1连接TP-link-SG1016DT交换机。SG1016DT后连接公司其余12台电脑。

现在ALG上建iptables防火墙。其余十二台电脑除会计电脑外通过ALG上网,公司内部网络共享一台打印机。

4.4 实验目的

利用Linux防火墙保证公司上网环境的安全、可控。

要求除会计电脑以外,其余十二台电脑能连接外网。并且局域网内网络共享打印服务。

4.5 实验详细设计

首先,我们在ALG上搭载Linux防火墙启动并且运行系统。

(1) 启动防火墙命令:

service iptables start

(2) 查看防火墙命令:iptables –

L

(3) 为了处于网络安全考虑,我们需要对防火墙里面原有的规则进行清除。

A.清除预设表filter中所有规则链中的规则

# iptables -F

B. 清除预设表filter中使用者自定链中的规则

# iptables -X

# iptables -Z

/etc/rc.d/init.d/iptables

我们用到命令。

#/etc/rc.d/init.d/iptables save (4) Linux防火墙配置命令没有保存,重启便会丢失。所以我们需要保存至:

(5)设定预设规则。

设置链的默认策略一般有两种。

A.首先允许所有的数据包通过防火墙,然后禁止危险的包。

可以这样设置:

#iptables -P INPUT ACCEPT

#iptables -P OUTPUT ACCEPT

#iptables -P FORWARD ACCEPT

B.首先禁止所有的数据包通过防火墙,然后允许特定的包。

可以这样设置:

#iptables -P INPUT DROP

#iptables -P OUTPUT DROP

#iptables -P FORWARD DROP

C.当然这两种默认规则都是合理且非常正确的,但根根我们的实验环境,我们可以采取另外一种高效可行的方法。我们设置OUTPUT ACCEPT、INPUT DROP、FORWARD DROP,控制流入的数据包,不限制流出的数据包。

(6)添加规则,开放网络接口

建立回环接口lo,只在INPUT和OUTPUT链上起作用。

#iptables -A INPUT -i lo -j ACCEPT

#iptables -A OUTPUT -i lo -j ACCEPT

在所有网卡上开放ping功能,便于维护与检测。

#iptables -A INPUT -i eho+ -p icmp --icmp-type 8 -j ACCEPT

#iptables -A OUTPUT -i eho+ -p icmp --icmp-type 0 -j ACCEPT

(7)设置管理IP

管理IP设置用于对于ALG的管理与维护。由于Linux防火墙的特殊性,我们需对其做一些限制。如端口、管理机器的IP等。

#iptables -A INPUT -i eth1 -s 192.168.1.111 -d 192.168.1.1 -p tcp --dport 22 -j ACCEPT

#iptables -A OUTPUT -i eth1 -s 192.168.1.1 -d 192.168.1.111 -p tcp --dport 22 -j ACCEPT

我们可以看到我们对管理机器的IP限制为192.168.1.111,其管理端口为22。

(8)ALG常用端口管理

ALG常用来作为FTP、WEB网站、邮件服务器、DNS等,所以需将这些常用的端口开启。

WEB服务器开启80端口。

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

邮件服务器开启25、110端口。

#iptables -A INPUT -p tcp --dport 25 -j ACCEPT

#iptables -A INPUT -p tcp --dport 110 -j ACCEPT

FTP服务器开启20、21端口。

#iptables -A INPUT -p tcp --dport 20 -j ACCEPT

#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

DNS服务器开启53端口。

#iptables -A INPUT -p tcp --dport 53 -j ACCEPT

为了安全起见,有些木马会扫描一些elite端口。然而这些非标准端口并不是常用的通信端口,我们阻塞这些端口将能有效减少网络被病毒感染的机会。

包括31337到31340等一系列27444、27665、Netbus、smb、NFS端口。

(9)转发功能

前面我们默认对FORWARD链设置为DROP,要保持内网与外网的正常通信。我们需开启FORWARD转发功能,并对其做一些必要的限制。

# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

#iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

对于从外网连接内网的RELATED、ESTABLISHED状态允许通过,对于内网对外网的连接则不做限制。

TCP数据包的管理,对于TCP连接不存在的包丢弃

#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

IP碎片的处理,防止DDos攻击。

#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

由于前文设置允许icmp数据包,因为在此需要对其加以限制。

#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

(10) 专有机器保护

由于公司会计电脑存有公司的重要数据,因此需对其加以保护和限制。此次实验用DHCP分配IP,因此只能采用MAC地址的限制。

#iptables -A FORWARD -m mac --mac 00:ff:d4:8d:d9:13 -p udp -m mulitport -port 53 -j DROP

#iptables -A FORWARD -m mac --mac 00:ff:d4:8d:d9:13 -p tcp -m mulitport -port 3128,110,25 -j DROP

(11) 附:配置文件

#!/bin/sh

#

# Startup script to implement /etc/sysconfig/iptables pre-defined rules. #

# chkconfig: 2345 08 92

#

# description: Automates a packet filtering firewall with iptables. #

# by [email protected], based on the ipchains script:

# Script Author: Joshua Jensen

# -- hacked up by gafton with help from notting

# modified by Anton Altaparmakov :

# modified by Nils Philippsen

#

# config: /etc/sysconfig/iptables

# Source 'em up

. /etc/init.d/functions

IPTABLES_CONFIG=/etc/sysconfig/iptables

if [ ! -x /sbin/iptables ]; then

exit 0

fi

KERNELMAJ=`uname -r | sed -e 's,\..*,,'`

KERNELMIN=`uname -r | sed -e 's,[^\.]*\.,,' -e 's,\..*,,'`

if [ "$KERNELMAJ" -lt 2 ] ; then

exit 0

fi

if [ "$KERNELMAJ" -eq 2 -a "$KERNELMIN" -lt 3 ] ; then

exit 0

fi

if /sbin/lsmod 2>/dev/null |grep -q ipchains ; then

# Don't do both

exit 0

fi

iftable() {

if fgrep -qsx $1 /proc/net/ip_tables_names; then

fi

}

start() {

# don't do squat if we don't have the config file

if [ -f $IPTABLES_CONFIG ]; then

# If we don't clear these first, we might be adding to

# pre-existing rules.

chains=`cat /proc/net/ip_tables_names 2>/dev/null`

echo -n $"Flushing all current rules and user defined chains:" let ret=0

for i in $chains; do iptables -t $i -F; let ret+=$?; done iptables -F

let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

iptables -t "$@"

echo

echo -n $"Clearing all current rules and user defined chains:" let ret=0

for i in $chains; do iptables -t $i -X; let ret+=$?; done iptables -X

let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

fi

echo

for i in $chains; do iptables -t $i -Z; done

echo -n $"Applying iptables firewall rules: "

grep -v "^[[:space:]]*#" $IPTABLES_CONFIG | grep -v '^[[:space:]]*$' success || \ failure | /sbin/iptables-restore -c && \

echo

touch /var/lock/subsys/iptables

fi

}

stop() {

chains=`cat /proc/net/ip_tables_names 2>/dev/null`

echo -n $"Flushing all chains:"

let ret=0

for i in $chains; do iptables -t $i -F; let ret+=$?; done

iptables -F; let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

fi

echo -n $"Removing user defined chains:"

let ret=0

for i in $chains; do iptables -t $i -X; let ret+=$?; done

iptables -X; let ret+=$?

if [ $ret -eq 0 ]; then

success

else

failure

fi

echo

echo -n $"Resetting built-in chains to the default ACCEPT policy:" iftable filter -P INPUT ACCEPT && \

iftable filter -P OUTPUT ACCEPT && \

iftable filter -P FORWARD ACCEPT && \

iftable nat -P PREROUTING ACCEPT && \

iftable nat -P POSTROUTING ACCEPT && \

iftable nat -P OUTPUT ACCEPT && \

iftable mangle -P PREROUTING ACCEPT && \

iftable mangle -P POSTROUTING ACCEPT && \

iftable mangle -P INPUT ACCEPT && \

iftable mangle -P OUTPUT ACCEPT && \

iftable mangle -P FORWARD ACCEPT && \

success || \

failure

echo

rm -f /var/lock/subsys/iptables

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

# "restart" is really just "start" as this isn't a daemon,

# and "start" clears any pre-defined rules anyway.

# This is really only here to make those who expect it happy

start

;;

condrestart)

[ -e /var/lock/subsys/iptables ] && start

;;

status)

tables=`cat /proc/net/ip_tables_names 2>/dev/null`

for table in $tables; do

;;

panic)

echo -n $"Changing target policies to DROP: "

iftable filter -P INPUT DROP && \

iftable filter -P FORWARD DROP && \

iftable filter -P OUTPUT DROP && \

iftable nat -P PREROUTING DROP && \

iftable nat -P POSTROUTING DROP && \

iftable nat -P OUTPUT DROP && \

iftable mangle -P PREROUTING DROP && \

iftable mangle -P OUTPUT DROP && \

iftable mangle -P POSTROUTING DROP && \

iftable mangle -P INPUT DROP && \

iftable mangle -P FORWARD DROP && \

success || failure

echo

echo -n "Flushing all chains:"

iftable filter -F INPUT && \

iftable filter -F FORWARD && \

echo $"Table: $table" iptables -t $table --list done

iftable filter -F OUTPUT && \

iftable nat -F PREROUTING && \

iftable nat -F POSTROUTING && \

iftable nat -F OUTPUT && \

iftable mangle -F PREROUTING && \

iftable mangle -F OUTPUT && \

success || failure

echo

echo -n "Removing user defined chains:"

iftable iftable filter -X && \

iftable nat -X && \

iftable mangle -X && \

success || failure

echo

;;

save)

echo -n $"Saving current rules to $IPTABLES_CONFIG: "

touch $IPTABLES_CONFIG

chmod 600 $IPTABLES_CONFIG

/sbin/iptables-save -c > $IPTABLES_CONFIG 2>/dev/null && \

success $"Saving current rules to $IPTABLES_CONFIG" || \

failure $"Saving current rules to $IPTABLES_CONFIG"

echo

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status|panic|save}" exit 1

esac

exit 0

4.6 LINUX防火墙测试

为办公室搭建LINUX防火墙的配置,有两个局域网,LAN1地址:202.117.120.65/255.255.255.248

为公共网络IP,LAN2地址为

192.168.0.0/255.255.255.0,为内部保留地址。LINUX防火墙有两个内部接口:202.117.120.70接LAN1;192.168.0.1接LAN2。现对防火墙进行配置,使LAN2的主机通过IP伪装访问互联网,但只允许使用外部Web代理服务器202.117.112.34的1252端口。LAN1中的主机被限制使用几种常用的互联网服务(DNS、SMTP、POP3、HTTP和FTP)。下面就是创建的防火墙规则脚本:

#/etc/rc.d/rc.firewall

#!/bin/sh

# eth0---External_interface

# eth1---LAN1_interface

# eth2---LAN2_interface

echo "Starting firewalling . . ."

#Flush any existing rules from all chains

ipchains -F

#Set the default policy to deny

ipchains -P input DENY

ipchains -P output REJECT

ipchains -P forward REJECT

#Enable traffic on the loopback interface

ipchains -A input -i lo -j ACCEPT

ipchains -A output -i lo -j ACCEPT

#Enable the traffic on the eth1

ipchains -A input -i eth1 -j ACCEPT

ipchains -A output -i eth1 -j ACCEPT

#the traffic on the eth2 only enablling using the WEB PROXY

ipchains -A input -i eth2 -p tcp -s 192.168.0.0/24 1024:65535 202.117.112.34 1252 -j ACCEPT

ipchains -A output -i eth2 -p tcp ! -y -s 202.117.112.34 1252 192.168.0.0/24 1024:65535 -j ACCEPT

#Forwarding rules

ipchains -A forward -i eth0 -s 202.117.120.64/29 -j ACCEPT

ipchains -A forward -i eth0 -s 192.168.0.0/24 -j MASQ

ipchains -A forward -i eth1 -d 202.117.120.64/29 -j ACCEPT

#Enable outgoing the packets from LAN on the External_Interface

ipchains -A output -i eth0 -j ACCEPT

#Enable incoming some ICMP messages on eth

-d -d

# 1.Dest_Unreachable,Service_Unavailable

ipchains -A input -i eth0 -p icmp -s any/0 3 -d 202.117.120.64/29 -j ACCEPT # 2.Time_Exceeded

ipchains -A input -i eth0 -p icmp -s any/0 11 -d 202.117.120.64/29 -j ACCEPT # 3.Allow outgoing pings to anywhere

ipchains -A input -i eth0 -p icmp -s any/0 0 -d 202.117.120.64/29 -j ACCEPT #Enable Proxy of 202.117.112.34:1252

ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.34 1252 -j ACCEPT #DNS (53) (DNS:202.117.112.3)—client modes

ipchains -A input -i eth0 -p udp -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT

ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#SMTP(25)Enable sending mail through a remote SMTP gateway

ipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#POP(110)--Enable receiving mail from a remote POP server

ipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#HTTP(80) --Enable accessing remote WEB site s as a client

ipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d 202.117.120.64/29 1024:65535 -j ACCEPT

#FTP(20,21) --Enable accessing remote FTP servers

ipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d 202.117.120.64/29 1024:65535 -j ACCEPT

ipchains -A input -i eth0 -p tcp -s any/0 20 -d 202.117.120.64/29 1024:65535 -j ACCEPT

echo "done"

结束语

通过这次网络系统的课程设计,使我对Linux操作系统有了一定的了解,同时我也总结出了一些分析问题和解决问题的方法及技巧。进一步加深了对基础知识、基础课程、基础语言的掌握,可以说是受益颇丰。在此次网络操作系统实验的设计中,我得到了老师的大力支持和帮助,也参考了大量的书籍和网上资料,学到了不少东西。在这里要首先感谢的是我的指导老师侯利娟老师,在此次课程设计过程中她耐心、细致的给我以指导,也提出了不少有益的建议和意见。其次我要感谢我的同学,是他们给了我很多建议和帮助,使我在课程设计过程中遇到的麻烦都能够迎刃而解。这次课程设计让我学到了很多书本上学不到的东西,极大地激发了自己和同学的学习热情和学习欲望。通过这种实践性的活动,真是让我受益匪浅,收获良多。我会在以后的学习生活中继续保持良好的学习势头,争取学以致用、学有所用。

参考文献

[1] 陈纯著. Linux操作系统网络服务[M]. 北京:科学出版社,2004

[2] 黄宏文著. Linux网络架站务实[M]. 北京:中国青年出版社,2002

[3] 朱华生著. Linux基础教程[M]. 北京:清华大学出版社,2005

[4] Current. Linux Networking-HOWTO (Previously the Net-3 Howto) [M]. August,1999

[5] 刘兵 吴煜煌.Linux实用教程[M].北京:中国水利水电出版社,2004

[6] Matthew Strebe,Charles Perkins著,黎文,董正卫等译.高效构筑与管理防火墙[M] 北京:电子工业出版社,2000.

[7] 张小斌,等。计算机网络安全工具[M].北京:清华大学出版社,1999.

[8] 罗传荣,郭文秀 著,政府上网工程实用技术[M] 北京:人民邮电出版社,2000.

[9} Stang. DJ著,程佩青译,计算机网络安全奥秘[M],北京:电子工业出版社,1996.

[10] Chris Hare,Karanjit Siyan 著,刘威勇,王明举等译.Internet防火墙与网络安全[M] 北京: 机械工业出版社,1998.

[11] Terry William Ogletree 著,防火墙原理与实施[M] 北京:电子工业出版社,2001.


相关文章

  • 防火墙论文
  • 摘 要 防火墙作为一种网络或系统之间强制实行的访问控制机制,是确保网络安全的重要手段,有基于通用操作系统设计的防火墙,也有基于专用操作系统设计的防火墙.由于Linux源代码的开放性,所以,Linux成为研究防火墙技术的一个很好的平台.本文介 ...查看


  • linux防火墙设计
  • 第一章 绪论 1.1. 防火墙技术发展概述 传统的防火墙通常是基于访问控制列表(ACL)进行包过滤的,位于在内部专用网的入口处,所以也俗称"边界防火墙".随着防火墙技术的发展,防火墙技术也得到了发展,出现了一些新的防火墙 ...查看


  • Linux十大高级安全管理技巧
  • Linux十大高级安全管理技巧一.文件系统 在Linux系统中,分别为不同的应用安装单独的主分区将关键的分区设置为只读将大大提高文件系统的安全.这主要涉及到Linux自身的ext2文件系统的只添加(只添加)和不可变这两大属性. ●文件分区L ...查看


  • 经典网络工程师简历
  • 经典网络工程师简历.txt我的优点是:我很帅:但是我的缺点是:我帅的不明显.什么是幸福?幸福就是猫吃鱼,狗吃肉,奥特曼打小怪兽!令堂可是令尊表姐?我是胖人,不是粗人. 经典网络工程师简历 ■ 工作能力 网络硬件设备: - 能熟练配置 Cis ...查看


  • 服务器存储系统
  • 5.3..4服务器储存设备建设 1.项目背景 一是数据量大,部队每天可产生一定的数据,如果包括2-3个的数据备份,就要存储超过30GB 的数据.而且部队大型设备产生的数据还会以几何级数增长; 二是数据类型复杂,有数字和文字,还有大量的图形和 ...查看


  • 嵌入式系统原理与应用
  • 班级:学号:姓名: 嵌入式系统原理与应用 实验报告 1 实验一Linux shell基本命令的使用 一. 实验目的和要求 a) 掌握用户系统常用命令. b) 掌握文件目录常用命令. c) 掌握压缩打包常用命令. d) 掌握网络相关命令. 二 ...查看


  • 2011年软考网络工程师考试大纲(详细)
  • 2011年 软考网络工程师考试大纲 一.考试说明 1.考试目标 通过本考试的合格人员能根据应用部门的要求进行网络系统的规划.设计和网络设备的软硬件安装调试工作,能进行网络系统的运行.维护和管理,能高效.可靠.安全地管理网络资源,作为网络专业 ...查看


  • 基于RaspberryPi实现的智能家居
  • 摘 要 本文以树莓派为载体进行智能家居控制器的设计.在对现在三种市面上的网络电视的比较中引出毕设的主角--树莓派.首先是LINUX 系统常识性的介绍:然后是在ARM/LINUX平台上面开发应用的两种方法:调用系统已有资源.做程序(C 经典法 ...查看


  • 计算机名词解释
  • 一. 名词解释 1. 信息:广义地说,信息就是消息. 2. 信息技术:以微电子为基础,通过通信技术.计算机技术.及控制技术相结合,研究信息的获取.传输.存储 和处理的技术. 3. 基本信息技术:感知与识别技术.通信技术.计算与存储技术.控制 ...查看


热门内容