Linux下配置完整安全的DHCP服务器课程论文.docx

上传人:b****3 文档编号:5336043 上传时间:2022-12-15 格式:DOCX 页数:12 大小:22.69KB
下载 相关 举报
Linux下配置完整安全的DHCP服务器课程论文.docx_第1页
第1页 / 共12页
Linux下配置完整安全的DHCP服务器课程论文.docx_第2页
第2页 / 共12页
Linux下配置完整安全的DHCP服务器课程论文.docx_第3页
第3页 / 共12页
Linux下配置完整安全的DHCP服务器课程论文.docx_第4页
第4页 / 共12页
Linux下配置完整安全的DHCP服务器课程论文.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Linux下配置完整安全的DHCP服务器课程论文.docx

《Linux下配置完整安全的DHCP服务器课程论文.docx》由会员分享,可在线阅读,更多相关《Linux下配置完整安全的DHCP服务器课程论文.docx(12页珍藏版)》请在冰豆网上搜索。

Linux下配置完整安全的DHCP服务器课程论文.docx

Linux下配置完整安全的DHCP服务器课程论文

湖南农业大学课程论文

 

学院:

信息科学技术学院班级:

2011级网络1班

姓名:

张运学号:

201141633201

课程论文题目:

Linux下配置完整安全的DHCP服务器

课程名称:

LINUX

评阅成绩:

评阅意见:

 

成绩评定教师签名:

日期:

年月日

 

Linux下配置完整安全的DHCP服务器详解

摘要

随着互联网的普及,人们的工作、学习和生活与网络联系愈来越紧密,搭建不同的网络,如企业网、校园网和城区网等。

网络管理是大型计算机网络成功的关键因素,利用DHCP服务已经显得相当流行,动态主机分配协议的运用也显得越来越重要。

在实际的操作过程中,构建DHCP服务器也越来越常见。

而采用DHCP技术动态的为主机配置参数,可以有效解决目前IP地址资源不足和用户的移动性等问题,并能极大地减轻大型网络管理员的工作量,减少手工网络配置的错误,有利于快速的搭建一个大型网络或修改其他网络配置。

构建DHCP服务器需要一个稳定的操作系统和服务器软件。

FedoraLinux操作系统经过一段时间发展已经成为一个主要的Linux发行版本,越来越多的企业和个人开始采用它来进行工作,学习和娱乐。

同时,Fedora中附带的DHCP服务也是目前Internet上最受欢迎的动态IP地址分配服务器。

本文以RedhatLinux9.0为例,介绍如何建立一个完整和安全的DHCP服务器。

关键词:

DHCP(动态主机配置协议),Fedora,Linux操作系统,网络配置

前言

  DHCP是动态主机配置协议。

这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。

网络管理员通常会分配某个范围的IP地址来分发给局域网上的客户机。

当设备接入这个局域网时,它们会向DHCP服务器请求一个IP地址。

然后DHCP服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有IP地址为止。

已经分配的IP地址必须定时地延长借用期。

这个延期的过程称作leasing,确保了当客户机设备在正常地释放IP地址之前突然从网络断开时被分配的地址可以归还给服务器。

本文以RedhatLinux9.0为例,介绍如何建立一个完整和安全的DHCP服务器。

一、建立DHCP服务器配置文件

  可以使用RedhatLinux9.0自身携带rpm包安装。

安装结束后,DHCP端口监督程序dhcpd配置文件是/etc目录中的名为dhcpd.conf的文件。

下面手工建立/etc/dhcpd.conf文件。

/etc/dhcpd.conf通常包括三部分:

parameters、declarations、option。

  1.DHCP配置文件中的parameters(参数):

表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。

主要内容见表1

参数

解释

ddns-update-style

配置DHCP-DNS互动更新模式。

default-lease-time

指定确省租赁时间的长度,单位是秒。

max-lease-time

指定最大租赁时间长度,单位是秒。

hardware

指定网卡接口类型和MAC地址。

server-name

通知DHCP客户服务器名称。

get-lease-hostnamesflag

检查客户端使用的IP地址。

fixed-addressip

分配给客户端一个固定的地址。

authritative

拒绝不正确的IP地址的要求。

  2.DHCP配置文件中的declarations(声明):

用来描述网络布局、提供客户的IP地址等。

主要内容见表2:

声明

解释

shared-network

用来告知是否一些子网络分享相同网络。

subnet

描述一个IP地址是否属于该子网。

range起始IP终止IP

提供动态分配IP的范围。

host主机名称

参考特别的主机。

group

为一组参数提供声明。

allowunknown-clients;denyunknown-client

是否动态分配IP给未知的使用者。

allowbootp;denybootp

是否响应激活查询。

allowbooting;denybooting

是否响应使用者查询。

filename

开始启动文件的名称,应用于无盘工作站。

next-server

设置服务器从引导文件中装如主机名,应用于无盘工作站。

  3.DHCP配置文件中的option(选项):

用来配置DHCP可选参数,全部用option关键字作为开始,主要内容包括见表3:

选项

解释

subnet-mask

为客户端设定子网掩码。

domain-name

为客户端指明DNS名字。

domain-name-servers

为客户端指明DNS服务器IP地址。

host-name

为客户端指定主机名称。

routers

为客户端设定默认网关。

broadcast-address

为客户端设定广播地址。

ntp-server

为客户端设定网络时间服务器IP地址。

time-offset

为客户端设定和格林威治时间的偏移时间,单位是秒。

  注意:

如果客户端使用的是视窗操作系统,不要选择"host-name"选项,即不要为其指定主机名称。

  下面是一个笔者使用的DHCP配置文件,这是一个C类网络,共126个IP地址可以分配的例子。

读者可以复制后使用,注意红色部分是必须要修改的。

ddns-update-styleinterim;

ignoreclient-updates;

 

subnet192.168.1.0netmask255.255.255.0{

 

   optionrouters         192.168.1.254;

   optionsubnet-mask     255.255.255.0;

   optionbroadcast-address       192.168.1.255;

   optiondomain-name-servers     192.168.1.3;

   optiondomain-name         ""; #DNS名称#

   optiondomain-name-servers 192.168.1.3;

 

   optiontime-offset     -18000;

 

   rangedynamic-bootp192.168.1.128192.168.1.255;

   default-lease-time21600;

   max-lease-time43200;

 

       hostns{

       hardwareethernet52:

54:

AB:

34:

5B:

09;#运行DHCP的网络接口的MAC地址#

       fixed-address192.168.1.9;

   }

}

二、建立客户租约文件

  运行DHCP服务器还需要一个名为dhcpd.leases的文件,保持所有已经分发出去的IP地址。

在RedhatLinux发行版本中,该文件位于/var/lib/dhcp/目录中。

如果您通过RPM安装ISCDHCP,那么该目录应该已经存在。

dhcpd.leases的文件格式为:

Leasesaddress{statement}

  一个典型的文件内容如下:

lease192.168.1.255{            #DHCP服务器分配的IP地址#

 starts12005/05/0203:

02:

26;   #lease开始租约时间#

 ends12005/05/0209:

02:

26;      #lease结束租约时间#

 bindingstateactive;

 nextbindingstatefree;

 hardwareethernet00:

00:

e8:

a0:

25:

86; #客户机网卡MAC地址#

 uid"%content%01%content%00%content%00\350\240%\206";  #用来验证客户机的UID标示#

 client-hostname"cjh1";   #客户机名称#

}

 

  注意lease开始租约时间和lease结束租约时间是格林威治标准时间(GMT),不是本地时间。

  第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。

如果不是通过RPM安装ISCDHCP,或者dhcpd已经安装,那么您应该试着确定dhcpd将其lease文件写到何处,并确保该文件存在。

也可以手工建立一个空文件:

#touch/var/lib/dhcp/dhcpd.leases

 

三、启动和检查DHCP服务器

  使用命令启动DHCP服务器:

#servicedhcpdstart

 

  使用ps命令检查dhcpd进程:

#ps-ef|grepdhcpd

root     2402    1 014:

25?

       00:

00:

00/usr/sbin/dhcpd

root     2764 2725 014:

29pts/2   00:

00:

00grepdhcpd

 

  使用检查dhcpd运行的端口:

#netstat-nutap|grepdhcpd

udp  0 00.0.0.0:

67        0.0.0.0:

*             2402/dhcpd

四、配置DHCP客户端

  通常网管员使用选择手工配置DHCP客户,需要修改/etc/sysconfig/network文件来启用联网;并修改/etc/sysconfig/network-scripts目录中每个网络设备的配置文件。

在该目录中,每个设备都有一个叫做ifcfg-eth?

的配置文件,eth?

是网络设备的名称。

如eth0等。

如果你想在引导时启动联网,NETWORKING变量必须被设为yes。

除了此处之外/etc/sysconfig/network文件应该包含以下行:

NETWORKING=yes

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

五、DHCP配置常见错误排除

  通常配置DHCP服务器很容易,不过,在这里有一些技巧可以帮助您避免出现问题。

对服务器而言,要确保网卡正常工作,并具备广播功能。

对客户机而言,还要确保客户机的网卡正常工作。

最后,要考虑网络的拓扑,并考虑客户机向DHCP服务器发出的广播消息是否会受到阻碍。

另外如果dhcpd进程没有启动,那么可以浏览syslog消息文件来确定是哪里出了问题。

这个消息文件通常是/var/log/messages。

  典型故障:

  1.DHCP服务器配置完成,没有语法错误。

但是网络中的客户机却没办法取得IP地址。

  通常是LinuxDHCP服务器沒有办法接收來自255.255.255.255的DHCP客户机的Request封包造成的。

一般是LinuxDHCP服务器的网卡没有设置具有MULTICAST功能。

为了让dhcpd(dhcp程序的守护进程)能够正常的和DHCP客户机沟通,dhcpd必须传送封包到255.255.255.255这个IP地址,但是有些Linux系统里255.255.255.255这个IP地址被用来做为监听区域子网域(localsubnet)广播的IP地址,所以需要在路由表(routingtable)里加入255.255.255.255以激活MULTICAST功能;

  使用命令:

routeadd-host255.255.255.255deveth0

  如果报告错误消息:

255.255.255.255:

Unkownhost

  那么请先修改/etc/hosts加入一行:

  255.255.255.255dhcp

  2.DHCP客户端程序和DHCP服务器不兼容

  由于Linux有许多发现版本,不同版本使用DHCP客户端程序和DHCP服务器也不相同。

Linux提供了四种DHCP客户端程序:

pump,dhclient,dhcpxd,和dhcpcd。

了解不同Linux发行版本的服务器端和客户端程序对于常见错误排除是必要的。

笔者曾经遇到过使用SuSELinux9.1DHCP服务器和使用MandrakeLinux9.0客户机不兼容的情况。

此时就必须更换客户端程序。

方法是先停止客户机的网络服务,卸载原程序,安装和服务器端兼容程序。

附表:

主要Linux发行版使用的DHCP客户端。

 发行版本

 缺省DHCP客户端

 可选DHCP客户端

 DHCP客户端启动脚本

 附加配置文件

RedHatLinux9.0

dhclient

/sbin/ifup

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

DebianLinux3.0

dhclient

/sbin/ifup

/etc/network/interfaces

/etc/dhclient.conf

MandrakeLinux9.1

dhclient

dhcpcd,dhcpxd,pump

/sbin/ifup

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/dhclient-eth0.conf

SuSELinux9.1

dhcpcd

dhclient

/sbin/ifup-dhcp

/etc/sysconfig/network/dhcp

/etc/sysconfig/network/ifcfg-eth0

六、DHCP服务器的安全

  1.在指定网络接口启动DHCP服务器

  如果你的Linux系统连接了不止一个网络界面,但是你只想让DHCP服务器启动其中之一,你可以配置DHCP服务器只在那个设备上启动。

在/etc/sysconfig/dhcpd中,把界面的名称添加到DHCPDARGS的列表中:

DHCPDARGS=eth0

  或者直接使用命令:

Echo"DHCPDARGS=eth0">>/etc/sysconfig/dhcpd

 

  这样对于带有两个网卡的防火墙机器,更加安全:

一个网卡可以被配置成DHCP客户来从互联网上检索IP地址;另一个网卡可以被用作防火墙之后的内部网络的DHCP服务器。

仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接它的守护进程。

  2.让DHCP服务器在监牢中运行

  所谓"监牢"就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。

这样即使出现被破坏或被侵入,所受的损失也较小。

  将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为chrootjail(chroot"监牢")。

如果要在"监牢"中运行dhcpd,而事实上根本看不到文件系统中那个真正的目录。

因此需要事先创建目录,并将dhcpd复制到其中。

同时dhcpd需要几个库文件,可以使用ldd(libraryDependencyDisplay缩写)命令,ldd作用是显示一个可执行程序必须使用的共享库。

ldddhcpd

 

       libc.so.6=>

/lib/tls/libc.so.6(0x42000000)

 

       /lib/ld-linux.so.2

=>/lib/ld-linux.so.2(0x40000000)

style='font-family:

宋体'>

  这意味着还需要在"监牢"中创建lib目录,并将库文件复制到其中。

手工完成这一工作是非常麻烦的,此时可以用jail软件包来帮助简化chroot"监牢"建立的过程。

  

(1)Jail软件的编译和安装

  Jail官方网站是:

,最新版本:

1.9a。

#Wget...il/jail_1.9a.tar.gz

#tarxzvfjail.tar.gz;cdjail/src

#make;makeinstall

 

  

(2)用jail创建监牢

  jail软件包提供了几个Perl脚本作为其核心命令,包括mkjailenv、addjailuser和addjailsw。

  mkjailenv:

创建chroot"监牢"目录,并且从真实文件系统中拷贝基本的软件环境。

addjailsw:

从真实文件系统中拷贝二进制可执行文件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该"监牢"中。

addjailuser:

创建新的chroot"监牢"用户。

  首先停止目前dhcpd服务,然后建立chroot目录:

#/sbin/servicedhcpdstart

#mkjailenv /chroot/

mkjailenv

AcomponentofJail(version1.9forlinux)

http:

//www.gsyc.inf.uc3m.es/~assman/jail/

JuanM.Casillas

 

Makingchrootedenvironmentinto/chroot

       Doingpreinstall()

       Doingspecial_devices()

       Doinggen_template_password()

       Doingpostinstall()

Done.

 

  下面的例子展示为"监牢"添加dhcpd程序的过程:

#addjailsw /chroot/-P/usr/sbin/dhcpd

addjailsw

AcomponentofJail(version1.9forlinux)

http:

//www.gsyc.inf.uc3m.es/~assman/jail/

JuanM.Casillas

 

Guessingdhcpdargs(0)

Warning:

file/chroot//lib/tls/libc.so.6exists.Overwrittingit

Warning:

file/chroot//lib/ld-linux.so.2exists.Overwrittingit

………

Done.

 

  不用在意那些警告信息,因为jail会调用ldd检查dhcpd用到的库文件。

而几乎所有基于共享库的二进制可执行文件都需要上述的几个库文件。

接下来将dhcpd的相关文件拷贝到"监牢"中:

# mkdir-p/chroot/dhcp/etc

#cp/etc/dhcpd.conf/chroot/dhcp/etc/

#mkdir-p/chroot/dhcp/var/state/dhcp

#touch/chroot/dhcp/var/state/dhcp/dhcp.leases

  重新启动dhcpd:

[root@wwwroot]#/chroot/usr/sbin/dhcpd

 

  使用ps命令检查dhcpd进程:

#ps-ef|grepdhcpd

root     2402    1 014:

25?

       00:

00:

00/chroot/usr/sbin/dhcpd

root     2764 2725 014:

29pts/2   00:

00:

00grepdhcpd

 

  注意此时进程名称已经改变,使用检查dhcpd运行的端口:

#netstat-nutap|grepdhcpd

udp  0 00.0.0.0:

67        0.0.0.0:

*                    2402/dhcpd

 

  端口号没有改变。

现在dhcpd已经成功运行在"监牢"中。

到此为止一个这样,一个完整和安全的DHCP服务器就完成了。

参考文献

[1]《linux公共服务技术支持中心》[M].北京市机械工业出版社.2009.09;

[2](美)ChristopherNegus,(美)ThomasWeeks.《linux.操作》.北京市电子工业出版社.[M]2005.06

[3]蒋德吉,古力多.《linux完全使用指南》.重庆市重庆出版社.[M]1999

[4]汤荷美.《linux基础教程,操作系统基础.》[M]北京市清华大学出版社.2001

[5]陈向阳《Linux实用大全》。

科学出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1