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

上传人:sh****n 文档编号:7428953 上传时间:2020-03-21 格式:PPT 页数:112 大小:283.50KB
返回 下载 相关 举报
《操作系统安全》第十章Linux系统安全增强.ppt_第1页
第1页 / 共112页
《操作系统安全》第十章Linux系统安全增强.ppt_第2页
第2页 / 共112页
《操作系统安全》第十章Linux系统安全增强.ppt_第3页
第3页 / 共112页
点击查看更多>>
资源描述
第10章Linux系统安全增强 第一部分教学组织 一 目的要求1 掌握Linux操作系统安全设置基本技巧 2 了解Linux日志系统 掌握常用审计工具的使用 3 理解入侵检测基本过程并且掌握常用的入侵检测方法和工具 二 工具器材1 RedHatEnterpriseLinux7 0或以上操作系统 2 syslog ng工具或其他日志工具 3 入侵检测工具Snort 第二部分教学内容 本章主要介绍Linux系统安全设置技巧 日志和审计工具的使用和入侵检测工具及使用 从而更有效增强了Linux系统安全 10 1系统安全设置技巧 10 1 1启动和登录安全性设置1 BIOS安全 设定引导口令2 系统帐号的增加 删除和移走3 口令设置及加密文件的保护4 禁止Ctrl Alt Delete三键重启系统5 限制使用su命令6 删减登录信息 1 BIOS安全 设定引导口令 禁止从软盘启动 并且给BIOS加上密码 每次启动的时候都手工检查一下BIOS 这样可以提高系统的安全性 禁止从软盘启动 可以阻止别人用特殊的软盘启动你的计计算机 给BIOS加上密码 可以防止有人改变BIOS的参数 比如 允许从软盘启动或不用输入口令就可以引导计算机 2 系统帐号的增加 删除和移走 1 增加用户增加用户有三个过程 在 etc passwd文件中写入新用户的入口项 为新登录用户建立一个HOME目录 在 etc group中为新用户增加一个入口项 在 etc passwd文件中写入新的入口项时 口令部分可先设置为NOLOGIN 以免有人做为此新用户登录 在修改文件前 应mkdir etc ptmp 以免他人同时修改此文件 新用户一般独立为一个新组 GID号与UID号相同 除非他要加入目前已存在的一个新组 UID号必须和其他人不同 HOME目录一般设置在 usr或 home目录下建立一个以用户登录名为名称的目录做为其主目录 2 删除用户 删除用户与加用户的工作正好相反 首先在 etc passwd和 etc group文件中删除用户的入口项 然后删除用户的HOME目录和所有文件 rm r usr loginname删除整个目录树 如果用户在 usr spool cron crontabs中有crontab文件 也应当删除 3 将用户移到另一个系统 这是一个复杂的问题 不只是拷贝用户的文件和用户在 etc passwd文件中的入口项 首先一个问题是用户的UID和GID可能已经用于另一个系统 若是出现这种情况 必须给要移的用户分配另外的UID和GID 如果改变了用户的UID和GID 则必须搜索该用户的全部文件 将文件的原UID和GID改成新的UID和GID 用find命令可以完成这一修改 find userolduid execchownnewuid find groupoldgid execchgrpnewgid 也许还要为用户移走其它一些文件 usr mail user和 usr spool cron crontabs user 3 口令设置及加密文件的保护 口令的安全是Linux安全的一个基本安全设置 许多人都把所有的东西保存在计算机上 防止别人查看这些信息的方法就是用口令把计算机保护起来 没有什么东西是绝对安全的 与常识相反的是 无法破解的口令是不存在的 只要给足时间和资源 所有的口令都能用社会工程 socialengineering 或强行计算的方法猜出来 通过社会工程或其它方法获得服务器的口令是最简单和最流行的入侵服务器的方法 建议用下面的规则选择有效的口令 1 口令至少要有6个字符 最好包含一个以上的数字或特殊字符 2 口令不能太简单 所谓的简单就是很容易猜出来 也就是用自己的名字 电话号码 生日 职业或者其它个人信息作为口令 3 口令必须是有有效期的 在一段时间之后就要更换口令 4 口令在这种情况下必须作废或者重新设定 如果发现有人试图猜测你的口令 而且已经试过很多次了 安装完Linux系统之后默认的最小口令长度为5 这就是说一个新的用户可以访问服务器 那么他的口令必须多于5字符 但是这样是不够安全的 最好口令的长度能够大于8 可以强制用户使用8个字符以上的口令 编辑 etc login defs 文件 把最小口令长度由5改成8 找到PASS MIN LEN5这一行 改为 PASS MIN LEN8 login defs 是很重要的配置文件 可以在这个文件中设定一些其它的安全策略 比如 口令的有效期 口令文件保护是系统安全设置的一个非常重要内容 系统管理员应更改其属性 防止非授权用户获取口令文件 对于UNIX系统 口令文件主要有用户和组账号口令文件 用于保持所有用户的口令 对于LINUX系统 通过chattr命令可以改变口令文件的属性 如 chattr i etc passwd chattr i etc shadow chattr i etc group chattr 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 rnow 一行注释掉 2 执行 initq 这命令使上面修改后文件生效 然后重新设置 etc rc d init d 目录下所有文件的许可权限 运行如下命令 chmod R700 etc rc d init d 5 限制使用su命令 禁止任何人使用su命令su命令 SubstituteUser 替代用户 可以使你成为系统的现有用户 如果不希望别人使用su进入根帐户 或者对某些用户限制使用 su 命令 则在 etc pam d 目录的 su 配置文件顶部增加如下两行代码 authsufficient lib security pam rootok sodebugauthrequired lib security Pam wheel sogroup wheel意思是 只有 wheel 组的成员可以用su命令 其中还包括了日志 你可以在wheel组中添加允许使用该命令的用户 例如 希望用户admin能够使用su命令 可以运行如下命令 usermod G10admin将用户加入到wheel组 即可使用su命令 6 删减登录信息 默认情况下 登录提示信息包括Linux发行版 内核版本名和服务器主机名等 对于一台安全性要求较高的机器来说这样泄漏了过多的信息 可以编辑 etc rc d rc local将输出系统信息的如下行注释掉 Thiswilloverwrite etc issueateveryboot So makeanychangesyou wanttomaketo etc issuehereoryouwilllosethemwhenyoureboot 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 限制网络访问 1 NFS访问如果你使用NFS网络文件系统服务 应该确保你的 etc exports具有最严格的访问权限设置 也就是意味着不要使用任何通配符 不允许root写权限并且只能安装为只读文件系统 编辑文件 etc exports并加入如下两行 dir to ro root squash dir to ro root squash dir to export是你想输出的目录 是登录这个目录的机器名 ro意味着mount成只读系统 root squash禁止root写入该目录 为了使改动生效 运行如下命令 usr sbin exportfs a 2 Inetd设置 首先要确认 etc inetd conf的所有者是root 且文件权限设置为600 设置完成后 可以使用 stat 命令进行检查 chmod600 etc inetd conf然后 编辑 etc inetd conf禁止以下服务 ftptelnetshellloginexectalkntalkimappop 2pop 3fingerauth如果安装了ssh scp 也可以禁止掉Telnet FTP 为了使改变生效 运行如下命令 killall HUPinetd 默认情况下 多数Linux系统允许所有的请求 而用TCP WRAPPERS增强系统安全性是举手之劳 可以修改 etc hosts deny和 etc hosts allow来增加访问限制 例如 将 etc hosts deny设为 ALL ALL 可以默认拒绝所有访问 然后在 etc hosts allow文件中添加允许的访问 例如 sshd 192 168 1 10 表示允许IP地址192 168 1 10和主机名允许通过SSH连接 配置完成后 可以用tcpdchk检查 tcpdchktcpchk是TCP Wrapper配置检查工具 它检查tcpwrapper配置并报告所有发现的潜在 存在的问题 3 登录终端设置 etc securetty文件指定了允许root登录的tty设备 由 bin login程序读取 其格式是一个被允许的名字列表 你可以编辑 etc securetty且注释掉如下的行 tty2 tty3 tty4 tty5 tty6这时 root仅可在tty1终端登录 限制远程登录时使用root帐号 4 避免显示系统和版本信息 如果希望远程登录用户看不到系统和版本信息 可以通过以下操作改变 etc inetd conf文件 telnetstreamtcpnowaitroot usr sbin tcpdin telnetd h加 h表示telnet不显示系统信息 而仅仅显示 login 2 防止攻击 1 阻止ping如果没人能ping通你的系统 安全性自然增加了 为此 可以在 etc rc d rc local文件中增加如下一行 echo1 proc sys net ipv4 icmp echo ignore all 2 防止IP欺骗编辑host conf文件并增加如下几行来防止IP欺骗攻击 orderbind hostsmultioffnospoofon 3 防止DoS攻击对系统所有的用户设置资源限制可以防止DoS类型攻击 如最大进程数和内存使用数量等 例如 可以在 etc security limits conf中添加如下几行 hardcore0 hardrss5000 hardnproc20然后必须编辑 etc pam d login文件检查下面一行是否存在 sessionrequired lib security pam limits so上面的命令禁止调试文件 限制进程数为20 并且限制内存使用为5MB 10 1 3安装系统安全补丁包 1 安装RedHatLinux系统补丁2 安装Solaris系统补丁 10 2日志和审计工具的使用 记录重要的系统事件是系统安全的一个重要因素 多数Linux系统能够运行三个不同的日志子系统 使用wtmp utmp文件的连接时间日志 使用acct或pacct文件的进程统计 经过syslog实施的错误日志 本节介绍这些日志子系统以及允许系统或安全管理员监测 审计和维护日志的命令和程序 另外重点讲述了syslog ng工具及其使用 10 2 1UNIX的日志系统 在多数UNIX系统中 有三个主要的日志子系统 1 连接时间日志由多个程序执行 把记录写入到 var log wtmp 或 var adm wtmp 和 var run utmp 可以是 etc utmp或 var adm utmp login等程序更新wtmp和utmp文件 使系统管理员能跟踪用户在何时登录进入系统 2 进程统计由系统内核执行 当一个进程终止时 为每个进程往进程统计文件 pacct或acct 中写一个记录 进程统计的主要目的是为系统中的基本服务提供命令使用统计 3 错误日志由syslogd执行 各种系统守护程序 用户程序和内核通过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 2syslog ng工具及使用 1 syslog ng简介在UNIX系统的维护中 经常会忽略系统事件的处理 经常检查系统日志对于保持系统的安全和正常运行是至关重要的 但是 系统日志中有太多的噪音 一些不是很重要的信息会掩盖重要的信息 目前的工具很难识别出系统管理者感兴趣的信息 在UNIX系统中 系统管理员可以通过指定facility priority 把消息发到不同的地方 系统预先定义了10个 mail news auth等 facility 8个不同的优先级 alert debug等 这其中存在一个问题 大量的程序使用同样的facildaemonity 把日志都保存到一个文件中 messages 即使它们毫无关联 这样也会造成用户很难筛选出自己感兴趣的东西 第二个问题是 大多数的程序无法改变日志配置 只能修改软件的源代码 因此 使用facility作为过滤不是一个好办法 最好能够有一些runtime选项 使用这些选项指定日志facility 建立新的facility syslog ng的一个设计原则就是建立更好的消息过滤粒度 syslog ng能够进行基于内容和优先权 facility的过滤 另一个设计原则是更容易进行不同防火墙网段的信息转发 它支持主机链 即使日志消息经过了许多计算机的转发 也可以找出原发主机地址和整个转发链 最后的一个设计原则就是尽量使配置文件强大和简洁 2 消息路径 一个消息路径是由一个或者多个日志消息源 一个或者多个过滤规则以及一个或者多个日志消息目的组成的 来自某个日志消息源的消息进入syslog ng 如果消息命中某条规则 syslog ng就把它发送到对应的日志消息目的 1 消息源一些日志消息源驱动器 sourcedriver 组成一个消息源 这些驱动器使用给定的方法收集日志消息 譬如 有的syslog 系统调用使用的AF UNIX SOCK STREAM风格的套接字源驱动器 在配置文件中 你可以使用下面的语法声明一个日志消息源 source source driver params source driver params identifier是给定消息源的唯一标志 但是这个标志符不能和系统保留字有冲突 用户可以控制使用哪个驱动器来收集日志消息 因而你需要知道你的系统和syslogd是如何通讯的 不同平台下syslogd的工作稍有不同 下面介绍一下某些平台中 syslogd是如何工作的 Linux 使用 dev log的SOCK STREAMunix套接字 BSD 使用 var run log的SOCK STREAMunix套接字 Solaris 2 5或以下 使用 dev log的SVR4风格的STREAMS设备 solaris 2 6或以上 除了2 6之前版本使用的STREAMS设备之外 使用了一种新的多线程IPC方法调用门 默认情况下 这个调用门是 etc syslog door 由syslogd使用 在syslog ng中 每个可能的通讯机制都有对应的日志消息源驱动器 例如 如果要打开一个SOCK DGRAM风格的UNIX套接字进行通信 你就会用到unix dgram驱动器 同样SOCK STREAM式的通信需要unix stream驱动器 例10 1 Linux中的一个源指令 sourcesrc unix stream dev log internal udp ip 0 0 0 0 port 514 驱动器可以使用参数 参数有些是必需的 有些是可选的 必需的参数一般在前面 上面的指令中 dev log就是必需参数 可用的源驱动器如表10 3所示 表10 3日志消息源驱动器列表 下面 将详细介绍配置文件中使用的消息源驱动器和选项 internal 所有syslog ng内部产生的日志消息都来自这个日志消息源 如果你需要syslog ng自己定义的警告 错误和提醒信息 就需要在配置文件中加入以下声明 Declaration internal 如果这个消息源驱动器没有被引用 syslog ng会向你输出报警信息 例10 2 使用inernal 日志消息源驱动器 sources local internal unix stream 和unix dgram 这两个日志消息源驱动器比较相似 都打开AF UNIX类型的套接字 在套接字上监听日志消息 unix stream 主要用在Linux 使用SOCK STREAM参数 是面向连接的 不会造成日志消息的丢失 unix dgram 用在FreeBSD系统上 使用SOCK DGRAM参数 是无连接的 如果系统过载 会造成日志消息丢失 在使用面向连接的协议时 为了避免造成拒绝服务攻击 需要对同时接受的连接数量进行闲置 这由max connections 参数实现 其声明语法如下 Declaration unix stream filename options unix dgram filename options tcp 和udp 使用这两个日志消息源驱动器 你可以使用TCP或者UDP协议从网络上接受日志消息 UDP是一种简单的用户数据报协议 使用这种协议可能会发生日志消息的丢失 而且这种协议没有重传机制 TCP是一种面向连接的传输层协议 不会造成日志消息的丢失 这两种消息源驱动器都不需要位置参数 默认情况下 syslog ng会绑定到0 0 0 0 514 在所有有效的端口上监听 可以使用localip 参数来限制其接受连接的端口 注意 514端口是rshell使用的端口 因此如果syslog log和rshell同时使用 你需要为syslog ng选择另外的端口 其声明语法如下 Declaration tcp options udp options file 通常 内核会把自己的消息送到一个特殊的文件 FreeBSD系统是 dev kmsg Linux系统是 proc kmsg 因此用户需要使用file 日志消息源驱动器来指定这个文件 在Linux中 klogd会读取内核信息 并转发到syslogd进程 klogd在转发之前会对内核消息进行处理 使用 boot System map文件中的符号名代替原来的地址 如果你不需要这种功能 可以使用 x参数运行klogd 其声明语法如下 Declaration file filename pipe pipe日志消息源驱动器打开一个命名管道 在这个命名管道监听日志消息 在HP UX系统中 它用于内部日志消息的获得 其声明语法如下 Declaration pipe filename 注意 使用pipe 需要使用mkfifo建立命名管道 例10 6 使用pipe 日志消息源驱动器示例 sources pipe pipe dev log sun streams 2 51版之前的solaris使用STREAMSAPI把日志消息发送到syslogd进程 且必须在编译syslog ng时加入这个特征 新版solaris 2 51版本之后 中 STREAMS使用一个新的IPC调用门来投递日志消息 syslog ng支持这种IPC机制 2 过滤器 在syslog ng中 过滤器执行日志路由过滤功能 用户可以使用syslog ng的内部函数编写布尔表达式 来决定日志信息是否通过 过滤器也都有唯一的标志符 语法如下 fileter expression 表达式中可以包含逻辑操作符 and or not 和函数 例10 7 一个搜索来自blurp主机 包含deny的日志消息的过滤指令可表示为 filterf blurp deny host blurp andmatch deny syslog ng的过滤函数如表10 6所示表10 6syslog ng的过滤函数及功能说明 3 日志消息目的地 日志消息目的地驱动器把日志消息从syslog ng输出到另一个地方 一个文件或者一个网络套接字 Destination用于指定与过滤规则的日志消息的去处 和日志消息源类似 日志消息目的地可以包括一些目的驱动器 指定日志的派发方向 用户需要使用如下语法来声明日志消息目的 destination destination driver params destination driver params syslog ng支持的日志消息目的地驱动器如表10 7所示 表10 7日志消息目的地驱动器及功能 下面详细介绍以上日志消息目的驱动器 file file 是syslog ng最重要的日志消息目的驱动器之一 使用它 你可以把日志消息定向到一些文件中 在设置日志目的文件时 可以使用宏 从而使用一个简单的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或者UDP协议把日志消息送到本地网络上或者internet上的另外的主机 usertty syslog ng使用这个日志消息目的驱动器把日志消息送到一个登录用户使用的终端 program program 驱动器派生 fork 出一个进程 使用给定的参数执行一个特定的程序 然后把日志消息送到这个进程的标准输入设备 4 组成日志消息路径 前面我们学习了如何定义消息源 过滤器和消息目的 现在我们要把这些结合起来形成一条完整的指令 凡是来源于指定的消息源 匹配所有指定的过滤器 并送到指定的地址 其语法如下 log source s1 source s2 filter f1 filter f2 destination d1 destination d2 其中 日志路径中的成员是顺序执行的 5 设置选项 用户可以通过设置一些选项来改变syslog ng的行为 设置选项的语法一般是 options option1 params option2 params 6 优化syslog ng syslog ng的默认设置是针对单服务器或者工作站的 而对于一个网络的中央日志主机来说 却远远不够 因此 需要对其进行一些调整和优化 设置垃圾收集参数syslog ng有自己的垃圾收集器 而且一旦进入垃圾收集状态就不再接受日志消息 从而造成非连接的传输协议 UDP 的信息丢失 因此 需要对syslog ng的垃圾收集状态进行控制 用户可以通过以下两个选项来控制其垃圾收集状态 gc idle threshold 这个选项能够设置垃圾收集器在syslog ng处于空闲状态时的阀值 如果分配的的对象达到这个数字 而且系统处于空闲状态 100msec内没有日志消息到达 syslog ng就启动垃圾收集器 此时 系统处于空闲状态 因此基本不会造成日志信息的丢失 这个值应该比较小 不过要大于已分配对象的最小值 已分配对象的最小值取决于用户的配置 也可以通过 v命令行参数指定 gc busy threshold 如果syslog ng正忙于接受日志消息 日志消息的间隔小于100msec 为了防止其占有所有内存 也应该运行垃圾收集器 这个值应该比较高 以便在正常情况下不打断日志消息的接收 设置输出队列的大小为了防止发送日志的daemon程序阻塞 syslog ng一直在读取其向内的日志通道 如果输出队列已满 就可能造成日志消息的丢失 因此 设置输出队列的大小非常重要 你可以设置全局输出队列的大小 也可以为每个日志消息驱动器设置输出队列的大小 其语法为 options log fifo size 1000 或者 destinationd dmessages file var log messages log fifo size 1000 输出队列的大小应该合理 这对于大量的日志消息涌来特别重要 如果蜂拥而至的日志信息占据了目标通道的所有带宽 syslog ng能够把日志消息消息保存到输出队列中 等高峰过去再发出 当然 syslog ng不能测试你的网络带宽 因此如果目的主机在一个噪音很大的网络上 而且日志流量超过网络带宽 syslog ng也无能为力 设置同步 sync 参数syslog ng一般先对日志消息进行缓存 当达到一定的数量 就写入磁盘 注意 syslog ng是对每条日志消息分别使用write 系统调用 而不是把所有日志消息一次写入磁盘 10 2 3其他日志工具 Linux系统除了常用的日志工具syslog n外 还有一些专门用于分析日志的工具 如Logcheck Logwatch和Swatch等 LogcheckLogwatchSwatch 1 LogcheckLogcheck用来分析庞大的日志文件 过滤出有潜在安全风险或其他不正常情况的日志项目 然后以电子邮件的形式通知指定的用户 logchek可以自动地检查日志文件 先把正常的日志信息剔除掉 把一些有问题的日志保留下来 然后把这些信息email给系统管理员 Logcheck被设计成自动运行 定期检查日志文件以发现违反安全规则以及异常的活动 logcheck用logtail程序记住上次已经读过的日志文件的位置 然后从这个位置开始处理新的日志信息 2 logwatch如果要想迅速的得到Linux环境中的日志报告信息 Logwatch是一个很好的工具 一般的Linux系统中可能都默认安装了这个工具 几乎不需要额外的配置就可以简单的用起来 新版本的LogWatch默认有70多种Log的配置信息 如果要对自己的特殊Log做监控 定制也是比较容易的 这里简要介绍基本的做法 1 创建一个日志文件组 指定自己的Log文件 可以是一个 可以是多个 2 创建一个新的服务 指明这个服务的名字 指明Log文件来源 来自上一步的定义 3 创建一个过滤脚本 3 SwatchSWATCH是ToddAtkins开发的用于实时监视日志的PERL程序 Swatch利用指定的触发器监视日志记录 当日志记录符合触发器条件时 swatch会按预先定义好的方式通知系统管理员 Swatch有两种运行方式 一种可以在检查日志完毕退出 另一种可以连续监视日志中的新信息 10 3入侵检测工具及使用 10 3 1入侵检测概述CIDF早期由美国国防部高级研究计划局赞助研究 现在由CIDF工作组负责 是一个开放组织 CIDF阐述了一个入侵检测系统 IDS 的通用模型 它将一个入侵检测系统分为以下组件 事件产生器 Eventgenerators 用E盒表示 事件分析器 Eventanalyzers 用A盒表示 响应单元 Responseunits 用R盒表示 事件数据库 Eventdatabases 用D盒表示 10 3 2入侵检测系统的分类 从技术上进行分类 分为基于网络的入侵检测和基于主机入侵检测 基于网络的入侵检测基于主机的入侵检测基于检测方法的分类 分为特征检测与异常检测特征检测异常检测统计检测专家系统 1 基于网络的入侵检测和基于主机入侵检测 1 基于网络的入侵检测基于网络的入侵检测产品 NIDS 放置在比较重要的网段内 不停地监视网段中的各种数据包 网络入侵检测系统的优点 网络入侵检测系统能够检测那些来自网络的攻击 它能够检测到超过授权的非法访问 一个网络入侵检测系统不需要改变服务器等主机的配置 由于它不会在业务系统的主机中安装额外的软件 从而不会影响这些机器的CPU I O与磁盘等资源的使用 不会影响业务系统的性能 由于网络入侵检测系统不像路由器 防火墙等关键设备方式工作 它不会成为系统中的关键路径 网络入侵检测系统发生故障不会影响正常业务的运行 布署一个网络入侵检测系统的风险比主机入侵检测系统的风险少得多 网络入侵检测系统近年内有向专门的设备发展的趋势 安装这样的一个网络入侵检测系统非常方便 只需将定制的设备接上电源 做很少一些配置 将其连到网络上即可 网络入侵检测系统的弱点 网络入侵检测系统只检查它直接连接网段的通信 不能检测在不同网段的网络包 网络入侵检测系统为了性能目标通常采用特征检测的方法 它可以检测出普通的一些攻击 而很难实现一些复杂的需要大量计算与分析时间的攻击检测 网络入侵检测系统可能会将大量的数据传回分析系统中 网络入侵检测系统处理加密的会话过程较困难 目前通过加密通道的攻击尚不多 但随着IPv6的普及 这个问题会越来越突出 2 基于主机的入侵检测基于主机的入侵检测产品 HIDS 通常是安装在被重点检测的主机之上 主要是对该主机的网络实时连接以及系统审计日志进行智能分析和判断 如果其中主体活动十分可疑 特征或违反统计规律 入侵检测系统就会采取相应措施 主机入侵检测系统的优点 主机入侵检测系统对分析 可能的攻击行为 非常有用 主机入侵检测系统通常情况下比网络入侵检测系统误报率要低 主机入侵检测系统可布署在那些不需要广泛的入侵检测 传感器与控制台之间的通信带宽不足的情况下 主机入侵检测系统的弱点 主机入侵检测系统安装在我们需要保护的设备上 主机入侵检测系统的另一个问题是它依赖于服务器固有的日志与监视能力 全面布署主机入侵检测系统代价较大 企业中很难将所有主机用主机入侵检测系统保护 只能选择部分主机保护 那些未安装主机入侵检测系统的机器将成为保护的盲点 入侵者可利用这些机器达到攻击目标 主机入侵检测系统除了监测自身的主机以外 根本不监测网络上的情况 2 特征检测与异常检测 1 特征检测特征检测又称Misusedetection 这一检测假设入侵者活动可以用一种模式来表示 系统的目标是检测主体活动是否符合这些模式 它可以将已有的入侵方法检查出来 但对新的入侵方法无能为力 其难点在于如何设计模式既能够表达 入侵 现象又不会将正常的活动包含进来 特征检测对已知的攻击或入侵的方式作出确定性的描述 形成相应的事件模式 当被审计的事件与已知的入侵事件模式相匹配时 即报警 原理上与专家系统相仿 其检测方法上与计算机病毒的检测方式类似 目前基于对包特征描述的模式匹配应用较为广泛 该方法预报检测的准确率较高 但对于无经验知识的入侵与攻击行为无能为力 2 异常检测异常检测的假设是入侵者活动异常于正常主体的活动 根据这一理念建立主体正常活动的 活动简档 将当前主体的活动状况与 活动简档 相比较 当违反其统计规律时 认为该活动可能是 入侵 行为 异常检测的难题在于如何建立 活动简档 以及如何设计统计算法 从而不把正常的操作作为 入侵 或忽略真正的 入侵 行为 3 统计检测统计模型常用异常检测 在统计模型中常用的测量参数包括 审计事件的数量 间隔时间 资源消耗情况等 常用的入侵检测5种统计模型为 操作模型 该模型假设异常可通过测量结果与一些固定指标相比较得到 固定指标可以根据经验值或一段时间内的统计平均得到 举例来说 在短时间内的多次失败的登录很有可能是口令尝试攻击 方差 计算参数的方差 设定其置信区间 当测量值超过置信区间的范围时表明有可能是异常 多元模型 操作模型的扩展 通过同时分析多个参数实现检测 马尔柯夫过程模型 将每种类型的事件定义为系统状态 用状态转移矩阵来表示状态的变化 当一个事件发生时 或状态矩阵该转移的概率较小则可能是异常事件 时间序列分析 将事件计数与资源耗用根据时间排成序列 如果一个新事件在该时间发生的概率较低 则该事件可能是入侵 统计方法的最大优点是它可以 学习 用户的使用习惯 从而具有较高检出率与可用性 但是它的 学习 能力也给入侵者以机会通过逐步 训练 使入侵事件符合正常操作的统计规律 从而透过入侵检测系统 4 专家系统用专家系统对入侵进行检测 经常是针对有特征入侵行为 所谓的规则 即是知识 不同的系统与设置具有不同的规则 且规则之间往往无通用性 专家系统的建立依赖于知识库的完备性 知识库的完备性又取决于审计记录的完备性与实时性 入侵的特征抽取与表达 是入侵检测专家系统的关键 在系统实现中 将有关入侵的知识转化为if then结构 也可以是复合结构 条件部分为入侵特征 then部分是系统防范措施 运用专家系统防范有特征入侵行为的有效性完全取决于专家系统知识库的完备性 10 3 3常用手工入侵检测方法与命令 在Linux下常用手工入侵检测方法与命令有 1 检查 etc passwd文件中是否有可疑用户2 检查 etc inet conf和crontab文件是否被修改3 检查 rhosts etc hosts equiv forward文件是否被修改4 检查是否有危险的RootSuid程序5 检查系统日志6 检查是否有可疑进程7 检查网络连接和开放端口 10 3 4入侵检测工具Snort及使用技巧 1 snort简介Snort有三种工作模式 嗅探器 数据包记录器 网络入侵检测系统 嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上 数据包记录器模式把数据包记录到硬盘上 网路入侵检测模式是最复杂的 而且是可配置的 我们可以让snort分析网络数据流以匹配用户定义的一些规则 并根据检测结果采取一定的动作 10 3 4入侵检测工具Snort及使用技巧 1 嗅探器所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上 首先 我们从最基本的用法入手 如果你只要把TCP IP包头信息打印在屏幕上 只需要输入下面的命令 snort v使用这个命令将使snort只输出IP和TCP UDP ICMP的包头信息 如果要看到应用层的数据 可以使用 snort vd 这条命令使snort在输出包头信息的同时显示包的数据信息 如果你还要显示数据链路层的信息 就使用下面的命令 snort vde注意这些选项开关还可以分开写或者任意结合在一块 例如 下面的命令就和 snort vde这一条命令等价 snort d v e 2 数据包记录器如果要把所有的包记录到硬盘上 需要指定一个日志目录 snort就会自动记录数据包 snort dev l log当然 log目录必须存在 否则snort就会报告错误信息并退出 当snort在这种模式下运行 它会记录所有看到的包将其放到一个目录中 这个目录以数据包目的主机的IP地址命名 例如 192 168 10 1 如果只指定了 l命令开关 而没有设置目录名 snort有时会使用远程主机的IP地址作为目录 有时会使用本地主机IP地址作为目录名 为了只对本地网络进行日志 需要给出本地网络 snort dev l log h192 168 1 0 24这个命令告诉我们 snort把进入C类网络192 168 1的所有包的数据链路 TCP IP以及应用层的数据记录到目录 log中 3 网络入侵检测系统snort最重要的用途还是作为网络入侵检测系统 NIDS 使用下面命令行可以启动这种模式 snort dev l log h192 168 1 0 24 csnort conf这里的snort conf是规则集文件 snort会对每个包和规则集进行匹配 发现这样的包就采取相应的行动 如果不指定输出目录 snort就输出到 var log snort目录 注意 如果长期使用snort作为自己的入侵检测系统 最好不要使用 v选项 因为使用这个选项 使snort向屏幕上输出一些信息 会大大降低snort的处理速度 从而在向显示器输出的过程中丢弃一些包 10 3 4入侵检测工具Snort及使用技巧 2 编写snort规则基础snort使用一种简单的 轻量级的规则描述语言 这种语言灵活而强大 在开发snort规则时要记住几个简单的原则 大多数snort规则都写在一个单行上 或者在多行之间的行尾用 分隔 Snort规则分成两个逻辑部分 规则头和规则选项 规则头包含规则的动作 协议 源和目标ip地址与网络掩码以及源和目标端口信息 规则选项部分包含报警消息内容和要检查的包的具体部分 下面是一个规则范例 alerttcpanyany 192 168 1 0 24111 content 000186a5 msg mountdaccess 第一个括号前的部分是规则头 ruleheader 包含的括号内的部分是规则选项 ruleoptions 规则选项部分中冒号前的单词称为选项关键字 optionkeywords 注意 不是所有规则都必须包含规则选项部分 选项部分只是为了使对要收集或报警 或丢弃的包的定义更加严格 组成一个规则的所有元素对于指定的要采取的行动都必须为真 当多个元素放在一起时 可以认为它们组成了一个逻辑与 AND 语句 同时 snort规则库文件中的不同规则可以认为组成了一个大的逻辑或 OR 语句 1 规则头规则的头包含了定义一个包的who where和what信息 以及当满足规则定义的所有属性的包出现时要采取的行动 规则动作规则的第一项是 规则动作 ruleaction 规则动作 告诉snort在发现匹配规则的包时要干什么 在snort中有五种动作 alert log pass activate和dynamic Alert 使用选择的报警方法生成一个警报 然后记录 log 数据包 Log 记录数据包 Pass 丢弃 忽略 数据包 activate 报警并且激活另一条动态 dynamic 规则 dynamic 保持空闲直到被一条activate规则激活 被激活后就作为一条log规则执行 用户可以定义自己的规则类型并且附加一条或者更多的输出模块给它 然后就可以使用这些规则类型作为snort规则的一个动作 下面这个例子创建一条规则 记录到tcpdump ruletypesuspicious typelogoutputlog tcpdump suspicious log 下面这个例子创建一条规则 记录到系统日志和MySQL数据库ruletyperedalert typealertoutputalert syslog LOG AUTHLOG ALERToutputdatabase log mysql user snortdbname snorthost localhost 协议规则的第二部分是协议 Snort当前分析可疑包的ip协议有四种 tcp udp icmp和ip 将来可能会更多 例如ARP IGRP GRE OSPF RIP IPX等 Ip地址规则头的第三部分处理一个给定规则的ip地址和端口号信息 关键字 any 可以被用来定义任何地址 Snort没有提供根据ip地址查询域名的机制 地址就是由直接的数字型ip地址和一个cidr块组成的 Cidr块指示作用在规则地址和需要检查的进入的任何包的网络掩码 其中 24表示c类网络 16表示b类网络 32表示一个特定的机器的地址 例如 192 168 1 0 24代表从192 168 1 1到192 168 1 255的地址块 端口号可以用几种方法表示端口号 包括 any 端口 静态端口定义 范围 以及通过否定操作符 any 端口是一个通配符 表示任何端口 静态端口定义表示一个单个端口号 例如111表示portmapper 23表示telnet 80表示http等等 端口范围用范围操作符 表示 范围操作符可以有数种使用方法 例如 logudpanyany 192 168 1 0 241 1024记录来自任何端口的 目标端口范围在1到1024的udp流 logtcpanyany 192 168 1 0 24 6000记录来自任何端口 目标端口小于等于6000的tcp流 logtcpany 1024 192 168 1 0 24500 记录来自任何小于等于1024的特权端口 目标端口大于等于500的tcp流 方向操作符方向操作符 表示规则所施加的流的方向 方向操作符左边的ip地址和端口号被认为是流来自的源主机 方向操作符右边的ip地址和端口信息是目标主机 另外 还有一个双向操作符 双向操作符告诉snort把地址 端口号对既作为源 又作为目标来考虑 这对于记录 分析双向对话很方便 例如telnet或者pop3会话 用来记录一个telnet会话的两侧的流的范例如下 log 192 168 1 0 24any192 168 1 0 2423 激活和动态规则激活和动态 Activateanddynamic 规则对给了snort更强大的能力 现在当这条规则适用于一些数据包时 可以用一条规则来激活另一条规则 Activate规则除了包含一个选择域 activates外 其他和alert规则一样 Dynamic规则除了包含一个不同的选择域 activated by外 其他和log规则一样 dynamic规则还包含一个count域 值得注意的是 Activate规则除了类似一条alert规则外 当一个特定的网络事件发生时还能告诉snort加载一条规则 Dynamic规则和log规则类似 但它是当一个activate规则发生后被动态加载的 例如 Activatetcp HOME NETany HOME NET143 flags PA content E8C0FFFFFF bin activates 1 msg IMAPbufferoverflow dynamictcp HOME NETany HOME NET143 activated by 1 count 50 2 规则选项规则选项组成了snort入侵检测引擎的核心 既容易使用 还很强大 灵活 所有的snort规则选项用分号 隔开 规则选项关键字 OptionKeyword 和它们的参数 OptionArgument 用冒号 分开 10 3 4入侵检测工具Snort及使用技巧 3 规则高级概念 1 Includesinclude允许由命令行指定的规则文件包含其他的规则文件 格式 include 注意在该行结尾处没有分号 被包含的文件会把任何预先定义的变量值替换为自己的变量引用 参见以下变量 Variables 介绍关于在SNORT规则文件中定义和使用变量 10 3 4入侵检测工具Snort及使用技巧 2 Variables在snort conf配置文件中 可以使用var来定义变量 其指令格式为 var 例如 varMY NET192 168 1 0 24alerttcpanyany 操作符之后定义变量 和 可用于变量修改操作符 10 3 4入侵检测工具Snort及使用技巧 3 ConfigSnort的配置文件是 etc snort snort conf 保护进程是 etc rc d init d snortd Snort的很多配置和命令行选项都可以在配置文件中设置和使用 其格式为 config 本章小结 本章系统介绍了Linux系统平台的安全增强技术 包括系统启动何登录安全性设置 网络访问安全设置 安装系统安全补丁等技术 然后阐述了Linux系统平台的安全增强方法日志和审计工具的使用方法 并以syslog ng工具为例 说明安全增强工具的实际应用 最后 介绍了入侵检测基本理论和方法 并以手工检测和工具检测为例说明了Linux系统安全增强技术 实验 Linux系统安全增强综合实验 实验目的 通过本实验 掌握Linux系统安全增强的一些基本操作 并掌握如何通过重要安全设置来进行防范系统安全 实验准备 安装有Linux7 0以上服务器 实验步骤 1 禁止访问重要文件对于系统中的某些关键性文件 如inetd conf services和lilo conf等可修改其属性 防止意外修改和普通用户查看 首先改变文件属性为600 chmod600 etc inetd conf 实验 Linux系统安全增强综合实验 保证文件的属主为root 然后还可以将其设置为不能改变 chattr i etc inetd conf这样 对该文件的任何改变都将被禁止 只有root重新设置复位标志后才能进行修改 chattr i etc inetd conf2 禁止不必要的SUID程序SUID可以使普通用户以root权限执行某个程序 因此应严格控制系统中的此类程序 找出root所属的带s位的程序 find typef perm 0400 o perm 02000 print less禁止其中不必要的程序 chmoda sprogram name 实验 Linux系统安全增强综合实验 3 为LILO增加开机口令在 etc lilo conf文件中增加选项 从而使LILO启动时要求输入口令 以加强系统的安全性 具体设置如下 boot dev hadmap boot mapinstall boot boot btime out 60 等等一分钟prompdefault linuxpassword 实验 Linux系统安全增强综合实验 口令设置image boot vmlinuz 2 2 14 12label linuxinitrd boot initrd 2 2 14 12 imgroot dev hda6read only此时需要注意 由于在LILO中口令是以明码方式存放的 因此还需要将lilo conf的文件属性设置为只有root可以读写 chmod600 etc lilo conf当然 还需要进行如下设置 使lilo conf的修改生效 sbin lilo v 实验 Linux系统安全增强综合实验 4 设置口令最小长度和最短使用时间口令是系统中认证用户的主要手段 系统安装时默认的口令最小长度通常为5 但为保证口令不易被猜测攻击 可增加口令的最小长度至少为8 为此 需修改文件 etc login defs中的参数PASS MIN LEN 同时应限制口令的使用时间 保证定期更换口令 建议修改参数PASS MIN DAYS 5 限制远程访问 在Linux中可通过 etc hosts allow和 etc hosts deny这两个文件允许和禁止远程主机本地服务的访问 通常的做法是 1 编辑hosts deny文件 加入下列命令行 DenyaccestoeveryoneALL ALL ALL则所有服务对所有外部主机禁止 除非由hosts allow文件指明允许 2 编辑hosts allow文件 可加入下列行 Justanexampleftp 则将允许IP地址为202 84 17 11和主机名为的机器作为Client访问FTP服务 3 设置完成后 可用tcpdchk检查设置是否正确 实验 Linux系统安全增强综合实验 6 用户超时注销如果用户离开时忘记注销帐户 则可能给系统安全带来隐患 可修改 etc profile文件 保证帐户在一段时间没有操作后 自动进行系统注销 编辑文件 etc profile 在 HISTFILESIZE 行的下一行增加如
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!