服务器 频道

Linux服务器安全策略详解之网络基础

  1.1  Linux网络基础

  1.1.1  Linux网络结构的特点

  Linux在服务器领域已经非常成熟,其影响力日趋增大。Linux的网络服务功能非常强大,但是由于Linux的桌面应用和Windows相比还有一定差距,除了一些Linux专门实验室之外,大多数企业在应用Linux系统时,往往是Linux和Windows(或UNIX)等操作系统共存形成的异构网络。

  在一个网络系统中,操作系统的地位是非常重要的。Linux网络操作系统以高效性和灵活性而著称。它能够在PC上实现全部的UNIX特性,具有多任务、多用户的特点。Linux的组网能力非常强大,它的TCP/IP代码是较高级的。Linux不仅提供了对当前的TCP/IP协议的完全支持,也包括了对下一代Internet协议IPv6的支持。Linux内核还包括了IP防火墙代码、IP防伪、IP服务质量控制及许多安全特性。Linux的网络实现是模仿FreeBSD的,它支持FreeBSD的带有扩展的Sockets(套接字)和TCP/IP协议。它支持两个主机间的网络连接和Sockets通信模型,实现了两种类型的Sockets:BSD Sockets和INET Sockets。它为不同的通信模型提供了两种传输协议,即不可靠的、基于消息的UDP传输协议和可靠的、基于流的TCP传输协议,并且都是在IP网际协议上实现的。INET Sockets是在以上两个协议及IP网际协议之上实现的,它们之间的关系如图1-1所示。

 

  图1-1  Linux网络中的层

  掌握OSI网络模型、TCP/IP模型及相关服务对应的层次对于理解Linux网络服务器是非常重要的。

 

  1.1.2  TCP/IP四层模型和OSI七层模型

  表1-1是 TCP/IP四层模型和OSI七层模型对应表。我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类。

OSI七层网络模型

Linux TCP/IP四层概念模型

对应网络协议

应用层(Application

应用层

TFTP, FTP, NFS, WAIS

表示层(Presentation

Telnet, Rlogin, SNMP, Gopher

会话层(Session

SMTP, DNS

传输层(Transport

传输层

TCP, UDP

网络层(Network

网际层

IP, ICMP, ARP, RARP, AKP, UUCP

数据链路层(Data Link

网络接口

FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

物理层(Physical

IEEE 802.1A, IEEE 802.2IEEE 802.11

  表1-1  TCP/IP四层模型和OSI七层模型对应表

  1.网络接口

  网络接口把数据链路层和物理层放在一起,对应TCP/IP概念模型的网络接口。对应的网络协议主要是:Ethernet、FDDI和能传输IP数据包的任何协议。

  2.网际层

  网络层对应Linux TCP/IP概念模型的网际层,网络层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。这一过程中,IP和其他网络层的协议共同用于数据传输,如果没有使用一些监视系统进程的工具,用户是看不到在系统里的IP的。网络嗅探器Sniffers是能看到这些过程的一个装置(它可以是软件,也可以是硬件),它能读取通过网络发送的每一个包,即能读取发生在网络层协议的任何活动,因此网络嗅探器Sniffers会对安全造成威胁。重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网际协议)等。

  3.传输层

  传输层对应Linux TCP/IP概念模型的传输层。传输层提供应用程序间的通信。其功能包括:格式化信息流;提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认信息,如果分组丢失,必须重新发送。传输层包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议),它们是传输层中最主要的协议。TCP建立在IP之上,定义了网络上程序到程序的数据传输格式和规则,提供了IP数据包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制。TCP 协议是面向连接的协议,类似于打电话,在开始传输数据之前,必须先建立明确的连接。UDP也建立在IP之上,但它是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,两者之间没有明确的连接。UDP不保证数据的传输,也不提供重新排列次序或重新请求的功能,所以说它是不可靠的。虽然UDP的不可靠性限制了它的应用场合,但它比TCP具有更好的传输效率。

  4.应用层

  应用层、表示层和会话层对应Linux TCP/IP概念模型中的应用层。应用层位于协议栈的顶端,它的主要任务是应用。一般是可见的,如利用FTP(文件传输协议)传输一个文件,请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。常见的应用层协议有:HTTP、FTP、Telnet、SMTP和Gopher等。应用层是Linux网络设定最关键的一层。Linux服务器的配置文档主要针对应用层中的协议。TCP/IP模型各个层次的功能和协议如表1-2所示。

层次名称

   

   

网络接口

Host-to-Net Layer

负责实际数据的传输,对应OSI参考模型的下两层

HDLC(高级链路控制协议)

PPP(点对点协议)

SLIP(串行线路接口协议)

网际层

Inter-network Layer

负责网络间的寻址

数据传输,对应OSI参考模型的第三层

IP(网际协议)

ICMP(网际控制消息协议)

ARP(地址解析协议)

RARP(反向地址解析协议)

传输层

Transport Layer

负责提供可靠的传输服务,对应OSI参考模型的第四层

TCP(控制传输协议)

UDP(用户数据报协议)

  表1-2  TCP/IP模型各个层次的功能和协议

  说明  TCP/IP与OSI最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议。

  1.1.3  TCP/IP提供的主要用户应用程序

  1.Telnet程序

  Telnet程序提供远程登录功能。

  2.文件传输协议

  文件传输协议(FTP)允许用户将一个系统上的文件复制到另一个系统上。

  3.简单邮件传输协议

  简单邮件传输协议(SMTP)用于传输电子邮件。

  4.Kerberos协议

  Kerberos是一个受到广泛支持的安全性协议。

  5.域名服务器协议

  域名服务器协议(DNS)能使一台设备具有的普通名字转换成某个特定的网络地址。

  6.简单网络管理协议

  简单网络管理协议(SNMP)把用户数据报协议(UDP)作为传输机制,它使用和TCP/IP不同的术语,TCP/IP用客户端和服务器,而SNMP用管理器(Manager)和代理(Agent),代理提供设备信息,而管理器管理网络通信。

  7.网络文件系统协议

  网络文件系统协议(NFS)是由SUN Microsystems公司开发的一套协议,可使多台计算机能透明地访问彼此的目录。

  8.远程过程调用

  远程过程调用(RPC)是使应用软件能与另一台计算机(服务器)通信的一些函数。

  9.普通文件传输协议

  普通文件传输协议(TFTP)是一种缺乏任何安全性的、非常简单落后的文件传输协议。

  10.传输控制协议

  传输控制协议(TCP/IP中的TCP部分)是一种数据可靠传输的通信协议。

  11.网际协议

  网际协议(IP)负责在网络上传输由TCP/UDP装配的数据包。

  12.网际控制消息协议

  网际控制消息协议负责根据网络上设备的状态发出和检查消息,它可以将某台设备的故障通知到其他设备。

 

  1.1.4  端口号分配

  TCP和UDP采用16bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?

  服务器一般都是通过知名端口号来识别的。例如,对于TCP/IP实现来说,每个FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(普通文件传输协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1 023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority,IANA)来管理。到1992年为止,知名端口号介于1~255之间。256~1 023之间的端口号通常都是由UNIX系统占用,以提供一些特定的UNIX服务,也就是说,提供一些只有UNIX系统才有的,而其他操作系统可能不提供的服务。现在IANA管理1~1 023之间所有的端口号。

  Internet扩展服务与UNIX特定服务之间的一个差别就是telnet和rlogin,它们二者都允许通过计算机网络登录到其他主机上。telnet是采用端口号为23的TCP/IP标准,且几乎可以在所有操作系统上进行实现。相反,rlogin最开始时只是为UNIX系统设计的(尽管许多非UNIX系统现在也提供该服务),因此在20世纪80年代初,它的端口号为513,客户端通常对它所使用的端口号并不关心,只须保证该端口号在本机上是唯一的即可。客户端口号又称做临时端口号(即存在时间很短暂),这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着,其服务就运行。

  大多数TCP/IP实现给临时端口分配1 024~5 000之间的端口号。大于5 000的端口号是为其他服务器预留的(Internet上并不常用的服务)。我们可以在后面看见许多给临时端口分配端口号的例子。大多数Linux系统的文件/etc/services都包含了人们熟知的端口号。为了找到Telnet服务,可以运行以下语句:"grep telnet /etc/services"。表1-3是一些常用TCP服务和端口。

  表1-3  常用TCP服务和端口

TCP 端口

   

   

7

echo

echo字符(用于测试)

9

discard

丢弃字符(用于测试)

13

daytime

日期服务

19

chargen

字符生成器

21

ftp

文件传输协FTP

22

ssh

安全shell(虚拟终端或文件传输)

23

telnet

远程登录

TCP 端口

   

   

25

smtp

电子邮件

37

time

时间服务

42

nameserve

TCP名字服务

43

whois

NIC whois服务

53

domain

域名服务(DNS

79

finger

用户信息

80

http

WWW(万维网)

110

pop3

邮局协议3POP3

111

sunrpc

Sun的远程过程调用(RPC

113

auth

远程用户名认证服务

119

nntp

网络新闻传输协NNTP

143

imap

交互式邮件访问协议

443

https

SSL加密的HTTP

512

exec

在远程UNIX主机上执行命令

513

login

登录到远程UNIX主机(rlogin

514

shell

从远程UNIX主机获得shellrsh

515

printer

远程打印

1080

socks

SOCKS应用代理服务

2049

NFS

TCP之上的NFSNFS over TCP

6000~6001

X

X Window系统


 

  UDP为运行于同一台或不同机器之上的两个或多个程序之间传输数据包提供了简单的、不可靠的连接。"不可靠"意味着操作系统不保证每个发出的包都能到达,也不保证包能够按序到达。不过UDP是尽力传输的,在LAN中UDP通常能达到100%的可靠性。UDP的优点在于它比TCP的开销少,较少的开销使得基于UDP的服务可以用TCP 10倍的吞吐量传输数据。

  UDP主要用于SUN的NFS、NIS、主机名解析和传输路由信息。对于有些服务而言,偶然丢失一个包并不会带来太大的负面影响,因为它们会周期性地请求一个新包,或者那些包本身并不是很重要。这些服务包括who、talk和一些时间服务。表1-4是一些常用UDP服务和端口。

  表1-4  常见UDP服务和端口

UDP端口

   

   

7

echo

在另一个数据包中返回用户的数据

9

discard

什么也不做

13

daytime

返回日期

19

chargen

字符生成器

37

time

返回时间

53

domain

域名服务(DNS

69

tftp

普通文件传输协议

111

sunrpc

SUN的远程过程调用(RPC

UDP端口

   

   

123

ntp

网络时间协议(Network Time ProtocolNTP

161

snmp

简单网络管理协议

512

biff

新邮件提示

513

who

收集关于用户登录到同一子网的其他机器的广播

514

syslog

系统日志工具

517

talk

发送talk请求

518

ntalk

一个“新”的talk请求

520

route

路由信息协议

533

netwall

写每个用户的终端

2049

NFS

网络文件系统协议(NFS

 

0
相关文章