科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道使用Snort搭建安全的Linux服务器

使用Snort搭建安全的Linux服务器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Snort是一个著名的免费而又功能强大的轻量级入侵检测系统,具有使用简便、轻量级以及封堵效率高等特点,本文从实用操作的角度介绍了如何用Snort保证上网主机的安全。

作者:李洋 2005年4月11日

关键字: 服务器 Linux Snort

  • 评论
  • 分享微博
  • 分享邮件
    ZDNetChina服务器站 4月11日x86服务器技巧  Snort是一个著名的免费而又功能强大的轻量级入侵检测系统,具有使用简便、轻量级以及封堵效率高等特点,本文从实用操作的角度介绍了如何用Snort保证上网主机的安全。

    入侵检测技术是继“防火墙”、“数据加密”等传统安全保护措施之后的新一代安全保障技术。它对计算机和网络资源上的恶意使用行为进行识别和响应,它不仅检测来自外部的入侵行为,同时也监督内部用户的未授权活动。而且,随着网络服务器对安全性要求的不断增大,如何在Linux环境下抵御黑客入侵和攻击,切实保证服务器的安全具有重大的实践意义。

    Snort是一个强大的轻量级的免费网络入侵检测系统,其特点如下:

    1.轻量级的网络入侵检测系统

    Snort虽然功能强大,但其代码非常简洁、短小,源代码压缩包只有1.8M多。

    2.Snort的可移植性好

    Snort的跨平台性能极佳,目前已经支持类Unix下Linux、Solaris、Freebsd、Irix、HP-ux、微软的Windows2000等服务器系统。

    3.Snort的功能非常强大

    Snort具有实时流量分析和日志IP网络数据包的能力,能够快速检测网络攻击,及时发出报警。利用XML插件,Snort可以使用SNML(简单网络标志语言)把日志放到一个文件或者适时报警。Snort能够进行协议分析和内容的搜索/匹配,现在Snort能分析的协议有TCP、UDP、ICMP,将来可能增加对ARP、IPX等协议的支持。它能够检测多种方式的攻击和探测,例如缓冲区溢出、秘密端口扫描、CGI攻击、SMB探测、探测存在系统指纹特征的企图等。Snort的日志格式既可以是tcpdump式的二进制格式,也可以解码成ASCⅡ字符格式,更加便于用户尤其是新手检查。使用数据库输出插件,Snort可以把日志记录进数据库。使用TCP流插件,Snort可以对TCP包进行重组。

    4.Snort的扩展性较好,对于新的攻击反应迅速

    作为一个轻量级的网络入侵检测系统,Snort有足够的扩展能力。它使用一种简单的规则描述语言,最基本的规则只是包含四个域:处理动作、协议、方向、注意的端口,例如“log tcp any any-> 192.168.0.1/24 79”。发现新的攻击后,可以很快根据“bugtraq”邮件列表,找出特征码,写出检测规则。因为规则语言简单,所以容易上手,节省人员的培训费用。

    5.遵循公共通用许可证GPL

    Snort遵循通用公共许可证GPL,所以只要遵守GPL ,任何组织和个人都可以自由使用。

    Snort的体系结构

    包解码 Snort的包解码支持以太网和SLIP及PPP媒体介质。包解码所做的工作就是为探测引擎准备数据,其功能是捕获网络传输数据并按照TCP/IP协议的不同层次将数据包进行解析。Snort利用libpcap库函数进行数据采集, 该库函数可以为应用程序提供直接从链路层捕获数据包的接口函数,并可以设置数据包过滤器来捕获指定的数据。网络数据采集和解析机制是整个NIDS实现的基础,其中最关键的是要保证高速和低的丢包率,这不仅仅取决于软件的效率还同硬件的处理能力相关。对于解析机制来说,能够处理数据包的类型的多样性也同样非常重要。

    探测引擎 探测引擎是Snort的心脏,它主要负责的工作是:按照启动时加载的规则,对每个数据包进行分析。探测引擎将Snort规则分解为链表头和链表选项进行引用。链表头由诸如源/目标IP地址及端口号这些普通信息标识,链表选项定义一些更详细的信息如TCP 标志、ICMP代码类型、特定的内容类型、负载容量等。探测引擎按照Snort规则文件中定义的规则依次分析每个数据包。与数据包中数据匹配的第一条规则触发在规则定义中指定的动作,凡是与规则不匹配的数据包都会被丢弃。

    日志记录/告警系统 告警和日志是两个分离的子系统。日志允许将包解码收集到的信息以可读的格式或以tcpdump格式记录下来。可以配置告警系统,使其将告警信息发送到syslog、flat文件、Unix套接字或数据库中。在进行测试或在入侵学习过程当中,还可以关掉告警。缺省情况下,所有的日志将会写到/var/log/Snort文件夹中,告警文件将会写到/var/log/Snort/alerts文件中。Snort的数据包记录器子系统主要提供了如下方式:“Fast Model”,采取tcpdump的格式记录信息 ;“Readable Model”,按照协议格式记录,易于用户查看;“Alert to syslog”,向syslog发送报警信息;“Alert to text file”,以明文形式记录报警信息。

    值得提出的是,Snort考虑到用户需要高性能的时候,即网络数据流量非常大,可以将数据包信息进行压缩从而实现快速报警。

    Snort的使用方法

    安装Snort

    Snort是基于libpcap的,一般操作系统安装的时候,libpcap已经默认安装了,如果没有安装,可以到http://www.tcpdump.org下载。Snort的安装步骤如下:

    1.分别执行指令:mkdir Snortinstall和cd Snortinstall;

    2.从www.Snort.org 下载Snort-2.0.0.tar.gz和Snortrules.tar.tz到新建的目录中,可以通过浏览器或者wget下载;

    3.分别执行如下指令:tar -zxvf Snort-2.0.0.tar.gz;cd Snort-2.0.0;

    ./configure;make;make install。

    Snort使用

    这里通过使用常见的观察主机是否存活的Ping命令来介绍Snort的具体使用。执行命令“./Snort -v”,运行Snort和显示IP和TCP/UDP/ICMP头信息。笔者使用命令:“ping 192.168.0.1”,显示如下信息:

06/10-10:21:13.884925 192.168.0.2 -> 192.168.0.1

ICMP TTL:64 TOS:0x0 ID:4068

ID:20507 Seq:0 ECHO

06/10-10:21:13.885081 192.168.0.1 -> 192.168.0.2

ICMP TTL:128 TOS:0x0 ID:15941

ID:20507 Seq:0 ECHO REPLY

06/10-10:21:14.884874 192.168.0.2 -> 192.168.0.1

ICMP TTL:64 TOS:0x0 ID:4069

ID:20507 Seq:256 ECHO

06/10-10:21:14.885027 192.168.0.1 -> 192.168.0.2

ICMP TTL:128 TOS:0x0 ID:15942

ID:20507 Seq:256 ECHO REPLY

    如果想要解码应用层,就执行命令“Snort -d”,然后执行“ping 192.168.0.1”,就可以显示如下信息:

06/10-10:26:39.894493 192.168.0.2 -> 192.168.0.1

ICMP TTL:64 TOS:0x0 ID:4076

ID:20763 Seq:0 ECHO

58 13 42 39 E0 BB 05 00 08 09 0A 0B 0C 0D 0E 0F X.B9............

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

30 31 32 33 34 35 36 37 01234567

06/10-10:26:39.894637 192.168.0.1 -> 192.168.0.2

ICMP TTL:128 TOS:0x0 ID:15966

ID:20763 Seq:0 ECHO REPLY

58 13 42 39 E0 BB 05 00 08 09 0A 0B 0C 0D 0E 0F X.B9............

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

30 31 32 33 34 35 36 37 01234567

    如果要看到更详细的关于以太网帧头的信息,就要使用“Snort -vde” 命令,然后执行“ping 192.168.0.1”就可以显示相应信息。

    Snort规则的编写

    Snort之所以受到广泛的关注,一方面由于它的轻量级特性,消耗系统资源少;另一方面就在于它的动态性和可编程性。然而这对于广大网络用户来说有些困难,因为他们必须具备相应的网络协议分析知识和安全知识。值得庆幸的是,这个软件有相应的规则库可以实时地从网上下载(网址为:www.Snort.org),用户可以直接下载即可使用,所以本文不讲述过多的规则编写规范,只是给出几个简单的例子:

    ● SMB报警配置: output alert_smb:workstation.list ;

    ● 端口扫描检测模块的配置:prepro

    cessor portscan:192.168.1.0/24 5 7 /var/log/portscan.log ;

    ● 封堵带有不健康信息的数据包:alert tcp any any <> 192.168.1.0/24 80 (content-list:"adults";msg:"Not for children!";react:block,msg) 。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章