SELKS在CentOS 7的部署实践

数据包捕获是一个重要组件,可以实施网络入侵检测系统 (IDS) 并执行网络安全监视 (NSM)。 可以借助多种开源 IDS 工具来处理数据包捕获,并检查潜在网络入侵和恶意活动的签名。 使用网络观察程序提供的数据包捕获,可以分析网络中是否存在任何有害入侵或漏洞。

Suricata 就是这样的一种开源工具,它是一个 IDS 引擎,可使用规则集来监视网络流量,每当出现可疑事件时,它会触发警报。 Suricata 提供多线程引擎,意味着它能够以更高的速度和效率执行网络流量分析。 有关 Suricata 及其功能的更多详细信息,请访问其网站 https://suricata-ids.org/

环境

实验环境关闭firewalld和selinux即可
机器:10.22.0.188/24

systemctl stop firewalld
setenforce 0

1.安装Suricata

安装依赖包

yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

下载解压Suricata

下载最新安装包http://suricata-ids.org/download/ (截至18年2月8日,最新版本为4.0.3)
wget http://www.openinfosecfoundation.org/download/suricata-4.0.3.tar.gz
tar zxvf suricata-4.0.3.tar.gz
cd suricata-4.0.3

编译安装

./configure --sysconfdir=/etc --localstatedir=/var
make & make install

Suricata 源代码带有默认的配置文件。按照如下方法安装这些默认配置文件即可

make install-conf

如果没有IDS规则集的话,Suricata 什么用也没有。

Makefile 为我们提供了IDS规则集的安装选项。

安装命令如下,该命令会从http://rules.emergingthreats.net/社区下载可用的社区规则集快照,并且将其存储在/etc/suricata/rules目录下

make install-rules

配置suricata

请注意:不管使用哪个端口, Suricata都能自动检测HTTP流量。所以,正确指定HTTP_PORTS变量并不是很重要。
vim /etc/suricata/suricata.yaml

default-log-dir  指定 Suricata 日志文件所在的位置
vars
HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"     #本地网络地址
EXTERNAL_NET: "!$HOME_NET"                                #除本地网络的其他网络
HTTP_PORTS: "80"                                          #HTTP端口号
SHELLCODE_PORTS: "!80"                                    #网络上开放的SHELL端口
SSH_PORTS: 22                                             #SSH远程连接端口

部分用于防御利用操作系统网络栈的自身行为来逃避检测的一些知名攻击手段(例如:TCP reassembly)。作为对策,通过针对目标操作系统而对检测引擎算法进行微调,现代 IDC 提供了“基于目标”的检测手段。
因此,如果你知道某台主机运行了什么操作系统的话,将这个信息提供给 Suricata 就可以大幅提高检测的成功率。这就是 host-os-policy 存在的意义。本例中,默认的 IDC 策略是 Linux 系统。如果针对某个 IP 地址没有指定操作系统信息,Suricata 会默认应用基于 Linux 系统的检测策略。如下,当捕获到对 192.168.122.0/28 和 192.168.122.155通讯时,Suricata 就会应用基于 Windows 系统的检测策略。

host-os-policy:
  # Make the default policy windows.
  windows: [10.22.0.0/24]
  bsd: []
  bsd-right: []
  old-linux: []
  linux: [0.0.0.0/0,10.22.0.188]
  old-solaris: []
  solaris: []
  hpux10: []
  hpux11: []
  irix: []
  macos: []
  vista: []
  windows2k3: []

关闭网卡LGO/GRO功能(网卡名结合实际修改)

ethtool -K ens32 gro off lro off
Cannot change large-receive-offload(说明你的网卡不支持LRO/GRO功能,忽略即可)

查看所有可用的运行模式

/usr/local/bin/suricata --list-runmodes

运行Suricata

/usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i ens32 --init-errors-fatal &

日志记录在/var/log/suricata/fast.log,同时还有json格式方便导入,位置是/var/log/suricata/fast.log

suricata在线WIKI

2.安装ELK

相关软件请到Elasticsearch官方网站下载

Elasticsearch6.2.0下载
Logstash6.2.0下载
Kibana6.2.0下载

安装elasticsearch
rpm -ivh elasticsearch-6.2.0.rpm 
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

访问本地9200端口,出现如下内容说明Elasticsearch安装成功

curl 127.0.0.1:9200
{
  "name" : "Ic9U2Zp",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6qLiLUgeTIe_9zOUBCMtaw",
  "version" : {
    "number" : "6.2.0",
    "build_hash" : "37cdac1",
    "build_date" : "2018-02-01T17:31:12.527918Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

安装logstash
rpm -ivh logstash-6.2.0.rpm 
systemctl enable kibana.service

添加logstash过滤规则

vim /etc/logstash/conf.d/logstash.conf
input {
file {
    path => ["/var/log/suricata/eve.json"]
    codec =>  "json"
    type => "SuricataIDPS"
}

}

filter {
if [type] == "SuricataIDPS" {
    date {
    match => [ "timestamp", "ISO8601" ]
    }
    ruby {
    code => "
        if event.get('[event_type]') == 'fileinfo'
        event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
        end
    "
    }

    ruby{
    code => "
        if event.get('[event_type]') == 'alert'
        sp = event.get('[alert][signature]').to_s.split(' group ')
        if (sp.length == 2) and /\A\d+\z/.match(sp[1])
            event.set('[alert][signature]', sp[0])
        end
        end
        "
    }
}

if [src_ip]  {
    geoip {
    source => "src_ip"
    target => "geoip"
    #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
    add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
    add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
    }
    mutate {
    convert => [ "[geoip][coordinates]", "float" ]
    }
    if ![geoip.ip] {
    if [dest_ip]  {
        geoip {
        source => "dest_ip"
        target => "geoip"
        #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
        convert => [ "[geoip][coordinates]", "float" ]
        }
    }
    }
}
}

output {
elasticsearch {
    hosts => "localhost:9200"
}
}

systemctl enable logstash.service
chmod 775 /var/log/suricata/eve.json
systemctl start logstash.service
安装kibana
rpm -ivh kibana-6.2.0-x86_64.rpm

修改kibana允许访问的主机范围、默认只允许本地访问

vim /etc/kibana/kibana.yml 
server.host: "0.0.0.0"
systemctl start kibana.service
systemctl enable kibana.service
浏览器访问IP:5601

进入Kibana,这里应该会要求设置一个索引,这里使用logstash-*


ELK_Discover.png

可视化效果设置
在Kibana找到Management,选择Saved Objects,点击Import上传文件

此处下载仪表板文件
此处下载可视化效果文件
此处下载已保存的搜索文件

在 Kibana 的“Management”(管理)选项卡下,导航到“Saved Objects”(已保存的对象)并导入所有三个文件。 然后,可从“仪表板”选项卡打开并加载示例仪表板

安装完成界面预览
ELK_Dashboard_1.png
ELK_Dashboard_2.png

通过将网络观察程序提供的数据包捕获与 Suricata 等开源 IDS 工具相结合,可以针对各种威胁执行网络入侵检测。 使用这些仪表板可以快速探查网络中的趋势和异常,以及挖掘数据来发现恶意用户代理或有漏洞的端口触发警报的根本原因。 使用这些提取的数据,可以在如何抵御网络中的任何有害入侵企图方面做出明智的决策,并创建规则来防范网络中将来发生入侵。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容