《操作系统安全》第十章Linux系统安全增强.ppt

上传人:小飞机 文档编号:5898545 上传时间:2023-09-01 格式:PPT 页数:112 大小:212.50KB
返回 下载 相关 举报
《操作系统安全》第十章Linux系统安全增强.ppt_第1页
第1页 / 共112页
《操作系统安全》第十章Linux系统安全增强.ppt_第2页
第2页 / 共112页
《操作系统安全》第十章Linux系统安全增强.ppt_第3页
第3页 / 共112页
《操作系统安全》第十章Linux系统安全增强.ppt_第4页
第4页 / 共112页
《操作系统安全》第十章Linux系统安全增强.ppt_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《《操作系统安全》第十章Linux系统安全增强.ppt》由会员分享,可在线阅读,更多相关《《操作系统安全》第十章Linux系统安全增强.ppt(112页珍藏版)》请在三一办公上搜索。

1、第10章 Linux系统安全增强,第一部分 教学组织,一、目的要求1.掌握Linux操作系统安全设置基本技巧。2.了解Linux日志系统、掌握常用审计工具的使用。3.理解入侵检测基本过程并且掌握常用的入侵检测方法和工具。二、工具器材1.Red Hat Enterprise Linux7.0或以上操作系统。2.syslog_ng工具或其他日志工具。3.入侵检测工具Snort,第二部分 教学内容,本章主要介绍Linux系统安全设置技巧、日志和审计工具的使用和入侵检测工具及使用,从而更有效增强了Linux系统安全。,10.1 系统安全设置技巧,10.1.1 启动和登录安全性设置 1.BIOS安全,设

2、定引导口令 2.系统帐号的增加、删除和移走 3.口令设置及加密文件的保护4禁止Ctrl+Alt+Delete三键重启系统 5限制使用su命令6删减登录信息,1.BIOS安全,设定引导口令,禁止从软盘启动,并且给BIOS加上密码。每次启动的时候都手工检查一下BIOS,这样可以提高系统的安全性。禁止从软盘启动,可以阻止别人用特殊的软盘启动你的计计算机;给BIOS加上密码,可以防止有人改变BIOS的参数,比如:允许从软盘启动或不用输入口令就可以引导计算机。,2.系统帐号的增加、删除和移走,(1)增加用户增加用户有三个过程:在/etc/passwd文件中写入新用户的入口项;为新登录用户建立一个HOME

3、目录;在/etc/group中为新用户增加一个入口项。,在/etc/passwd文件中写入新的入口项时,口令部分可先设置为NOLOGIN,以免有人做为此新用户登录。在修改文件前,应mkdir/etc/ptmp,以免他人同时修改此文件。新用户一般独立为一个新组,GID号与UID号相同(除非他要加入目前已存在的一个新组),UID号必须和其他人不同,HOME目录一般设置在/usr或/home目录下建立一个以用户登录名为名称的目录做为其主目录.,(2)删除用户,删除用户与加用户的工作正好相反,首先在/etc/passwd和/etc/group文件中删除用户的入口项,然后删除用户的HOME目录和所有文件

4、.rm-r/usr/loginname 删除整个目录树。如果用户在/usr/spool/cron/crontabs中有crontab文件,也应当删除。,(3)将用户移到另一个系统,这是一个复杂的问题,不只是拷贝用户的文件和用户在/etc/passwd文件中的入口项。首先一个问题是用户的UID和GID可能已经用于另一个系统,若是出现这种情况,必须给要移的用户分配另外的UID和GID,如果改变了用户的UID和GID,则必须搜索该用户的全部文件,将文件的原UID和GID改成新的UID和GID。用find命令可以完成这一修改:find.-user olduid-exec chown newuid;fi

5、nd.-group oldgid-exec chgrp newgid;也许还要为用户移走其它一些文件:/usr/mail/user和/usr/spool/cron/crontabs/user。,3.口令设置及加密文件的保护,口令的安全是Linux安全的一个基本安全设置。许多人都把所有的东西保存在计算机上,防止别人查看这些信息的方法就是用口令把计算机保护起来。没有什么东西是绝对安全的。与常识相反的是:无法破解的口令是不存在的。只要给足时间和资源,所有的口令都能用社会工程(social engineering)或强行计算的方法猜出来。通过社会工程或其它方法获得服务器的口令是最简单和最流行的入侵服务

6、器的方法。,建议用下面的规则选择有效的口令:(1)口令至少要有6个字符,最好包含一个以上的数字或特殊字符;(2)口令不能太简单,所谓的简单就是很容易猜出来,也就是用自己的名字,电话号码、生日、职业或者其它个人信息作为口令;(3)口令必须是有有效期的,在一段时间之后就要更换口令;(4)口令在这种情况下必须作废或者重新设定:如果发现有人试图猜测你的口令,而且已经试过很多次了。,安装完Linux系统之后默认的最小口令长度为5。这就是说一个新的用户可以访问服务器,那么他的口令必须多于5字符。但是这样是不够安全的,最好口令的长度能够大于8。可以强制用户使用8个字符以上的口令。编辑“/etc/login.

7、defs”文件,把最小口令长度由5改成8。找到PASS_MIN_LEN 5 这一行,改为:PASS_MIN_LEN 8。“login.defs”是很重要的配置文件。可以在这个文件中设定一些其它的安全策略,比如:口令的有效期。,口令文件保护是系统安全设置的一个非常重要内容,系统管理员应更改其属性,防止非授权用户获取口令文件。对于UNIX系统,口令文件主要有用户和组账号口令文件,用于保持所有用户的口令。对于LINUX系统,通过chattr命令可以改变口令文件的属性。如:#chattr+i/etc/passwd#chattr+i/etc/shadow#chattr+i/etc/group#chatt

8、r+i/etc/gshadow执行上述命令后,passwd、shadow、group和gshadow四个文件将不能修改,不能被删除和重新命名,不能创建指向该文件的链接,不能向该文件添加数据,仅仅超级用户能够设置和清除这个属性。,4禁止Ctrl+Alt+Delete三键重启系统,我们平时用习惯了windows机器,可能在linux下也习惯的按下Ctrl+Alt+Delete三键,导致linux系统重新启动.以下是屏蔽这三键的方法,防止误操作导致重启:(1)修改/etc/inittab文件,将“ca:ctrlaltdel:/sbin/shutdown-t3-r now”一行注释掉。(2)执行“in

9、it q”这命令使上面修改后文件生效,然后重新设置/etc/rc.d/init.d/目录下所有文件的许可权限,运行如下命令:#chmod-R 700/etc/rc.d/init.d/*,5限制使用su命令,禁止任何人使用su命令 su命令(Substitute User,替代用户)可以使你成为系统的现有用户。如果不希望别人使用su进入根帐户,或者对某些用户限制使用“su”命令,则在“/etc/pam.d/”目录的“su”配置文件顶部增加如下两行代码:auth sufficient/lib/security/pam_rootok.so debug auth required/lib/securi

10、ty/Pam_wheel.so group=wheel 意思是,只有“wheel”组的成员可以用su命令;其中还包括了日志。你可以在wheel组中添加允许使用该命令的用户,例如,希望用户admin能够使用su命令,可以运行如下命令:#usermod G 10 admin将用户加入到wheel组,即可使用su命令。,6删减登录信息,默认情况下,登录提示信息包括Linux发行版、内核版本名和服务器主机名等。对于一台安全性要求较高的机器来说这样泄漏了过多的信息。可以编辑/etc/rc.d/rc.local将输出系统信息的如下行注释掉。,#This will overwrite/etc/issue a

11、t every boot.So,make any changes you#want to make to/etc/issue here or you will lose them when you reboot#echo/etc/issue#echo#R/etc/issue#echo Kernel#(uname-r)on#a#(uname-m)/etc/issue#cp-f/etc/issue/etc/#echo/etc/issue 然后,进行如下操作:#rm-f/etc/issue#rm-f/etc/#touch/etc/issue#touch/etc/,10.1.2 网络访问安全性设置,1

12、限制网络访问(1)NFS访问 如果你使用NFS网络文件系统服务,应该确保你的/etc/exports具有最严格的访问权限设置,也就是意味着不要使用任何通配符、不允许root写权限并且只能安装为只读文件系统。编辑文件/etc/exports并加入如下两行。/dir/to/export(ro,root_squash)/dir/to/export(ro,root_squash)/dir/to/export 是你想输出的目录,是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。为了使改动生效,运行如下命令:#/usr/sbin/exportfs-a,(

13、2)Inetd设置,首先要确认/etc/inetd.conf的所有者是root,且文件权限设置为600。设置完成后,可以使用stat命令进行检查。#chmod 600/etc/inetd.conf 然后,编辑/etc/inetd.conf禁止以下服务:ftp telnet shell login exec talk ntalk imap pop-2 pop-3 finger auth 如果安装了ssh/scp,也可以禁止掉Telnet/FTP。为了使改变生效,运行如下命令:#killall-HUP inetd,默认情况下,多数Linux系统允许所有的请求,而用TCP_WRAPPERS增强系统安

14、全性是举手之劳,可以修改/etc/hosts.deny和/etc/hosts.allow来增加访问限制。例如,将/etc/hosts.deny设为ALL:ALL可以默认拒绝所有访问。然后在/etc/hosts.allow文件中添加允许的访问。例如,sshd表示允许IP地址和主机名允许通过SSH连接。配置完成后,可以用tcpdchk检查:#tcpdchk tcpchk是TCP_Wrapper配置检查工具,它检查tcp wrapper配置并报告所有发现的潜在/存在的问题。,(3)登录终端设置,/etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式

15、是一个被允许的名字列表,你可以编辑/etc/securetty且注释掉如下的行:#tty2#tty3#tty4#tty5#tty6这时,root仅可在tty1终端登录。限制远程登录时使用root帐号。,(4)避免显示系统和版本信息,如果希望远程登录用户看不到系统和版本信息,可以通过以下操作改变/etc/inetd.conf文件:telnet stream tcp nowait root/usr/sbin/tcpd in.telnetd-h 加-h表示telnet不显示系统信息,而仅仅显示“login:”。,2防止攻击,(1)阻止ping 如果没人能ping通你的系统,安全性自然增加了。为此,可

16、以在/etc/rc.d/rc.local文件中增加如下一行:echo 1/proc/sys/net/ipv4/icmp_echo_ignore_all(2)防止IP欺骗 编辑host.conf文件并增加如下几行来防止IP欺骗攻击:order bind,hosts multi off nospoof on,(3)防止DoS攻击 对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行:*hard core 0*hard rss 5000*hard nproc 20 然后必须编辑/etc/pam.

17、d/login文件检查下面一行是否存在。session required/lib/security/pam_limits.so 上面的命令禁止调试文件,限制进程数为20,并且限制内存使用为5MB。,10.1.3 安装系统安全补丁包,1安装Red Hat Linux 系统补丁2安装Solaris系统补丁,10.2 日志和审计工具的使用,记录重要的系统事件是系统安全的一个重要因素。多数Linux系统能够运行三个不同的日志子系统:使用wtmp/utmp文件的连接时间日志;使用acct或pacct文件的进程统计;经过syslog实施的错误日志。本节介绍这些日志子系统以及允许系统或安全管理员监测、审计和

18、维护日志的命令和程序,另外重点讲述了syslog-ng工具及其使用。,10.2.1 UNIX的日志系统,在多数UNIX系统中,有三个主要的日志子系统:1连接时间日志由多个程序执行,把记录写入到/var/log/wtmp(或/var/adm/wtmp)和/var/run/utmp(可以是/etc/utmp或/var/adm/utmp)。login等程序更新wtmp和utmp文件,使系统管理员能跟踪用户在何时登录进入系统。2进程统计由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的主要目的是为系统中的基本服务提供命令使用统计。,3错误日志由s

19、yslogd执行。各种系统守护程序、用户程序和内核通过syslog向文件/var/adm/messages和/var/log/syslog报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP或FTP这样提供网络服务的服务器也保持详细的日志。根据不同的UNIX版本,日志文件通常写到/var/log、/var/adm、/usr/adm或有时/etc目录中,如表10-1所示。,表10-1 常用UNIX系统的日志存放目录,10.2.2 syslog_ng工具及使用,1syslog-ng简介在UNIX系统的维护中,经常会忽略系统事件的处理。经常检查系统日志对于保持系统的安全和正常运行是至关重要

20、的。但是,系统日志中有太多的噪音,一些不是很重要的信息会掩盖重要的信息。目前的工具很难识别出系统管理者感兴趣的信息。在UNIX系统中,系统管理员可以通过指定facility/priority,把消息发到不同的地方。系统预先定义了10个(mail、news、auth等)facility,8个不同的优先级(alert、debug等)。,这其中存在一个问题,大量的程序使用同样的facildaemon ity(),把日志都保存到一个文件中(messages),即使它们毫无关联,这样也会造成用户很难筛选出自己感兴趣的东西。第二个问题是,大多数的程序无法改变日志配置,只能修改软件的源代码。因此,使用fac

21、ility作为过滤不是一个好办法。最好能够有一些runtime选项,使用这些选项指定日志facility,建立新的facility。,syslog-ng的一个设计原则就是建立更好的消息过滤粒度。syslog-ng能够进行基于内容和优先权/facility的过滤。另一个设计原则是更容易进行不同防火墙网段的信息转发,它支持主机链,即使日志消息经过了许多计算机的转发,也可以找出原发主机地址和整个转发链。最后的一个设计原则就是尽量使配置文件强大和简洁。,2消息路径,一个消息路径是由一个或者多个日志消息源、一个或者多个过滤规则以及一个或者多个日志消息目的组成的。来自某个日志消息源的消息进入syslog-

22、ng,如果消息命中某条规则,syslog-ng就把它发送到对应的日志消息目的。,(1)消息源一些日志消息源驱动器(source driver)组成一个消息源,这些驱动器使用给定的方法收集日志消息。譬如,有的syslog()系统调用使用的AF_UNIX、SOCK_STREAM风格的套接字源驱动器。在配置文件中,你可以使用下面的语法声明一个日志消息源:source source-driver(params);source-driver(params);.;identifier是给定消息源的唯一标志,但是这个标志符不能和系统保留字有冲突。用户可以控制使用哪个驱动器来收集日志消息,因而你需要知道你的系

23、统和syslogd是如何通讯的。,不同平台下syslogd的工作稍有不同,下面介绍一下某些平台中,syslogd是如何工作的:Linux:使用/dev/log的SOCK_STREAM unix套接字 BSD:使用/var/run/log的SOCK_STREAM unix套接字 Solaris(2.5或以下):使用/dev/log的SVR4风格的STREAMS设备 solaris(2.6或以上):除了2.6之前版本使用的STREAMS设备之外,使用了一种新的多线程IPC方法调用门。默认情况下,这个调用门是/etc/syslog_door,由syslogd使用。在syslog-ng中,每个可能的通

24、讯机制都有对应的日志消息源驱动器。例如:如果要打开一个SOCK_DGRAM风格的UNIX套接字进行通信,你就会用到unix-dgram驱动器,同样SOCK_STREAM式的通信需要unix-stream驱动器。,例10.1:Linux中的一个源指令。source src unix-stream(/dev/log);internal();udp(ip()port(514);驱动器可以使用参数,参数有些是必需的,有些是可选的。必需的参数一般在前面。上面的指令中,/dev/log就是必需参数。可用的源驱动器如表10-3所示。,表10-3 日志消息源驱动器列表,下面,将详细介绍配置文件中使用的消息源驱

25、动器和选项。internal()所有syslog-ng内部产生的日志消息都来自这个日志消息源。如果你需要syslog-ng自己定义的警告、错误和提醒信息,就需要在配置文件中加入以下声明:Declaration:internal()如果这个消息源驱动器没有被引用,syslog-ng会向你输出报警信息。例10.2:使用inernal()日志消息源驱动器。source s_local internal();,unix-stream()和unix-dgram()这两个日志消息源驱动器比较相似,都打开AF_UNIX类型的套接字,在套接字上监听日志消息。unix-stream()主要用在Linux,使用S

26、OCK_STREAM参数,是面向连接的,不会造成日志消息的丢失;unix-dgram()用在FreeBSD系统上,使用SOCK_DGRAM参数,是无连接的,如果系统过载,会造成日志消息丢失。在使用面向连接的协议时,为了避免造成拒绝服务攻击,需要对同时接受的连接数量进行闲置,这由max-connections()参数实现。其声明语法如下:Declaration:unix-stream(filename options);unix-dgram(filename options);,tcp()和udp()使用这两个日志消息源驱动器,你可以使用TCP或者UDP协议从网络上接受日志消息。UDP是一种简单

27、的用户数据报协议,使用这种协议可能会发生日志消息的丢失,而且这种协议没有重传机制;TCP是一种面向连接的传输层协议,不会造成日志消息的丢失。这两种消息源驱动器都不需要位置参数。默认情况下,syslog-ng会绑定到0.0.0.0:514,在所有有效的端口上监听。可以使用localip()参数来限制其接受连接的端口。,注意:514端口是rshell使用的端口,因此如果syslog-log和rshell同时使用,你需要为syslog-ng选择另外的端口。其声明语法如下:Declaration:tcp(options);udp(options);,file()通常,内核会把自己的消息送到一个特殊的文

28、件(FreeBSD系统是/dev/kmsg,Linux系统是/proc/kmsg),因此用户需要使用file()日志消息源驱动器来指定这个文件。在Linux中,klogd会读取内核信息,并转发到syslogd进程,klogd在转发之前会对内核消息进行处理,使用/boot/System.map文件中的符号名代替原来的地址。如果你不需要这种功能,可以使用-x参数运行klogd。其声明语法如下:Declaration:file(filename);,pipe()pipe日志消息源驱动器打开一个命名管道,在这个命名管道监听日志消息。在HP-UX系统中,它用于内部日志消息的获得。其声明语法如下:Decl

29、aration:pipe(filename);注意:使用pipe()需要使用mkfifo建立命名管道。例10.6:使用pipe()日志消息源驱动器示例。source s_pipe pipe(/dev/log);,sun-streams()2.51版之前的solaris使用STREAMS API把日志消息发送到syslogd进程,且必须在编译syslog-ng时加入这个特征。新版solaris(2.51版本之后)中,STREAMS使用一个新的IPC调用门来投递日志消息。syslog-ng支持这种IPC机制。,(2)过滤器,在syslog-ng中,过滤器执行日志路由过滤功能。用户可以使用syslo

30、g-ng的内部函数编写布尔表达式,来决定日志信息是否通过。过滤器也都有唯一的标志符,语法如下:fileter expression;表达式中可以包含逻辑操作符(and、or、not)和函数。例10.7:一个搜索来自blurp主机,包含deny的日志消息的过滤指令可表示为:filter f_blurp_deny host(blurp)and match(deny);,syslog-ng的过滤函数如表10-6所示表10-6 syslog-ng的过滤函数及功能说明,(3)日志消息目的地,日志消息目的地驱动器把日志消息从syslog-ng输出到另一个地方:一个文件或者一个网络套接字。Destinati

31、on用于指定与过滤规则的日志消息的去处。和日志消息源类似,日志消息目的地可以包括一些目的驱动器,指定日志的派发方向。用户需要使用如下语法来声明日志消息目的:destination destination-driver(params);destination-driver(params);.;,syslog-ng支持的日志消息目的地驱动器如表10-7所示:,表10-7 日志消息目的地驱动器及功能,下面详细介绍以上日志消息目的驱动器:file()file()是syslog-ng最重要的日志消息目的驱动器之一。使用它,你可以把日志消息定向到一些文件中。在设置日志目的文件时,可以使用宏,从而使用一个简

32、单的file日志消息目的驱动器就可以设置很多目的文件。和PHP/PERL大多数语言使用宏变量一样,宏file()也是以#开头。如果文件所在的目录不存在,则由create_dirs()来决定是否创建这个目录。,file()日志消息目的地驱动器的选项 pipe()syslog-ng通过pipe()日志消息目的地驱动器把日志消息发送到/dev/xconsole之类的命名管道。unix-stream()和unix0dgram()syslog-ng通过这两个日志消息目的驱动器把日志消息发送到一个SOCK_STREAM或者SOCK_DGRAM模式的UNIX套接字。,udp()和tcp()使用TCP或者UD

33、P协议把日志消息送到本地网络上或者internet上的另外的主机。usertty()syslog-ng使用这个日志消息目的驱动器把日志消息送到一个登录用户使用的终端。program()program()驱动器派生(fork)出一个进程,使用给定的参数执行一个特定的程序,然后把日志消息送到这个进程的标准输入设备。,(4)组成日志消息路径,前面我们学习了如何定义消息源、过滤器和消息目的。现在我们要把这些结合起来形成一条完整的指令。凡是来源于指定的消息源,匹配所有指定的过滤器,并送到指定的地址。其语法如下:log source(s1);source(s2);.filter(f1);filter(f2

34、);.destination(d1);destination(d2);.;其中,日志路径中的成员是顺序执行的。,(5)设置选项,用户可以通过设置一些选项来改变syslog-ng的行为。设置选项的语法一般是:options option1(params);option2(params);.;,(6)优化syslog-ng,syslog-ng的默认设置是针对单服务器或者工作站的,而对于一个网络的中央日志主机来说,却远远不够。因此,需要对其进行一些调整和优化。,设置垃圾收集参数syslog-ng有自己的垃圾收集器,而且一旦进入垃圾收集状态就不再接受日志消息,从而造成非连接的传输协议(UDP)的信息丢

35、失。因此,需要对syslog-ng的垃圾收集状态进行控制,用户可以通过以下两个选项来控制其垃圾收集状态。,gc_idle_threshold()这个选项能够设置垃圾收集器在syslog-ng处于空闲状态时的阀值。如果分配的的对象达到这个数字,而且系统处于空闲状态(100msec内没有日志消息到达),syslog-ng就启动垃圾收集器。此时,系统处于空闲状态,因此基本不会造成日志信息的丢失。这个值应该比较小,不过要大于已分配对象的最小值。已分配对象的最小值取决于用户的配置,也可以通过-v命令行参数指定。,gc_busy_threshold()如果syslog-ng正忙于接受日志消息(日志消息的间

36、隔小于100msec),为了防止其占有所有内存,也应该运行垃圾收集器。这个值应该比较高,以便在正常情况下不打断日志消息的接收。,设置输出队列的大小为了防止发送日志的daemon程序阻塞,syslog-ng一直在读取其向内的日志通道。如果输出队列已满,就可能造成日志消息的丢失。因此,设置输出队列的大小非常重要,你可以设置全局输出队列的大小,也可以为每个日志消息驱动器设置输出队列的大小。其语法为:options log_fifo_size(1000);或者:destination d_dmessages file(/var/log/messages log_fifo_size(1000);,输出队

37、列的大小应该合理,这对于大量的日志消息涌来特别重要。如果蜂拥而至的日志信息占据了目标通道的所有带宽,syslog-ng能够把日志消息消息保存到输出队列中,等高峰过去再发出。当然,syslog-ng不能测试你的网络带宽,因此如果目的主机在一个噪音很大的网络上,而且日志流量超过网络带宽,syslog-ng也无能为力。,设置同步(sync)参数syslog-ng一般先对日志消息进行缓存,当达到一定的数量,就写入磁盘。注意,syslog-ng是对每条日志消息分别使用write()系统调用,而不是把所有日志消息一次写入磁盘。,10.2.3 其他日志工具,Linux系统除了常用的日志工具syslog-n外

38、,还有一些专门用于分析日志的工具,如Logcheck、Logwatch和Swatch等。LogcheckLogwatchSwatch,1LogcheckLogcheck用来分析庞大的日志文件,过滤出有潜在安全风险或其他不正常情况的日志项目,然后以电子邮件的形式通知指定的用户。logchek 可以自动地检查日志文件,先把正常的日志信息剔除掉,把一些有问题的日志保留下来,然后把这些信息 email 给系统管理员。Logcheck 被设计成自动运行,定期检查日志文件以发现违反安全规则以及异常的活动。logcheck 用 logtail 程序记住上次已经读过的日志文件的位置,然后从这个位置开始处理新的

39、日志信息。,2logwatch如果要想迅速的得到Linux环境中的日志报告信息,Logwatch是一个很好的工具。一般的Linux系统中可能都默认安装了这个工具,几乎不需要额外的配置就可以简单的用起来。新版本的LogWatch默认有70多种Log的配置信息,如果要对自己的特殊Log做监控,定制也是比较容易的。这里简要介绍基本的做法:(1)创建一个日志文件组。指定自己的Log文件,可以是一个,可以是多个;(2)创建一个新的服务。指明这个服务的名字,指明Log文件来源(来自上一步的定义);(3)创建一个过滤脚本。,3SwatchSWATCH是Todd Atkins开发的用于实时监视日志的PERL程

40、序。Swatch利用指定的触发器监视日志记录,当日志记录符合触发器条件时,swatch会按预先定义好的方式通知系统管理员。Swatch 有两种运行方式:一种可以在检查日志完毕退出,另一种可以连续监视日志中的新信息。,10.3 入侵检测工具及使用,10.3.1 入侵检测概述CIDF早期由美国国防部高级研究计划局赞助研究,现在由CIDF工作组负责,是一个开放组织。CIDF阐述了一个入侵检测系统(IDS)的通用模型。它将一个入侵检测系统分为以下组件:事件产生器(Event generators),用E盒表示;事件分析器(Event analyzers),用A盒表示;响应单元(Responseunit

41、s),用R盒表示;事件数据库(Event databases),用D盒表示。,入侵检测系统的分类,从技术上进行分类,分为基于网络的入侵检测和基于主机入侵检测。基于网络的入侵检测基于主机的入侵检测 基于检测方法的分类,分为特征检测与异常检测 特征检测异常检测统计检测 专家系统,1基于网络的入侵检测和基于主机入侵检测。,(1)基于网络的入侵检测基于网络的入侵检测产品(NIDS)放置在比较重要的网段内,不停地监视网段中的各种数据包。网络入侵检测系统的优点:网络入侵检测系统能够检测那些来自网络的攻击,它能够检测到超过授权的非法访问。一个网络入侵检测系统不需要改变服务器等主机的配置。由于它不会在业务系统

42、的主机中安装额外的软件,从而不会影响这些机器的CPU、I/O与磁盘等资源的使用,不会影响业务系统的性能。,由于网络入侵检测系统不像路由器、防火墙等关键设备方式工作,它不会成为系统中的关键路径。网络入侵检测系统发生故障不会影响正常业务的运行。布署一个网络入侵检测系统的风险比主机入侵检测系统的风险少得多。网络入侵检测系统近年内有向专门的设备发展的趋势,安装这样的一个网络入侵检测系统非常方便,只需将定制的设备接上电源,做很少一些配置,将其连到网络上即可。,网络入侵检测系统的弱点:网络入侵检测系统只检查它直接连接网段的通信,不能检测在不同网段的网络包。网络入侵检测系统为了性能目标通常采用特征检测的方法

43、,它可以检测出普通的一些攻击,而很难实现一些复杂的需要大量计算与分析时间的攻击检测。,网络入侵检测系统可能会将大量的数据传回分析系统中。网络入侵检测系统处理加密的会话过程较困难,目前通过加密通道的攻击尚不多,但随着IPv6的普及,这个问题会越来越突出。,(2)基于主机的入侵检测基于主机的入侵检测产品(HIDS)通常是安装在被重点检测的主机之上,主要是对该主机的网络实时连接以及系统审计日志进行智能分析和判断。如果其中主体活动十分可疑(特征或违反统计规律),入侵检测系统就会采取相应措施。,主机入侵检测系统的优点:主机入侵检测系统对分析“可能的攻击行为”非常有用。主机入侵检测系统通常情况下比网络入侵

44、检测系统误报率要低。主机入侵检测系统可布署在那些不需要广泛的入侵检测、传感器与控制台之间的通信带宽不足的情况下。,主机入侵检测系统的弱点:主机入侵检测系统安装在我们需要保护的设备上。主机入侵检测系统的另一个问题是它依赖于服务器固有的日志与监视能力。全面布署主机入侵检测系统代价较大,企业中很难将所有主机用主机入侵检测系统保护,只能选择部分主机保护。那些未安装主机入侵检测系统的机器将成为保护的盲点,入侵者可利用这些机器达到攻击目标。主机入侵检测系统除了监测自身的主机以外,根本不监测网络上的情况。,2.特征检测与异常检测,(1)特征检测特征检测又称Misuse detection,这一检测假设入侵者

45、活动可以用一种模式来表示,系统的目标是检测主体活动是否符合这些模式。它可以将已有的入侵方法检查出来,但对新的入侵方法无能为力。其难点在于如何设计模式既能够表达“入侵”现象又不会将正常的活动包含进来。特征检测对已知的攻击或入侵的方式作出确定性的描述,形成相应的事件模式。当被审计的事件与已知的入侵事件模式相匹配时,即报警。原理上与专家系统相仿。其检测方法上与计算机病毒的检测方式类似。目前基于对包特征描述的模式匹配应用较为广泛。该方法预报检测的准确率较高,但对于无经验知识的入侵与攻击行为无能为力。,(2)异常检测异常检测的假设是入侵者活动异常于正常主体的活动。根据这一理念建立主体正常活动的“活动简档

46、”,将当前主体的活动状况与“活动简档”相比较,当违反其统计规律时,认为该活动可能是“入侵”行为。异常检测的难题在于如何建立“活动简档”以及如何设计统计算法,从而不把正常的操作作为“入侵”或忽略真正的“入侵”行为。,(3)统计检测统计模型常用异常检测,在统计模型中常用的测量参数包括:审计事件的数量、间隔时间、资源消耗情况等。常用的入侵检测5种统计模型为:操作模型,该模型假设异常可通过测量结果与一些固定指标相比较得到,固定指标可以根据经验值或一段时间内的统计平均得到,举例来说,在短时间内的多次失败的登录很有可能是口令尝试攻击;,方差,计算参数的方差,设定其置信区间,当测量值超过置信区间的范围时表明

47、有可能是异常;多元模型,操作模型的扩展,通过同时分析多个参数实现检测;马尔柯夫过程模型,将每种类型的事件定义为系统状态,用状态转移矩阵来表示状态的变化,当一个事件发生时,或状态矩阵该转移的概率较小则可能是异常事件;,时间序列分析,将事件计数与资源耗用根据时间排成序列,如果一个新事件在该时间发生的概率较低,则该事件可能是入侵。统计方法的最大优点是它可以“学习”用户的使用习惯,从而具有较高检出率与可用性。但是它的“学习”能力也给入侵者以机会通过逐步“训练”使入侵事件符合正常操作的统计规律,从而透过入侵检测系统。,(4)专家系统用专家系统对入侵进行检测,经常是针对有特征入侵行为。所谓的规则,即是知识

48、,不同的系统与设置具有不同的规则,且规则之间往往无通用性。专家系统的建立依赖于知识库的完备性,知识库的完备性又取决于审计记录的完备性与实时性。入侵的特征抽取与表达,是入侵检测专家系统的关键。在系统实现中,将有关入侵的知识转化为if-then结构(也可以是复合结构),条件部分为入侵特征,then部分是系统防范措施。运用专家系统防范有特征入侵行为的有效性完全取决于专家系统知识库的完备性。,常用手工入侵检测方法与命令,在Linux下常用手工入侵检测方法与命令有:1检查/etc/passwd文件中是否有可疑用户2检查/etc/inet.conf和crontab文件是否被修改3检查.rhosts、/et

49、c/hosts.equiv、.forward文件是否被修改 4检查是否有危险的Root Suid程序 5检查系统日志 6.检查是否有可疑进程 7.检查网络连接和开放端口,入侵检测工具Snort及使用技巧,1.snort简介Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。,入侵检测工具Snort及使用技巧,(1)嗅探器所谓的嗅探器模式就是sno

50、rt从网络上读出数据包然后显示在你的控制台上。首先,我们从最基本的用法入手。如果你只要把TCP/IP包头信息打印在屏幕上,只需要输入下面的命令:./snort v使用这个命令将使snort只输出IP和TCP/UDP/ICMP的包头信息。如果要看到应用层的数据,可以使用:./snort vd,这条命令使snort在输出包头信息的同时显示包的数据信息。如果你还要显示数据链路层的信息,就使用下面的命令:./snort vde注意这些选项开关还可以分开写或者任意结合在一块。例如,下面的命令就和./snort vde这一条命令等价:./snort-d-v e,(2)数据包记录器 如果要把所有的包记录到硬

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号