《Linux操作系统实用教程》第10章Linux系统安全10.1常见的攻击类型10.2Linux日志管理10.3Linux用户安全10.4访问控制与身份认证10.5Linux网络服务安全第10章Linux系统安全本章概述Linux操作系统以安全性和稳定性著称,许多大型门户网站都以Linux作为服务器操作系统。然而随着黑客攻击技术的发展,系统安全防范工作仍然需要系统管理员的高度重视。在本章,首先介绍了几种常见的攻击类型以及Linux系统中帮助管理员发现攻击的重要工具——系统日志的管理,然后阐述了Linux系统的账号安全、网络安全等,并讲述如何使用snort进行入侵检测。10.1常见的攻击类型常见的攻击方式包括端口扫描、嗅探、种植木马、传播病毒等。1.端口扫描在网络技术中,端口(Port)通常有两种含义,一是物理意义上的端口,即调制解调器、网络集线器、交换机、路由器中用于连接其他网络设备的接口,如RJ-45端口、SC端口等;二是逻辑意义上的端口,即指TCP/IP协议中的端口,用于承载特定的网络服务,其编号的范围为0~65535,例如,用于承载Web服务的是80端口,用于承载FTP服务的是21端口和20端口等。在网络技术中,每个端口承载的网络服务是特定的,因此可以根据端口的开放情况来判断当前系统中开启的服务。10.1常见的攻击类型扫描器就是通过依次试探远程主机TCP端口,获取目标主机的响应,并记录目标主机的响应。根据这些响应的信息可以搜集到很多关于目标主机的有用信息,包括该主机是否支持匿名登录以及提供某种服务的软件包的版本等。这些信息可以直接或间接地帮助攻击者了解目标主机可能存在的安全问题。端口扫描器并不是一个直接攻击网络漏洞的程序,但是它能够帮助攻击者发现目标主机的某些内在安全问题。目前常用的端口扫描技术有TCPconnect扫描、TCPSYN扫描、TCPFIN扫描、IP段扫描、TCP反向ident扫描以及TCP返回攻击等。通常扫描器应该具备如下的3项功能:发现一个主机或网络的能力。发现远程主机后,有获取该主机正在运行的服务的能力。通过测试远程主机上正在运行的服务,发现漏洞的能力。10.1常见的攻击类型2.嗅探嗅探技术是一种重要的网络安全攻防技术,攻击者可以通过嗅探技术以非常隐蔽的方式攫取网络中的大量敏感信息,与主动扫描相比,嗅探更加难以被发觉,也更加容易操作和实现。对于网络管理员来说,借助嗅探技术可以对网络活动进行实时监控,发现网络中的各种攻击行为。嗅探操作的成功实施是因为以太网的共享式特性决定的。由于以太网是基于广播方式传输数据的,所有的物理信号都会被传送到每一个网络主机结点,而且以太网中的主机网卡允许设置成混杂接收模式,在这种模式下,无论监听到的数据帧的目的地址如何,网卡都可以予以接收。更重要的是,在TCP/IP协议栈中网络信息的传递大多是以明文传输的,这些信息中往往包含了大量的敏感信息,比如邮箱、FTP或telnet的账号和口令等,因此使用嗅探的方法可以获取这些敏感信息。10.1常见的攻击类型嗅探器最初是作为网络管理员检测网络通信的工具出现的,它既可以是软件的,也可以是硬件设备。软件嗅探器使用方便,可以针对不同的操作系统使用不同的软件嗅探器,而且很多软件嗅探器都是免费的。常用的嗅探器有Tcpdump/Windump、Sniffit、Ettercap和Snarp等。处于网络中的主机,如果发现网络出现了数据包丢失率很高或网络带宽长期被网络中的某台主机占用,就应该怀疑网络中是否存在嗅探器。3.木马木马又称特洛伊木马,是一种恶意计算机程序,长期驻留在目标计算机中,可以随系统启动并且秘密开放一个甚至多个数据传输通道的远程控制程序。木马程序一般由客户端(Client)和服务器端(Server)两部分组成,客户端也称为控制端,一般位于入侵者计算机中,服务器端则一般位于用户计算机中。木马本身不带伤害性,也没有感染能力,所以木马不是病毒。10.1常见的攻击类型木马通常具有隐蔽性和非授权性的特点。所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端计算机即使发现感染了木马,也不能确定其具体位置。所谓非授权性是指一旦客户端与服务端连接后,客户端将享有服务端的大部分操作权限,包括修改文件、修改注册表、控制鼠标、键盘等,这些权力并不是服务端赋予的,而是通过木马程序窃取的。入侵者一般使用木马来监视监视被入侵者或盗取被入侵者的密码、敏感数据等。4.病毒虽然Linux系统的病毒并不像Windows系统那样数量繁多,但是威胁Linux平台的病毒同样存在,如Klez、Lion.worm、Morris.worm、Slapper、Scalper、Linux.Svat和BoxPoison病毒等。Linux下的病毒可以如下分类:10.1常见的攻击类型1)蠕虫(worm)病毒1988年Morris蠕虫爆发后,EugeneH.Spafford给出了蠕虫的定义:“计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上”。和其他种类的病毒相比,在Linux平台下最为猖獗的就是蠕虫病毒,如利用系统漏洞进行传播的ramen、lion、Slapper等,都曾给Linux系统用户造成了巨大的损失。随着Linux系统应用越广泛,蠕虫的传播程度和破坏能力也会随之增加。2)可执行文件型病毒可执行文件型病毒是指能够感染可执行文件的病毒,如Lindose。这种病毒大部分都只是企图以感染其他主机程序的方式进行自我复制。10.1常见的攻击类型3)脚本病毒目前出现比较多的是使用shell脚本语言编写的病毒。此类病毒编写较为简单,但是破坏力同样惊人。而一个十数行的shell脚本就可以在短时间内遍历整个硬盘中的所有脚本文件,并进行感染。且此类病毒还具有编写简单的特点。4)后门程序后门程序一般是指那些绕过安全性控制而获取程序或系统访问权的程序。在广义的病毒定义概念中,后门也已经纳入了病毒的范畴。从增加系统超级用户账号的简单后门,到利用系统服务加载,共享库文件注册,rootkit工具包,甚至装载内核模块(LKM),Linux平台下的后门技术发展非常成熟,其隐蔽性强,难以清除。10.2Linux日志管理10.2.1Linux日志系统简介在任何操作系统中,日志系统对于系统安全来说都是非常重要的,它记录了系统每天发生的各种各样的事件,包括哪些用户曾经或正在使用系统,可以通过日志来检查系统和应用程序发生错误的原因。日志还能在系统受到黑客攻击后,记录下攻击者留下的痕迹,通过这些痕迹,系统管理员可以发现黑客攻击的手段及特点,从而能够进行相应的处理,为抵御下一次攻击做好准备。日志主要的功能有审计和监测,另外,利用日志还可以实时监测系统状态,监测和追踪侵入者等。10.2.1Linux日志系统简介在Linux系统中利用日志可以审计和检测系统出现的错误,侦查和追踪入侵,并协助系统进行恢复和排除故障。在RedHatLinux9系统中,日志功能通常是由syslog(对应syslogd守护进程)和klog(对应klogd守护进程)日志系统来完成,syslog记录常规系统日志,而klog是针对内核活动的日志。10.2Linux日志管理10.2.1Linux日志系统简介Linux日志是按照类别保存在日志文件中的,一般保存在/var/log目录下,绝大部分只有系统管理员才能够查看。如下表列出了/var/log目录下的日志文件及其功能,其中“*”表示通配符。/var/log目录下的日志文件及其功能日志文件功能说明cups与打印服务相关的日志文件目录gdm存放GNOME启动日志文件目录httpd存放Web服务器日志文件的目录news存放网络新闻组服务相关的日志文件目录squid存放squid代理服务日志文件的目录secure*与安全连接相关的日志文件scrollkeeper.log用于GUI中文档的日志文件10.2Linux日志管理10.2.1Linux日志系统简介这些日志文件可以分为3类:1)连接时间日志由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp中,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录了到系统。boot.log*记录了与启动和停止守护进程相关的日志messages*记录系统的一般性日志rpmpkgs记录当前已安装的RPM软件包lastlog记录最近登录的系统用户dmesg记录了与系统启动相关的引导信息wtmp记录用户登录系统的状况cron*记录crond进程的日志文件10.2Linux日志管理10.2.1Linux日志系统简介2)进程统计由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct,分别位于/usr/adm/pactt和/usr/lib/acct/startup)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。3)错误日志由syslogd(8)守护进程执行,各种系统守护进程、用户程序和内核通过syslogd(8)守护进程向文件/var/log/messages报告值得注意的事件。10.2Linux日志管理10.2.2配置系统日志10.2.2配置系统日志几乎所有的类UNIX系统(如Linux)系统都采用syslog进行系统日志的管理与配置。任何程序可以通过syslog记录事件,并且可以将记录的系统事件写入到一个文件或设备,或给用户发送一个邮件。syslog有两个重要的文件,一个是守护进程/sbin/syslogd,另一个是syslogd的配置文件/etc//syslog.conf。通常多数的syslog信息被写到/var/log目录下的日志文件message.*中。一个典型的syslog.conf记录包括生成日志的程序名称、日志的设备名、日志的优先等级以及一段文本信息。1.启动syslog日志进程启动syslog日志守护进程syslogd的命令格式如下:/sbin/syslogd[选项]10.2Linux日志管理10.2.2配置系统日志该命令常用的参数及含义如下表所示。syslogd命令参数及含义参数含义-asocket添加日志监听的用户定义的套接口-d使用调试模式-fconf_file指定syslogd的配置文件-h记录远程主机返回的日志-lhostlist使用指定的简单主机名记录日志的主机名域-psocket使用指定的套接口启动syslogd进程-r接收并记录网络日志10.2Linux日志管理10.2.2配置系统日志重启syslogd日志守护进程,可以在终端提示符下输入如下的命令:[root@myhostroot]#servicesyslogdrestart或[root@myhostroot]#kill-HUP`cat/var/run/syslogd.pid`说明:在该命令中,/var/run/syslogd.pid文件存放了当前syslogd守护进程的pid,整个命令的执行步骤是,先使用cat/var/run/syslogd.pid获取当前系统的syslogd守护进程的pid,然后使用kill命令传递-HUP信号给该pid指定的进程,对其进行重启操作。10.2Linux日志管理10.2.2配置系统日志2.syslogd的主配置文件系统日志syslog的主配置文件是/etc/syslog.conf。syslog记录的内容及其记录存放的日志文件由该文件指定,可以通过修改syslog.conf文件的方法来配置syslogd。该文件的基本语法格式如下:设备(facility).优先级(priority)动作1)日志设备facility日志设备facility表示日志消息的来源,指明了发出消息的设备或程序,主要设备及说明如下表所示。10.2Linux日志管理10.2.2配置系统日志syslog常用的日志设备及说明设备说明kern内核日志uucpuucp系统日志user用户程序日志news新闻组服务日志mail邮件系统日志daemon系统守