1、Linux_服务器安全策略详解.txt19“明”可理解成两个月亮坐在天空,相互关怀,相互照亮,缺一不可,那源源不断的光芒是连接彼此的纽带和桥梁!人间的长旅充满了多少凄冷孤苦,没有朋友的人是生活的黑暗中的人,没有朋友的人是真正的孤儿。- Page 1- Linux 服务器安全策略详解 著者: 曹江华编著 ISBN 号:978-7-121-04571-4 出版日期:2007-07 字数:1133 千字 页码:626 开本:16 开 - Page 2- 服务器安全策略详解 详细目录: http:/www.china- 在线连载: 2 - Page 3- 第1 章 Linux 网络基础与Linux 服
2、务器的安全威胁 第1 章Linux 网络基础与Linux 服务器的安全威胁 本章要点 Linux 网络基础 Linux 的TCP/IP 网络配置 分级解析对Linux服务器的攻击 开源软件网络安全概述 1.1 Linux 网络基础 1.1.1 Linux 网络结构的特点 Linux 在服务器领域已经非常成熟,其影响力日趋增大。Linux 的网络服务功能非常强大,但是由 于Linux 的桌面应用和Windows 相比还有一定差距,除了一些Linux 专门实验室之外,大多数企业在 应用Linux 系统时,往往是Linux 和Windows (或UNIX )等操作系统共存形成的异构网络。 在一个网络
3、系统中,操作系统的地位是非常重要的。Linux 网络操作系统以高效性和灵活性而著 称。它能够在PC 上实现全部的UNIX 特性,具有多任务、多用户的特点。Linux 的组网能力非常强大, 它的TCP/IP 代码是最高级的。Linux 不仅提供了对当前的TCP/IP 协议的完全支持,也包括了对下一 代Internet 协议IPv6 的支持。Linux 内核还包括了IP 防火墙代码、IP 防伪、IP 服务质量控制及许多安 全特性。Linux 的网络实现是模仿FreeBSD 的,它支持FreeBSD 的带有扩展的Sockets (套接字)和 TCP/IP 协议。它支持两个主机 的网络连接和Socke
4、ts 通信模型,实现了两种类型的Sockets:BSD Sockets 和INET Sockets。它为不同的通信模型提供了两种传输协议,即不可靠的、基于消息的UDP 传输协议和可靠的、基于流的TCP 传输协议,并且都是在IP 网际协议上实现的。INET Sockets 是在 以上两个协议及IP 网际协议之上实现的,它们之 的关系如图1-1 所示。 3 - Page 4- 服务器安全策略详解 网络应用程序 用户 内核 BSD Sockets Sockets 界面 INET Sockets TCP UDP IP 协议层 PPP SLIP Ethernet ARP 网络设备 图1-1 Linux
5、网络中的层 掌握OSI 网络模型、TCP/IP 模型及相关服务对应的层次对于理解Linux 网络服务器是非常重要的。 1.1.2 TCP/IP 四层模型和OSI 七层模型 表1-1 是TCP/IP 四层模型和OSI 七层模型对应表。我们把OSI 七层网络模型和Linux TCP/IP 四 层概念模型对应,然后将各种网络协议归类。 表1-1 TCP/IP 四层模型和OSI 七层模型对应表 OSI 七层网络模型 Linux TCP/IP 四层概念模型 对应网络协议 应用层 (Application) TFTP, FTP, NFS, WAIS 表示层 (Presentation ) 应用层 Teln
6、et, 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.2 到IEEE 802.11 1网络接口 网络接口把数据链路层和物理层放在一起,对应TCP/IP 概念模型的网络接口。对应的网络协议主 要
7、是:Ethernet、FDDI 和能传输IP 数据包的任何协议。 2网际层 网络层对应Linux TCP/IP 概念模型的网际层,网络层协议管理离散的计算机 的数据传输,如IP 协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。这一过程中, IP 和其他网络层的协议共同用于数据传输,如果没有使用一些监视系统进程的工具,用户是看不到在 系统里的IP 的。网络嗅探器Sniffers 是能看到这些过程的一个装置(它可以是软件,也可以是硬件), 4 - Page 5- 第1 章 Linux 网络基础与Linux 服务器的安全威胁 它能读取通过网络发送的每一个包,即能读取发生
8、在网络层协议的任何活动,因此网络嗅探器Sniffers 会对安全造成威胁。重要的网络层协议包括ARP (地解析协议)、ICMP (Internet 控制消息协议)和 IP 协议(网际协议)等。 3传输层 传输层对应Linux TCP/IP 概念模型的传输层。传输层提供应用程序 的通信。其功能包括:格式 化信息流;提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认信息,如果分组丢失, 必须重新发送。传输层包括TCP (Transmission Control Protocol,传输控制协议)和UDP (User Datagram Protocol,用户数据报协议),它们是传输层中最主要的
9、协议。TCP 建立在IP 之上,定义了网络上程 序到程序的数据传输格式和规则,提供了IP 数据包的传输确认、丢失数据包的重新请求、将收到的数 据包按照它们的发送次序重新装配的机制。TCP 协议是面向连接的协议,类似于打电话,在开始传输 数据之前,必须先建立明确的连接。UDP 也建立在IP 之上,但它是一种无连接协议,两台计算机之 的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,两者之间没有明确的连接。UDP 不保证数据的传输,也不提供重新排列次序或重新请求的功能,所以说它是不可靠的。虽然UDP 的不 可靠性限制了它的应用场合,但它 TCP 具有更好的传输效率。 4应用层 应用层、表示
10、层和会话层对应Linux TCP/IP 概念模型中的应用层。应用层位于协议栈的顶端,它 的主要任务是应用。一般是可见的,如利用FTP (文件传输协议)传输一个文件,请求一个和目标计 算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。常见的应用层协议 有:HTTP,FTP,Telnet,SMTP 和Gopher 等。应用层是Linux 网络设定最关键的一层。Linux 服务 器的配置文档主要针对应用层中的协议。TCP/IP 模型各个层次的功能和协议如表1-2 所示。 表1-2 TCP/IP 模型各个层次的功能和协议 层次名称 功 能 协 议 网络接口 负责实际数据的传输,对
11、应OSI 参考模型的下两层 HDLC (高级链路控制协议) (Host-to-Net Layer) PPP (点对点协议) SLIP (串行线路接口协议) 网际层 负责网络 的寻 IP (网际协议) (Inter-network Layer ) 数据传输,对应OSI 参考模型的第三层 ICMP (网际控制消息协议) ARP (地解析协议) RARP (反向地 解析协议) 传输层 负责提供可靠的传输服务,对应OSI 参考模型的第四 TCP (控制传输协议) (Transport Layer) 层 UDP (用户数据报协议) 应用层 负责实现一切与应用程序相关的功能,对应OSI 参考 FTP (文
12、件传输协议) (Application Layer) 模型的上三层 HTTP (超文本传输协议) DNS (域名服务器协议) SMTP (简单邮件传输协议) NFS (网络文件系统协议) 说明 TCP/IP 与OSI 最大的不同在于OSI 是一个理论上的网络通信模型,而TCP/IP 则是 实际运行的网络协议。 5 - Page 6- 服务器安全策略详解 1.1.3 TCP/IP 提供的主要用户应用程序 1Telnet 程序 Telnet 程序提供远程登录功能。 2文件传输协议 文件传输协议(FTP)允许用户将一个系统上的文件复制到另一个系统上。 3简单邮件传输协议 简单邮件传输协议(SMTP)
13、用于传输电子邮件。 4Kerberos 协议 Kerberos 是一个受到广泛支持的安全性协议。 5域名服务器协议 域名服务器协议(DNS )能使一台设备具有的普通名字转换成某个特定的网络地 。 6简单网络管理协议 简单网络管理协议(SNMP)把用户数据报协议(UDP )作为传输机制,它使用和TCP/IP 不同的 术语,TCP/IP 用客户端和服务器,而SNMP 用管理器(Manager)和代理(Agent ),代理提供设备信 息,而管理器管理网络通信。 7网络文件系统协议 网络文件系统协议(NFS)是由SUN Microsystems 公司开发的一套协议,可使多台计算机能透明 地访问彼此的目
14、录。 8远程过程调用 远程过程调用 (RPC)是使应用软件能与另一台计算机(服务器)通信的一些 数。 9普通文件传输协议 普通文件传输协议(TFTP)是一种缺乏任何安全性的、非常简单落后的文件传输协议。 10传输控制协议 传输控制协议(TCP/IP 中的TCP 部分)是一种数据可靠传输的通信协议。 11网际协议 网际协议(IP)负责在网络上传输由TCP/UDP 装配的数据包。 12网际控制消息协议 网际控制消息协议负责根据网络上设备的状态发出和检查消息,它可以将某台设备的故障通知到 其他设备。 1.1.4 端口号分配 TCP 和UDP 采用16bit 的端口号来识别应用程序。那么这些端口号是如
15、何选择的呢? 6 - Page 7- 第1 章 Linux 网络基础与Linux 服务器的安全威胁 服务器一般都是通过知名端口号来识别的。例如,对于TCP/IP 实现来说,每个FTP 服务器的TCP 端口号都是21,每个Telnet 服务器的TCP 端口号都是23,每个TFTP (普通文件传输协议)服务器的 UDP 端口号都是69。任何TCP/IP 实现所提供的服务都用知名的11 023 之 的端口号。这些知名端 口号由Internet 号分配机构(Internet Assigned Numbers Authority, IANA )来管理。到1992 年为止,知 名端口号介于1255 之 。
16、2561 023 之 的端口号通常都是由UNIX 系统占用,以提供一些特定的 UNIX 服务,也就是说,提供一些只有UNIX 系统才有的,而其他操作系统可能不提供的服务。现在 IANA 管理11 023 之间所有的端口号。 Internet 扩展服务与UNIX 特定服务之 的一个差别就是telnet 和rlogin,它们二者都允许通过计 算机网络登录到其他主机上。telnet 是采用端口号为23 的TCP/IP 标准,且几乎可以在所有操作系统上 进行实现。相反,rlogin 最开始时只是为UNIX 系统设计的(尽管许多非UNIX 系统现在也提供该服 务),因此在20 世纪80 年代初,它的端口
17、号为513,客户端通常对它所使用的端口号并不关心,只 须保证该端口号在本机上是唯一的即可。客户端口号又称做临时端口号 (即存在时 很短暂),这是 因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着,其服务就运行。 大多数TCP/IP 实现给临时端口分配1 0245 000 之 的端口号。大于5 000 的端口号是为其他服 务器预留的(Internet 上并不常用的服务)。我们可以在后面看见许多给临时端口分配端口号的例子。 大多数Linux 系统的文件/etc/services 都包含了人们熟知的端口号。为了找到telnet 服务,可以运行以 下语句:“grep telnet /
18、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 远程登录 25 smtp 电子邮件 37 time 时 服务 42 nameserve TCP 名字服务 43 whois NIC whois 服务 53 domain 域名服务 (DNS ) 7
19、9 finger 用户信息 80 http WWW (万维网) 110 pop3 邮局协议3 (POP3 ) 111 sunrpc SUN 的远程过程调用 (RPC ) 113 auth 远程用户名认证服务 119 nntp 网络新闻传输协议(NNTP ) 143 imap 交互式邮件访问协议 443 https 用SSL 加密的HTTP 5 12 exec 在远程UNIX 主机上执行命令 5 13 login 登录到远程UNIX 主机(rlogin ) 514 shell 从远程UNIX 主机获得shell (rsh ) 7 - Page 8- 服务器安全策略详解 续表 TCP 端口 服 务
20、 名 功 能 515 printer 远程打印 1080 socks SOCKS 应用代理服务 2049 NFS TCP 之上的NFS (NFS over TCP ) 60006001 X X Window 系统 UDP 为运行于同一台或不同机器之上的两个或多个程序之间传输数据包提供了简单的、不可靠的 连接。“不可靠”意味着操作系统不保证每个发出的包都能到达,也不保证包能够按序到达。不过UDP 是尽力传输的,在LAN 中UDP 通常能达到100%的可靠性。UDP 的优点在于它 TCP 的开销少,较 少的开销使得基于UDP 的服务可以用TCP 10 倍的吞吐量传输数据。 UDP 主要用于SUN
21、的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 的远
22、程过程调用 (RPC ) 123 ntp 网络时 协议(Network Time Protocol,NTP ) 161 snmp 简单网络管理协议 512 biff 新邮件提示 513 who 收集关于用户登录到同一子网的其他机器的广播 514 syslog 系统日志工具 517 talk 发送talk 请求 518 ntalk 一个“新”的talk 请求 520 route 路由信息协议 533 netwall 每个用户的终端 2049 NFS 网络文件系统协议(NFS) 1.2 Linux 的TCP/IP 网络配置 Linux 从一开始就是为网络而设计的。它内置了以前仅在高端企业产品中才可
23、见到的成熟功能。 然而,尽管拥有这些强大的能力,Linux 网络的配置却远没有Windows 网络的配置复杂。诸如Webmin、 redhat-config-network 和YaST 允许执行图形化的配置;诸如ifconfig 和route 允许通过控制台或脚本查 看和修改网络参数;诸如netstat 允许查看单独的网络连接,并显示它们与运行着的进程的关系。 8 - Page 9- 第1 章 Linux 网络基础与Linux 服务器的安全威胁 1.2.1 Linux 的TCP/IP 网络配置文件 除非另行指定,Red Hat Linux 系统中大多数配置文件都在/etc 目录中。配置文件如表
24、1-5 所示。 表1-5 配置文件 配置文件名称 功 能 /etc/gated.conf gated 的配置,只能被gated 守护进程所使用 /etc/gated.version gated 守护进程的版本号 /etc/gateway 由routed 守护进程可选择地使用 /etc/networks 列举机器所连接的网络中可以访问的网络名和网络地 。通过路由命令使用,允许使用网络名称 /etc/protocols 列举当前可用的协议,请参阅网络管理员指南和联机帮助页 /etc/resolv.conf 在程序请求“解析”一个IP 地 时,告诉内核应该查询哪个名称服务器 /etc/rpc 包含R
25、PC 指令/规则,这些指令/规则可以在NFS 调用、远程文件系统安装等中使用 /etc/exports 要导出的网络文件系统(NFS)和对它的权限 /etc/services 将网络服务名转换为端口号/协议,由inetd、telnet、tcpdump 和一些其他程序读取,有一些C 访问例程 xinetd 的配置文件,请参阅xinetd 联机帮助页。包含每个网络服务的条目,inetd 必须为这些网络服务控 /etc/xinetd.conf 制守护进程或其他服务。注意,服务将会运行,但在/etc/services 中将它们注释掉了,这样即使这些服务 在运行也将不可用 /etc/hostname 该
26、文件包含了系统的主机名称,包括完全的域名,例如 /etc/host.conf 该文件指定如何解析主机名。Linux 通过解析器来获得主机名对应的IP 地 /etc/sysconfig/network 指出NETWORKING=yes 或no,由rc.sysinit 读取 /etc/sysconfig/network-scripts/if* Red Hat 网络配置脚本 机器启动时,在查询DNS 以前,机器需要查询一些主机名与IP 地 的匹配信息,这些匹配信息存放在 /etc/hosts /etc/hosts 文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个
27、主机名的IP 地 1.2.2 网络配置工具 在安装Linux 发行版本时,需要配置网络。你或许已经有一个来自初始配置的活动eth0,这个配 置对于当前的使用也许足够,但是随着时 的推移你可能需要做出更改。下面将介绍与IP 网络相关的 不同配置项,以及使用这些配置项的文件和工具。 1手动修改配置文件 手动配置是最直接的方式,熟练的Linux 用户在平时维护系统的时候更喜欢使用手工配置,因为 手工配置有很多优点: 熟悉命令之后,手工配置更快速,并且不需要重新启动; 能够使用配置命令的高级特性; 更容易维护配置文件,找出系统故障; 能更深刻地了解系统配置是如何进行的。 2使用Linux 命令 虽然L
28、inux 桌面应用发展很快,但是命令在Linux 中依然有很强的生命力。Linux 是一个由命令行 组成的操作系统,其精髓在于命令行,无论图形界面发展到什么水平这个原理是不会变的。Linux 网 络设备操作命令包括ifconfig, ip, ping, netstat, route, ip, arp, hostname 和arpwatch。 9 - Page 10- 服务器安全策略详解 3Webmin Webmin 在Networking 下的Network Configuration 中提供了一组网络配置工具。你可以配置单 独的接口,并调整它们的当前设置或已保存的设置。还可以配置路由和网关、DNS 客户端设置,以 及本地主机地 。编辑好所有的配置之后,可以单击“Apply Configuration”来应用它们,不必重新 启动系统。 4不同发行版本中的工具 每个发行版本都有