在Windows环境中安装Neo4j
Posted 又一岁荣枯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows环境中安装Neo4j相关的知识,希望对你有一定的参考价值。
图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。
关系型数据库只对单个Join操作进行优化查询,而多重Join操作查询的性能显著下降。图形数据库适合查询关系数据,由于图形遍历的局部性,不管图形中由多少节点和关系,根据遍历规则,Neo4j只访问与遍历相关的节点,不受到总数据集大小的影响,从而保持期待的性能;相应地,遍历的节点越多,遍历速度越慢,但是变慢是线性的,这使得图形数据库不适合做海量数据统计分析。对与存在大量丰富关系的数据,遍历的性能不受图形数据量大小的影响,这使得Neo4j成为解决图形问题的理想数据库。
一,安装Neo4j
在安装neo4j之前,需要安装Java JRE,并配置Java开发环境,然后安装neo4j服务。
二,Neo4j的配置
配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需要进行任何配置,就可以启动和运行服务器。
1,核心数据文件的位置
例如,核心数据文件存储的位置,默认是在data/graph.db目录中,要改变默认的存储目录,可以更新配置选项:
# The name of the database to mount
#dbms.active_database=graph.db
# Paths of directories in the installation.
#dbms.directories.data=data
2,安全验证,默认是启用的
# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false
3,配置JAVA 堆内存的大小
# Java Heap Size: by default the Java heap size is dynamically calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum heap size.
#dbms.memory.heap.initial_size=512m
#dbms.memory.heap.max_size=512m
三,网络连接配置
neo4j支持三种网络协议,默认情况下,不需要配置就可以在本地直接运行。
1,Neo4j支持三种网络协议(Protocol)
Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。
2,连接器的可选属性
listen_address:设置Neo4j监听的链接,由两部分组成:IP地址和端口号(Port)组成,格式是:
3,设置默认的监听地址
设置默认的网络监听的IP地址,该默认地址用于设置三个网络协议(Bolt,HTTP和HTTPs)的监听地址,即设置网络协议的属性:listen_address地址。在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。
# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
4,分别设置各个网络协议的监听地址和端口
HTTP链接器默认的端口号是7474,Bolt链接器默认的端口号是7687,必须在Windows 防火墙中允许远程主机访问这些端口号。
# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
#dbms.connector.bolt.listen_address=0.0.0.0:7687
# HTTP Connector. There must be exactly one HTTP connector.
dbms.connector.http.enabled=true
#dbms.connector.http.listen_address=0.0.0.0:7474
# HTTPS Connector. There can be zero or one HTTPS connectors.
#dbms.connector.https.enabled=true
#dbms.connector.https.listen_address=0.0.0.0:7473
四,启动Neo4j程序
点击组合键:Windows+R,输入cmd,启动DOS命令行窗口,切换到主目录,以管理员身份运行命令
1,通过控制台启动Neo4j程序
以管理员权限启用DOS命令行窗口,输入以下命令,通过控制台启用neo4j程序
neo4j.bat console
如果看到以下消息,说明neo4j已经开始运行:
2,把Neo4j安装为服务(Windows Services)
安装和卸载服务:
bin\\neo4j install-service
bin\\neo4j uninstall-service
启动服务,停止服务,重启服务和查询服务的状态:
bin\\neo4j start
bin\\neo4j stop
bin\\neo4j restart
bin\\neo4j status
五,Neo4j集成的浏览器
Neo4j服务器具有一个集成的浏览器,在启动neo4j服务之后,可以使用neo4j集成的浏览器管理图数据库。
在一个运行neo4j服务器主机上访问 “http://localhost:7474/”,显示以下的界面:
默认的host是bolt://localhost:7687,默认的用户是neo4j,默认的密码是:neo4j,第一次成功connect到Neo4j服务器之后,需要重置密码。
六,在Neo4j浏览器中创建节点和关系
下面我通过一个示例,演示如何通过Cypher命令,创建两个节点和两个关系。
CREATE (n:Person name: \'Andres\', title: \'Developer\' ) return n;
CREATE (n:Person name: \'Vic\', title: \'Developer\' ) return n;
match(n:Personname:"Vic"),(m:Personname:"Andres") create (n)-[r:Friend]->(m) return r;
match(n:Personname:"Vic"),(m:Personname:"Andres") create (n)<-[r:Friend]-(m) return r;
1,创建第一个节点
在$ 命令行中,编写Cypher脚本代码,点击Play按钮,在图数据库中创建第一个节点:
在节点创建之后,在Graph模式下,能够看到创建的图形,继续执行Cypher脚本,创建其他节点
2,创建节点之间的关系
创建节点之间的边和创建节点的操作相同,例如,创建Person节点之间(Vic-> Andres之间的Friend关系),由于Friend关系是双向的,可以继续创建Andres和Vic之间的Friend关系:
3,查看节点之间的关系
在创建完两个节点和关系之后,查看数据库中的图形:
Windows 10环境中安装Snort+Barnyard2+MySQL
一、背景
Snort是一款著名的开源入侵检测系统,有着悠久的历史和众多用户。我们通过部署Snort系统来监测异常网络活动并发出报警。Snort的跨平台性能很好,它支持的各种Linux/Unix和Windows操作系统。
在之前的文章中,发布了如何在CentOS 7 环境中安装Snort。本文介绍如何在Windows 10 环境中让可爱的小猪Snort顺利跑起来。
二、安装准备
今天的实验我们将实现一个“Snort+Barnyard2+MySQL+PulledPork”的一个复杂架构,这些软件包都是编译好的,并非源码安装。看上去比Linux下源码编译要容易。
程序安装路径:所有程序均安装在D:\\winids\\
以下是本文实验涉及到的软件(文章最后会提供网盘下载):
Snort 2.9.17、Snortrules-snapshot-2917.tar.gz、Npcap、Strawberry Perl、Barnyard-mysql-windows.zip、.Net framework 4.5.2、mysql-install-community-8.0.23、7zip。
这些软件安装包集中放到D:\\temp目录等待安装使用。
图1 实验处理流程
下面的实验根据Snort数据处理流程进行,首先将镜像来的网络流量输入到IDS主机网卡,经过Snort处理之后将报警(Unified2格式)存储到/var/log/snort/目录,下一步由barnyard2来读取这个二进制报警,然后保存到MySQL。
三、安装步骤
步骤1:安装Snort
在安装Snort之前首先安装Npcap(Windows环境中抓包工具),接着安装Snort2.9.17。
除了安装路径设置为D:\\winids要注意以外,其余过程都按照软件界面提示安装。首次进入Snort字符界面,我们以管理员身份打开命令行终端。
进入D:\\winids执行Snort
d:\\winids\\Snort\\bin>snort -?
我们可以看到版本号和其他帮助命令。下面接着查看有效网卡。
这里,显示序号为1所列出的行为网卡的描述信息。Snort需要在该接口上嗅探。下面我们让Snort以嗅探模式进行抓包。
大量信息不断向屏幕上方翻滚,直到我们按下“Ctrl+C”组合键。不用任何配置,是不是就让Snort跑起来了呢?
步骤2:安装Strawberry Perl
Strawberry Perl安装路径:d:\\ winids\\strawberry\\安装完成后,下面我们需要执行一系列的命令来为配置IDS做准备。首先将7zip工具放入C盘Windows目录。
将snortrules-snapshot-29170.tar压缩包内的文件,解压缩到d:\\winids\\snort\\目录,再将压缩包内classification.confi、reference.confi、sid-msg.map、snort.conf、threshold.conf、Unicode.map复制到d:\\winids\\snort\\etc
步骤3:配置Snort
因为原始snort.conf配置文件有规则均为启用状态,暂时全部注销,我们利用Perl来实现。
接着新建3个文件。
删除preproc_rules目录
为Snort添加一条测试规则。
接着在命令行终端下,打开记事本,编辑snort.conf
notepad d:\\winids\\snort\\etc\\snort.conf
需要编辑的关键点如下:
原始内容(104行): var RULE_PATH ../rules
修改为: var RULE_PATH d:\\winids\\snort\\rules
原始内容(105): var SO_RULE_PATH ../so_rules
修改为: # var SO_RULE_PATH ../so_rules
原始内容(106): var PREPROC_RULE_PATH ../preproc_rules
修改为: # var PREPROC_RULE_PATH ../preproc_rules
原始内容(109): var WHITE_LIST_PATH ../rules
修改为: var WHITE_LIST_PATH d:\\winids\\snort\\rules
原始内容(110): var BLACK_LIST_PATH ../rules
修改为: var BLACK_LIST_PATH d:\\winids\\snort\\rules
原始内容(243): dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
修改为: dynamicpreprocessor directory d:\\winids\\snort\\lib\\snort_dynamicpreprocessor
原始内容(246): dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
修改为: dynamicengine d:\\winids\\snort\\lib\\snort_dynamicengine\\sf_engine.dll
原始内容(322): decompress_swf deflate lzma \\
修改为: decompress_swf deflate \\
原始内容(412): # preprocessor sfportscan: proto all memcap 10000000 sense_level low
修改为: preprocessor sfportscan: proto all memcap 10000000 sense_level low logfile portscan.log
原始内容(515): # output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types
修改为: snort.log, limit 128
注:我们在Linux环境下配置snort 时,filename后面跟的是snort.log。而此处选用merged.log的意义是相同的。
原始内容(541): # include $RULE_PATH/local.rules
修改为: include $RULE_PATH/local.rules
同时在541行后添加下面3行内容
include $RULE_PATH/winids.rules
include $RULE_PATH/white_list.rules
include $RULE_PATH/black_list.rules
保存退出。
步骤4:测试Snort
第一条测试命令:
注:在以上命令行中“-i2”和“-i 2”效果相同。
在输出的信息中我们可以看到Snort已经加载了1条规则。特别强调-l参数后面跟的日志存储路径不能省略,否则无法启动Snort。
一旦 Snort 可以在 Windows (Linux)上无错误启动,下一步就是验证它是否正确查看流量并响应警报,下面利用这条规则来产生报警。
正式启用snort
现在屏幕弹出了报警,与此同时在D:\\winids\\Snort\\log目录下生产了文件snort.log.1617001674。大家在实验时,不能完全照搬上面的命令,要根据当前系统中正确的网卡编号灵活确定。下面是检查端口扫描日志,这里就不深入展开了。
步骤5:安装MySQL 8
MySQL 8的下载路径: https://www.mysql.com/cn/downloads/
安装 .Net Framework 4.5.2
打开MySQL8 安装包将MySQL安装包(mysql-installer-community-8.0.23.0.msi)复制到d:\\temp\\目录中。准备安装MySQL8.0 MySQL安装程序“选择安装类型”窗口打开。左键单击选择“自定义”单选按钮,然后左键单击“下一步”。
MySQL安装程序的“选择产品和功能”窗口打开。“可用产品:”单击鼠标左键,展开“ MySQL Servers”,单击鼠标左键,展开“ MySQL Server”,单击鼠标左键,展开“ MySQL Servers 8.0”,单击鼠标左键,突出显示“ MySQL Server 8.0.xx-X64”,单击鼠标左键。
指向右边的绿色箭头,将“ MySql Server 8.0.23-X64”移动到“要安装的产品/功能:”部分。在“要安装的产品/功能:”下,单击鼠标左键,突出显示“ MySql Server 8.0.xx-X64”。在“取消”按钮的上方,单击“高级选项”,
然后打开“ MySQL Server 8.0.xx的高级选项”。我们需要修改程序安装目录和数据安装目录,这两个目录的路径原始路径如下:
原程序安装目录
C:\\ProgramData\\MySQL\\MySQL Server 8.0
原数据目录
C:\\ProgramData\\MySQL\\MySQL Server 8.0
无论程序目录还是数据目录都改为d:\\winids\\mysql
下一步继续。
确认安装内容无误之后,继续下一步。
执行安装程序
单击下一步继续。下面开始数据库配置环节在配置类型选项卡选择“Server Computer”。
通信端口保持默认。
继续安装,下面开始选择通过何种方式进行身份验证。选择Use Legacy Authentication Method,下一步继续
MySQL安装程序的“Accounts and Roles”窗口将打开。在“ MySQL根密码对话框中,键入“123456”。
MySQL安装程序的“ WindowsService”窗口打开。在“ Windows服务名称:”对话框中,键入“ MySQL”,然后单击“下一步”。
MySQL安装程序的“Apply Configuration”窗口打开。左键单击“执行”以允许成功配置MySQL Server,然后左键单击“完成”。MySQL安装程序的“产品配置”窗口打开。左键单击“下一步”。
MySQL安装程序的“安装完成”窗口打开。左键单击“完成”以完成MySQL数据库的安装。如果安装过程出现错误,大家可以点击Log选项卡来查看安装日志。以管理员身份打开CMD在提示符下,键入
copy d:\\winids\\mysql\\lib\\libmysql.dll c:\\windows\\system32
测试MySQL
配置MySQL8
首先修改my.ini配置文件
找到“ [mysqld]”行(76行)添加下面两行内容:
保存退出。
下面开始创建IDS数据库,数据库管理员密码为:123456
进入d:\\windis\\mysql\\bin目录。
创建两个数据库分别为snort和archive。第一个用于存储报警信息,第二个用户数据归档库。
创建IDS数据库表
同样的方法操作archive数据库
接着执行下面命令
设置访问权限
步骤6:制作Barnyard2安装包
它从一个 IDS的网卡接收到流量开始,通过 Snort的处理,将警报(Unified2格式)存储在/var/log/snort/目录中,接下来barnyard2会将警报读取,并存储到 MySQL。
图1 Windows环境下的Snort IDS架构
从图1架构图可以发现Barnyard2相当于一个中转站,起到承上启下的作用。本实验中关键是怎样安装barnyard2,由于GitHub有源代码但没有Windows环境下安装包,无法在Windows环境运行,要实现上图所示的架构就必须准备Windows环境下的安装文件,这里有两种方式可以将Barnyard2源码包编译成Windows下的可执行程序:
MS VC编译环境,来输出可支持程序,需要调试代码,对初学者而言难度较大。
采用Cygwin Unix仿真器在Windows上编译Barnyard2。
在Windows平台通过模拟器来编译C源码包生成可执行程序,对初学者操作起来有些难度,本文推荐第2种方法,通过脚本将源码编译和调试,起到了“屏蔽”技术细节的作用,实现了将CentOS7环境中Snort IDS,迁移到Windows环境。下面,我们看一下操作步骤:
步骤1:设置环境变量
当cygwin安装完成后,需要设置系统环境变量(这里我们把cygwin安装到D盘)
添加路径:
D:\\cygwin\\bin;D:\\winids\\mysql\\bin;D:\\winids\\snort\\bin;D:\\winids\\Strawberry\\perl\\bin
准备Barnyard2源码(在这篇文章里提供地址下载:https://blog.51cto.com/chenguang/2505396)
步骤2:下载Cygwin安装包
下面,我们开始使用Cygwin模拟器,在Windows上自动编译Barnyard2。以管理员身份打开CMD窗口,进入D:\\temp目录,并执行complile.bat批处理程序。
根据屏幕提示选择第一项“Compile Barnyard2 for MySQL”、“Start Compiling Barnyard2 for MySQL ”
这里需要注意,选择第一项,Cygwin开始从互联网安装下列组件:
unzip,zip,bison,automake,cmake,gcc-core,gcc-g++,libtool,make,libreadline-devel,zlib,zlib-devel,perl,patch,libgmp-devel,libedit-devel,libmariadb-devel,mariadb-common
选择带MySQL组件的Barnyard2,接下来,开始Cygwin程序安装。通过Compile.bat批处理文件来调用go-compile-m.sh脚本文件。编译完后将会生成可执行文件,并打包成压缩包。
经过一段时间编译,程序安装完成后在D盘根目录下产生名为barnyard2-x64-2.1.14-build337.zip的压缩包。
我们将barnyard2-mysql-x6402.1.14-build337压缩包放到D:\\winids目录,我们在安装配置barnyard2时会用到。
步骤7:安装Barnyard2
数据库安装完成后开始安装barnyard2
下面开始配置
在终端命令行中执行命令:
Notepad d:\\winids\\barnyard2\\etc\\barnyard2.conf
原始行(27,28,29,30行):
config reference_file: /etc/snort/reference.config
config classification_file: /etc/snort/classification.config
config gen_file: /etc/snort/gen-msg.map
config sid_file: /etc/snort/sid-msg.map
改成如下内容:
技巧:由于barnyard2.1.4在启动过程中会调用sid-msg.map,时间会比较长,为了提高启动barnyard的速度,在调试过程中可以先将配置文件中第30行注销掉。待整个系统调试成功后,再重新加载这一行。
测试Barnyard2
当看到Closing connection to database “snort”说明了两个问题:
barnyard2.conf配置文件无错误
通过barnyard程序连接数据库成功。
在barnyard2.conf中我们可以知道,输入信息的配置是由“input unified2”决定。Unified2格式由Snort输出插件定义。
正式启动barnyard2
当出现Waiting for new data提示,说明barnyard2启动成功。
步骤8:安装pulledpork
前提条件:必须将Snort配置正确。才能继续安装pulledpork-8.0,它是一个Perl脚本,用来自动下载最新的Snort规则集。
配置Pulledpork操作如下:
创建目录temp
编辑pulledpork.conf
在Snort官网注册用户获取OINKCODE。
原始(19行):这一步非常重要!
rule_url=" target="_blank">https://www.snort.org/reg-rules/|snortrules-snapshot.tar.gz|<oinkcode>
修改为: rule_url=https://www.snort.org/reg-rules/|snortrules-snapshot.tar.gz|x
X=c65fc0ec980c4a16f51d0d33
配置文件修改完成,开始运行。
如果测试通过,则以下是确认Pulledpork配置文件已通过且规则已成功安装的确认。可查看D:\\winids\\Snort\\log\\ sid_changes.log了解更多详细信息。
四、Snort+Barnyard2联合调试
以上我们对snort和barnyard2进行了安装配置,下面进行联合调试。
启动Snort
启动barnyard2
检查报警
在其他主机中PING这台机器,观察报警已验证存储到数据库。
如果收到类似上图中的结果,在收到报警的同时,数据库的Snort表中事件在不断增加,表示实验成功。下一节分享,如何实现报警可视化,例如通过Splunk或者采用Apache+PHP+BASE的方式。
观看操作演示: https://www.bilibili.com/video/BV1ZQ4y1S718/?spm_id_from=333.337.search-card.all.click
以上是关于在Windows环境中安装Neo4j的主要内容,如果未能解决你的问题,请参考以下文章