scirius源代码网址:
http://www.github.com/StamusNetworks/scirius
Git Clone代码到本地:
git clone http://www.github.com/StamusNetworks/scirius
scirius源码文档:
https://github.com/StamusNetworks/scirius/wiki
1.简介
Scirius Community Edition是一个专用于Suricata规则集管理的web界面。 它处理规则文件并更新相关文件。
Scirius CE由stamus networks开发,遵循GNU GPLv3.
2.特征
Scirius 可以构建由不同来源组成的suricata规则集合。来源或提要可以从OISF发布的公共来源中挑选,也可以是自定义的。Scirius将通过在应用你的转换来处理刷新源和组成规则集。可以为每个规则或类别级别进行转换,例如禁用规则或应用阈值(仅降低噪声)。Scirius还提供有关规则活动的统计信息,以提供信息并促进调整。
3.安装和设置
(3.1)安装scirius CE
Scirius CE是一个用Django编写的应用程序, 可以像其他 Django 应用程序一样安装它。
它需要Django 1.11,但是尚不支持Django 2.0. Scirius CE还使用webpack来构建CSS和JS包。
(3.1.1) 安装依赖
centos 7上安装,执行: yum install python-pip python-devel
下载scirius:git clone http://www.github.com/StamusNetworks/scirius
切换到scirius目录下: cd scirius/ , 然后安装django和依赖项,执行: pip install -r requirements.txt
如果出现:ERROR: requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.25.1 which is incompatible
建议升级pip install --upgrade urllib3
要使用处理suricata restart的suri _reloader脚本,还需要安装pyinotify, 执行:pip install pyinotify
安装gitdb模块、GitPython模块 :pip install gitdb、pip install gitpython==0.3.1-beta2
对于npm 和 webpack,需要安装稳定版本的npm和webpack 版:
yum install npm
全局安装webpack 和webpack-cli:
npm install webpack@3.11 -g
npm install webpack-cli -g
建议也局部安装一次:
npm install webpack@3.11 --save-dev
npm install webpack-cli --save-dev
更新依赖: npm install
(3.1.2) 安装scirius
step1 下载scirius:git clone http://www.github.com/StamusNetworks/scirius
step2 切换到scirius/hunt 下执行:cd scirius/hunt 、 npm install 、npm run build
如果此时失败,提示为: "file": "node_modules/patternfly/dist/sass/_patternfly.scss", 是出于路径问题,需要增加对应路径.在 hunt/package.json文件中,在字段"scripts"增加路径:
--include-path=node_modules/bootstrap-sass/assets/stylesheets/
--include-path=node_modules/font-awesome-sass/assets/stylesheets/
重新执行npm run build
(3.1.3) 运行scirius CE
从源目录内部,可以启动Django数据库 : 切换到上级目录cd ../,执行python manage.py migrate
默认情况下,身份验证在scirius中,因此您需要创建超级用户账户: python manage.py createsuperuser
在启动应用程序之前,您需要通过运行webpack来构建bundle: webpack
如果出现Cannot read property 'thisCompilation' of undefined报错,可以按下面步骤解决:
先卸载:npm uninstall --save-dev extract-text-webpack-plugin
在重新安装:npm install --save-dev extract-text-webpack-plugin
再次执行:webpack
(3.1.4) scirius CE 尝试
尝试Scirius CE的最简单方法之一是运行Django测试服务器 ; python manage.py runserver .通过localhost:8000来访问地址.
如果出现:/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.1......)
则卸载urllib3和chardet,再重新安装requests,命令如下:
pip uninstall urllib3
pip uninstall chardet
pip install requests
如果您需要应用程序来侦听可访问的地址,您可以运行类似的地址:python manage.py runserver 0.0.0.0:8000
如果通过浏览器访问时出现:
Invalid HTTP_HOST header: '192.168.111.123:8000'. You may need to add u'192.168.111.123' to ALLOWED_HOSTS.
修改scirius下settings.py文件:
ALLOWED_HOSTS = ['*']
(3.2) suricata 设置
Scirius CE正在生成一个包含所有激活规则的规则文件。编辑Suricata对象时,必须设置要生成此文件的目录以及要复制的规则集的关联文件.Scirius CE不会触及您的Suricata配置文件suricata.yaml。所以你必须更新它以指向Scirius CE设置数据的目录。
(3.2.1) 如果您只使用Scirius CE生成的规则,则应该在suricata.yaml文件中配置
default-rule-path:/path/to/rules
rule-files:
-scirius.rules
(3.2.2) 要使用“ 使用IP信誉”而不是“组”功能,您还需要使用
reputation-categories-file: /path/to/rules/scirius-categories.txt
default-reputation-path: /path/to/rules
reputation-files:
- scirius-iprep.list
(3.2.3) 要与Scirius CE交互,需要检测何时创建/path/to/rules/scirius.reload文件,在这种情况下, 需要重新加载或重新启动Suricata,并在完成后删除重新加载文件.
一种可能的方法是使用在suricata/scripts目录中的suri_reloader,。语法suri_reloader可以类似于:
suri_reloader -p /path/to/rules -l /var/log/suri-reload.log
如果此时出现:
WARNING:root:No daemon support available, install python-daemon if feature is needed。
安装python-daemon: yum install python-daemon
使用-h选项获取完整的选项列表。请注意,suri_reloaded 使用该service命令重新启动或重新加载Suricata。这意味着您需要一个init脚本才能使其正常工作。
(3.3)与Elasticsearch链接
如果您将Suricata与Eve日志记录和Elasticsearch一起使用,则可以获取有关显示有关Suricata信息的页面中显示的签名的信息,您还可以获取有关特定规则的图表和详细信息.
要设置Elasticsearch连接,在目录下编辑settings.py或创建local_settings.py文件scirius以设置该功能。
在settings.py( 路径scirius/scirius/settings.py)中变量名称USE_ELASTICSEARCH设置为True,则激活Elasticsearch 。Elasticsearch的地址存储在 ELASTICSEARCH_ADDRESS变量中并使用该格式IP:port.
注意:Suricata的名称在Elasticsearch(在对象编辑期间设置)必须等于host事件中的密钥。它也可以在这里编辑:scirius - > suricata - >edit。
在logstash端,唯一必要的是确保@timestamp等于Suricata事件中提供的时间戳值。为此,如果Suricata事件属于SELKS类型,则可以使用:
filter{
if[type]=="SELKS"{
date{
match=>["timestamp","ISO8601"]
}
}
}
这对于避免Scirius CE生成的图形出现故障是必要的.
(3.4)与Kibana的链接
如果您使用的是Kibana,可以通过单击左上角的图标获取指向仪表板的链接.要激活该功能,您需要编辑settings.py文件:
KIBANA_URL = "http://localhost:9292"
USE_KIBANA = True
4.scirius使用
(4.1)账户管理
Scirius CE在默认情况下使用身份验证。 你将需要超级用户才能创建和编辑scirius用户。账户管理允许用户管理 - 编辑/创建和删除不同的用户帐户,更改用户详细信息和/或密码。在此菜单中,您还可以查看当前可用用户的列表以及这些帐户拥有的设置.
(4.1.1) 添加/创建用户
要添加/创建新用户:在左上角单击Stamus Networks logo.在下拉 选项中选择Manage Accounts.此时跳转到用户管理界面.
在用户管理界面,在Action下面,点击Add.
(4.1.2)编辑用户
在用户管理界面,在用户列表中,点击你要编辑的用户.此时左边Actions出现三个菜单:Edit user,Change user password,Delete user,点击Edit user,进行用户编辑
(4.1.3)修改用户密码
在用户管理界面,在用户列表中,点击你要编辑的用户.此时左边Actions出现三个菜单:Edit user,Change user password,Delete user,点击,Change user password,进行用户密码修改.
(4.1.4)删除用户
在用户管理界面,在用户列表中,点击你要编辑的用户.此时左边Actions出现三个菜单:Edit user,Change user password,Delete user,点击,Delete user,,删除用户.
(4.1.5)用户权限
有三个级别的权限:
a.允许活动用户连接到Scirius,但只具有读取权限
b.专业用户可以设置Scirius(应用编辑,规则集推送,...)
c.超级用户具有完全不受限制的访问权限,包括在本地数据库中编辑用户身份验证设置和用户创建.
在用户管理界面,在用户列表中,点击你要授权的用户.此时左边Actions出现三个菜单:Edit user,Change user password,Delete user,点击Edit user,进行用户编辑,该编辑栏有Active , Staff User and Superuser.通过复选框启用/禁用设置权限级别.
(4.2)规则集管理
(4.2.1)规则集处理的哲学
Scirius允许您定义规则集,它定义了Stamus Networks Suricata探测器关于检测和检查的一套规则。您可以拥有任意数量的规则集,且可以将特定数据附加规则集到许多设备.
规则集由在不同源中选择的组件组成。它可以转换(例如删除某些规则)、更改内容并将在网络探测器在应用规则集中的签名中之前推送过去。
源是为Suricata提供信息的一组文件。 例如这可以是从官方ET URL(或任何其他URL)下载或在本地上载的EmergingThreats规则集。当包含签名的Source在多个文件中分割时,每个单独文件中的签名集称为类别。
(4.2.2)用户操作记录
用户操作记录了规则集管理中执行的所有操作。可以使用Stamus图标下的菜单Actions history访问其历史记录。每个操作都有可选注释,以允许用户相互交互。
(4.2.3)规则集管理
规则集管理包含两个主菜单选项:Sources和Rulesets。因此,要创建规则集,必须创建一组Sources然后将它们链接到规则集。完成此操作后,您可以选择要使用的源的哪些元素。例如,对于签名规则集,您可以选择要使用的类别以及要禁用的单个签名。
定义规则集后,可以将其附加到检测器。为此,只需简单编辑检测器对象并在列表中选择该规则集。
(4.2.4)创建源
有两种方法可以创建Source。第一个是使用预定义的公共源,第二个是通过手动添加。
(4.2.4.1)公共源
使用预定义的公共源,转到 Sources -> Add public source(Add public source 位于左侧菜单栏Actions下 )。选择一个来源,然后单击Enabled按钮。在弹出窗口中,您可以编辑源名和要添加源到哪个规则集。在某些情况下,会出现一些字段,例如要输入的规则编辑器提供的密钥。
(4.2.4.2)手动添加
手动创建源转到Sources -> Add custom source(Add custom source 位于左侧菜单栏Actions下 )。然后设置不同的字段并单击Submit。需要手动填写名字、方法、数据类型。
4.2.4.2.1 名字
按需求自己定义。
4.2.4.2.2方法
(1)选择HTTP URL,将看到Optional authorization key字段,此字段是可选字段,可用于针对远程服务器对Scirius进行身份验证。它为HTTP请求添加了一个授权标头,允许对大量第三方服务进行身份验证。这可以特别用于从MISP实例导入签名。有关更多信息,请参阅 MISP文档。使用Optional authorization key也支持使用私有Github存储库来托管签名,正如Github文档中所解释的那样。Optional authorization key应该填充token TOKEN字段,第二个TOKEN是在开发人员设置页面中在Github配置文件中创建的用户个人访问令牌。
(2)upload
上传一个规则文件
4.2.4.2.3数据类型
(1)Signatures files in tar archive 的来源必须遵循一下一些规则:
-它必须是tar存档
-所有文件必须位于rules目录下
例如,如果要为Suricata 4.0获取ETOpen Ruleset,可以使用:
名称:ETOpen规则
URI:https://rules.emergingthreats.net/open/suricata-4.0/emerging.rules.tar.gz
(2)Individual signature file必须是包含签名的单个文件.
例如,如果您要使用来自abuse.ch的SSL黑名单,您可以使用
名称:SSLBL abuse.ch
URI:https://sslbl.abuse.ch/blacklist/sslblacklist.rules
(3)Other content数据类型的来源必须是单个文件。它将使用其名称作为文件名复制到Suricata规则目录.
(4.2.5)更新源
要更新源,首先需要选择它。为此,请转到Sources然后在数组中选择所需的Source。然后,您可以单击侧栏菜单中的Update。此步骤可能需要很长时间,因为它可能需要一些下载和大量解析。更新后,您可以通过下拉链接中的链接浏览结果。
(4.2.6)创建规则集
要创建规则集,请转到Ruleset ->Action-> Add,然后设置规则集的名称并选择要使用的源并单击Submit。您可以选择要使用的源和要应用的转换。有关它们的更多信息,请参阅后面的规则转换。
(4.2.7)更新规则集
要更新规则集,首先需要选择它.为此,请转到Ruleset然后在数组中选择所需的Ruleset。然后,您可以单击侧栏中Update Ruleset菜单。此步骤可能需要很长时间,因为它可能需要下载不同的源和重度解析。当更新完毕后,弹窗将关闭。
(4.2.8)编辑规则集
要编辑规则集,首先需要选择它。为此,请转到Ruleset然后在数组中选择所需的Ruleset。然后,您可以单击侧栏中Edit Ruleset菜单.此时Action菜单中有不同的操作:
-Edit sources,编辑源:选择要在规则集中使用的签名源
-Edit categories,编辑类别:选择要在规则集中使用的签名类别
-Add rule to suppressed list,将规则添加到非启用列表:如果规则在此列表中,则它不会是生成的规则集的一部分
-Remove rule from suppressed list,从抑制列表中删除规则:这将从前面提到的列表中删除规则,从而在规则集中重新启用它
(4.2.8.1)编辑源
要选择要使用的源,只需通过复选框选择它们,然后单击Update sources。请注意,选择要启用的类别是添加新源时过程的下一步。
(4.2.8.2)编辑类别
要选择要使用的类别,只需通过复选框选择它们,然后单击Update categories。
(4.2.8.3)将规则添加到不启用列表
使用搜索字段查找要删除的规则,可以使用签名中的SID或任何其他元素。Scirius将在签名定义中搜索输入的文本,并返回规则列表。然后,您可以通过单击复选框并单击Add selected rules to suppressed list来删除它。
(4.2.8.4)从不启用列表中删除规则
要从被抑制列表中删除规则,只需在数组中查找到它们并单击Remove select rules from suppressed list即可。
(4.2.9)抑制(取消)和阈值处理
当需要最小化警报数时,可以通过阈值控制特定签名的警报号 。例如,通常阈值处理来自该签名的源或目标IP的每分钟最多1个警报。
当需要抑制警报时使用抑制 。 也就是说,不从该源或目标IP生成针对该特定签名的警报。
(4.2.9.1)取消警报
从任何表中显示的警报列表,如规则集中,单击sid需要抑制的警报的特定内容,这将显示规则详情页面。在这里,您可以单击左侧菜单Action 下的Edit rule,然后在同一位置的菜单中选Suppress rule。在规则页面中,通过位于Ip and Time stats或Advanced Data选项卡上并单击Ip地址旁边的x,还可以从rule页面到达禁止创建页面。
在新页面上,如果对该特定签名已经存在某些阈值或抑制,您将被告知。可用字段是:
Ruleset:适用于此配置的规则集
Track by:(必填字段)按源或目标IP进行跟踪
Net: IP和/或特定网络的有效性
选择规则集,源或目标(针对该特定IP),然后单击+Add。
您还可以选择对整个网络强制执行抑制和/或使用IP列表。您可以Net像这样在字段中添加:
10.10.10.0/24,1.1.1.1,2.2.2.2
您可以通过单击Rules info选项卡来验证抑制。您将获得有关不同(如果有)阈值和抑制配置状态的信息显示。或者,您也可以通过单击Rulesets并选择已应用特定抑制或阈值的规则集来查看该视图。
要使抑制变为活动状态,您需要Push更新探针的规则集。有关完整说明,请参阅SEE 上的updates -appliances-ruleset和Scirius CE上的更新规则集。
(4.2.9.2)阈值警报
从显示警报列表的任何表中,单击sid需要抑制的警报的特定内容。这将显示规则页面。在那里,您可以单击左侧菜单Action下的Edit rule,然后在同一菜单中选择Threshold rule。在rule页面中,您还可以通过位于Ip和Time stats或Advanced Data选项卡上,并单击Ip地址旁边(x旁边)的向下箭头,从而到达阈值创建页面。
在新页面上,如果对该特定签名已经存在某些阈值或抑制,您将被告知。可用字段是:
Type 阈值的类型。有可能:
limit 将警报限制为最多“X”次。
threshold 规则生成警报之前的最低阈值。
both 应用限制和阈值。
Track by (必填字段)按源或目标IP进行跟踪
Count 生成警报的次数。
Seconds 在那个时间跨度内。
Ruleset 适用于此配置的规则集
您可以通过单击选项卡Rules info来验证阈值。您将获得有关不同(如果有)阈值和抑制配置状态的信息显示。或者,您也可以通过单击Rulesets并选择已应用特定抑制或阈值的规则集来查看该视图。
要使阈值变为活动状态,您需要Push更新探针的规则集。有关完整说明,请参阅SEE 上的updates -appliances-ruleset和Scirius CE上的更新规则集。
(4.2.10)规则转换
有三种类型的规则转换。
第一个Action,允许更改特定规则的操作 - 丢弃(drop),拒绝(reject )或文件存储(filestore)。请注意,这些操作需要有关规则和规则关键字语言的高级知识。
第二个是Lateral,它修改规则以检测横向移动。
第三个是Target,它通过添加target关键字来更新签名。
转换与规则集相关。但是它们可以在规则集上全局设置,也可以在类别或特定规则上设置。因此很容易处理异常。
(4.2.10.1)动作转换
一旦您有一个特定的规则,您想要转换 - 在规则的详细信息页面的左侧面板Actions下单击 Transform rule。您将看到一些选择。
选择形式的转换类型:
drop - (IPS模式)将规则从alert(警报)转换为丢弃 - 也需要事先明确设置和配置IPS模式。
reject - (IDPS / hybrid)会将规则从alert(警报)转换为reject,这意味着当触发RST /或dst不可达数据包时,将发送到src和dst IP。
filestore - 将仅转换那些具有允许文件提取的协议的规则 - 例如alert http...或alert smtp
选择您希望添加/注册新转换的规则的规则集。
注意:特定规则只能转换一次。
注意:要使用此drop功能,您需要具有有效的IPS设置。
完成所需的选择后,您可以添加注释以进行问责,然后单击Valid(生效)。您将在Information选项卡中获得有关已转换规则的详细信息。您可以查看并确认转换及其添加的规则集以及任何注释。
只能转换活动的规则。如果规则在特定规则集中未处于活动状态,则它将不具有左侧面板上可用的转换或抑制/阈值选项。要使其处于活动状态,您可以通过单击左侧面板菜单上的Toggle availability选项来切换该规则的可用性。
规则详细信息页面的历史记录选项卡将对已转换的规则进行任何注释和更改以进行跟踪。
(4.2.10.2)横向移动
签名通常使用EXTERNAL_NET和HOME_NET变量编写,这意味着如果流的两端都在HOME_NET中,它们将不匹配。因此,未检测到横向运动。这种转换将EXTERNAL_NET改为任何能够检测横向运动的。
该选项可以有三个值:
No:没有替换
Yes:EXTERNAL_NET被任何替换
Auto:如果签名验证某些属性,则完成替换
(4.2.10.3)目标关键字
自Suricata 4.0起可用,目标关键字可用于指示触发签名的流的哪一侧是目标。如果存在此密钥,则会增强相关事件以包含攻击的源和目标。
该选项可以有四个值:
Auto:如果存在目标,则使用算法确定目标
Destination:目标是目标IP
Source:目标是源IP
None:没有进行转换
5.hunt
5.1 介绍
Hunt是一个专门用于签名和事件可视化和调优的界面。它可以通过Hunt链接从Scirius Enterprise的顶级菜单中获得。
Hunt使用向下钻取方法来选择事件。通过单击字段值旁边的放大镜图标,可以简单地添加警报事件中包含的协议元数据的过滤器。
一旦定义了复合过滤器,用户就可以基于它采取行动。该操作将应用于与复合过滤器匹配的所有未来事件。
在Community Edition中,只能使用可在suricata中用于创建抑制和阈值的字段。目前仅限于src_ip和 dest_ip。
在Enterprise Edition中,Stamus探针可以对使用任意协议元数据的过滤器应用操作。
5.2 页面
可以通过右侧菜单中的单击访问页面。从一个页面跳转到另一个页面将保持过滤器不受影响,允许分析师在可用的不同视图之间切换。
5.2.1 仪表板(Dashboard)
此页面显示一个仪表板,其中包含可在警报中看到的最有趣的数据和协议元数据的统计信息。
5.2.2 签名(Signatures)
如果已创建签名ID的过滤器,此页面将显示签名或签名页面的列表。
5.2.3提醒(Alerts)
此页面将列出单个警报事件。可以展开事件以查看包括有关它的元数据的所有详细信息。
5.2.4动作(Actions)
此页面显示操作列表。列表已排序,过滤器按升序应用。
可以重新排序动作以调整过滤器的相应优先级。为此,只需单击操作右侧的三个点并填写表单即可
5.2.5历史(History)
此页面显示用户在Scirius实例上执行的修改的历史记录。
5.2.6 主页(home)
链接到Scirius主页。
5.3. 动作
5.3.1 抑制(取消)
抑制操作将在匹配事件到达存储之前将其删除。
在Scirius CE中,需要具有签名ID和源或目标IP的过滤器才能创建操作。
对于Stamus探针,可以使用任何字段。
5.3.2 阈值
阈值操作仅在达到定义的阈值时保持警报。
在Scirius CE中,需要具有签名ID的过滤器才能创建操作。
在Scirius EE和Stamus探针中,可以使用任何字段。
5.3.3 标签
一个标签可以根据过滤器进行设置。它将在所有匹配事件上设置,并允许轻松分类。
目前有2个值:
Informational,信息:信息足够好,不会被压制,以防万一
Relevant,相关:事件是相关的,需要进行调查
所有未标记的事件都可以在Untagged标签下找到。如果正确设置了已定义的操作,则应该是新签名或未引用的行为。所以应该进行调查和分类。
标记操作仅适用于Scirius EE和Stamus探针。
5.3.4 标签和保持
一个标签,并保持动作类似于标签的动作,但匹配的事件将不会受到任何后来的行动处理发现的行动来抑制或阈值。
标记和保持操作仅适用于Scirius EE和Stamus探针。
5.4 键盘快捷键
5.4.1 标签过滤
这是完整的清单:
A:显示所有事件
R:仅显示相关事件
I:仅显示信息事件
U:仅显示未标记的事件
6.suricata管理
6.1 设置
Suricata编辑页面允许您设置Suricata的参数。
参数如下:
Name:探测器的主机名,确保它与JSON事件中的主机字段的值匹配
Descr:suricata的描述
Rules directory:将在此目录中创建scirius.rules文件。Suricata必须只使用此文件
Suricata configuration file:用于检测某些配置设置
Ruleset:选择要使用的规则集
6.2更新规则集
要更新Suricata规则集,您可以转到Suricata -> Update(Update在 Actions 菜单中)。然后你必须选择你想要做的动作:
Update:下载规则集使用的源的最新版本
Build:基于当前版本的源构建Suricata规则集
Push:触发Suricata重新加载以使其与最新的构建规则集一起运行
您还可以通过运行来更新规则集并触发Suricata重新加载:
python manage.py update suricata
7.备份
要开始备份,请运行:
python manage.py scbackup
要恢复备份并清除所有数据,您可以运行
python manage.py screstore
python manage.py migrate
这将恢复最新的备份。要选择其他备份,请将备份文件名指定为第一个参数。要获取可用备份列表,请使用
python manage.py listbackups
您无法将备份还原到比已完成备份的scirius更旧的scirius。
使用默认配置文件,备份在/ var / backups中的磁盘上完成,但也可以使用其他方法。由于Scirius CE使用django-dbbackup应用程序进行备份和还原过程,因此它可以从此应用程序中的所有可用方法中受益。这包括至少:
FTP
Amazon AWS
Dropbox的
有关可用方法及其配置的更多信息,请参阅django-dbbackup配置。