2024-1-20
- 工作空间(Workspace)是用于对不同资源的集合与隔离。Nemo默认只有一个工作空间,可以在“System”-“工作空间”中新建、修改和删除工作空间。
- 在用户登录到Nemo后,会关联到一个工作空间。如果用户有多个工作空间的权限,通过在DashBoard、IP及Domain页面的右上角下拉框,通过选择进行切换。
- 如果是超级管理员身份,可通过选择“--工作空间--”,这时可管理所有的工作空间资源;但在新建任务的时候,必须切换到某一个工作空间。
- 新建一个工作空间后,通过“System”-“用户管理”-“Workspace”,给用户指定工作空间的访问权限;超级管理员身份默认可管理全部的工作空间。
- 如果工作空间的状态是Disable,将无法切换到该工作空间的使用,但相关已存在的资源都不影响;如果删除一个工作空间,则该工作空间下的所有资源将会全部被清除。
1、Nemo用户分为三种类型:
- 超级管理员:可管理整个Nemo用户、工作空间、参数设置、任务及资源
- 管理员:可管理参数设置、任务及资源
- 普通用户:只能查看资源,没有删除资源和管理任务的权限。
2、Nemo安装后,默认帐号密码分别为nemo/nemo,该用户是超级管理员,请登录立即更改默认密码。 3、用户可在“Config”-“配置管理”-“修改登录密码”中对用户登录进行修改;超级管理员可以“System”-“用户”-“Reset”中,修改指定用户的登录密码。
配置管理是配置Nemo任务的默认的参数,包括:
- 端口扫描
- 子域名收集
- 指纹获取
- 任务切分
- 在线API
- 任务消息通知Token
- 自定义任务的工作空间GUID
- 代理配置
在Nemo的任务中,这些默认参数有些是Server生成任务时使用(任务切分、任务消息通知Token),有些是用于Worker任务执行时读取(具体可查看conf目录下server.yml和worker.yml)。
请注意:请保持server下的worker.yml配置文件与worker中的worker.yml一致,因文件同步机制及后续的某些任务功能会读取worker.yml,如果不一致可能导致运行异常。
在IP与Domain管理页面中,“新建任务”可以对任务的执行参数选项进行调整(主要是端口扫描、子域名收集和指纹获取);“XScan”任务是使用默认的参数选项执行。
- 默认扫描程序:nmap或者masscan,端口扫描是直接通过命令调用可执行文件
- 默认扫描端口:--top-ports 1000,采用nmap的格式(兼容masscan)
- Nmap探测技术:-sS,nmap默认使用SYN扫描(masscan无须该参数)
- 扫描速度:1000
- PING:Nmap扫描是设置Ping,如果不设置,则会在调用nmap时增加-Pn参数(masscan无须该参数)
- 子域名被动枚举:调用Subfinder进行被动枚举
- 子域名暴力枚举:调用massdns,使用指定的字典进行子域名暴力枚举
- 子域名爬虫:使用爬虫任务指定的域名的首页进行爬取,从页获得页面中与指定域名相关的子域名
- ICP备案查询:调用Chinaz的ICP备案值查询API接口,获取任务域名的ICP备案信息(需要设置在线API接口)
- Whois查询:在线查询任务域名的Whois信息
- 忽略CDN:对使用CDN的IP、Domain跳过进一步的指纹获取
- 忽略非大陆IP:对非中国大陆的IP跳过进一步的指纹获取
- 对IP进行端口扫描:对获取到的子域名在通过域名解析获得IP后,对IP生成端口扫描任务(任务会使用商品扫描配置的默认参数)
- 暴力枚举字典文件:默认使用的暴力枚举字典subnames.txt;内置字典有普通字典(subnames.txt)和大字典(subnames_medium.txt),分别有9W和88W条,大字典执行使用的时间较长,建议慎重使用。
- Httpx:调用httpx,获取web指纹
- FingerprintHub:根据web_fingerprint_v3.json获取web指纹(不再调用Observer_Ward)
- Screenshot:调用chrome进行网页屏幕截图
- IconHash:获取web的favicon
- fingerprintx:调用fingerprintx获取非HTTP的端口指纹信息
在新建任务,如果选择任务的执行方式为根据IP切分、根据端口拆分或根据IP和端口拆分时,会根据设置的切分数量,将一个任务分成多个任务执行。
- IP切分数量:64
- 端口切分数量:1000
- FOFA:设置fofa接口的email和token
- Hunter:hunter的token
- Quake:quake的token
- Chinaz:icp查询的token
由于在线API资产查询需要会员,并且查询返回的结果需消耗会员可用的查询余额,为了更好的资产收集效果,建议购买高端或专业的会员。同时v2.10后,增加了API查询请求和返回的数量限制,默认为每次请求100条记录,上限为1000条;同时在日志里会有超出设置上限的提示。可根据使用情况进行设置,如果设置上限为0,则表示不限制查询返回的数量。
Nemo支持调用相关平台的API发送任务执行结果消息,目前支持:
备注:部份平台需设置通知内容的关键字,请设置为“Nemo”。
Nemo将任务分为5种类型,worker启动时通过参数-m指定worker执行的任务类型;对自定义的任务:-m 5,需要用-w参数指定任务关联的工作空间GUID(比如-w 1a0ca919-7960-4067-9981-9abcb4eaa735)。 在Nemo的IP或Domain列表视图中,切换到第一步配置的工作空间,配置自定义任务的工作空间,这些工作空间的任务将会被设置为自定义任务;在新建任务或XScan任务后,只有启动命令为:-m 5 -w 1a0ca919-7960-4067-9981-9abcb4eaa735的worker才会收到任务并执行。
配置格式为:GUID 备注,可以每行配置一个配置多个如: 1a0ca919-7960-4067-9981-9abcb4eaa735 172网段;
为提高Worker部署和扫描的灵活性,在v2.11版本后,Worker的部份任务功能支持sock5代理,包括:
- gogo的端口扫描
- 指纹获取
- 在线API接口
- 子域名任务被动收集(subfinder)和爬虫
- Nuclei漏洞验证
支持同时配置多个socks5代理地址(地址格式为socks5://user:pass@host:port),多个地址将由worker每次任务时随机选择。 由于获取网站截图时调用的chrome-headless不支持验证功能的socks5代理,因此worker在启动时默认在127.0.0.1:5010地址进行代理转发到设置的socks5地址。 worker可通过命令行参数-np关闭代理功能。如果前端任务指定了代理扫描选项,但未配置socks5地址或worker关闭了代理功能,任务将会不使用代理直接执行。
自定义管理可以设置自定义IP归属地、端口服务、黑名单,以及上传Xray和Nuclei的Poc文件及设置Xray的配置文件。
IP归属地默认使用纯真的离线数据库。对于企业内部使用的私有地址,可通过自定义IP归属地方式,方便IP的属地化查看。在任务IP归属地查询时,会优先查找和使用自定义的IP归属地。自定义的格式为IP与归属地说明之间用空格分开,#是注释。
自定义的IP归属地有三种方式:
- 自定义IP:支持单IP、连续IP地址(172.16.8.10-172.16.8.30)和CIDR(192.168.120.128/25)三种方式定义IP和对应的归属地
- 自定义C段:以C段(24位掩码)方式定义归属地,如192.168.1.0/24
- 自定义B段:以B段(16位掩码)方式定义归属地,如172.16.0.0/16
端口对应的服务类型,默认使用nmap-services;自定义服务可用于企业内部使用的特定的端口和服务,方便端口服务的查看。自定义格式为:端口号/tcp 自定义类型类型,比如20022/tcp SSH服务,中间用空格进行分隔。
蜜罐的定义格式为:domain或者IP port1,port2,... 蜜罐名称 (中间以空格分隔),#为注释。如果无确定端口,则指定为-,只匹配该domain/IP;如果指定了端口,则同时匹配domain/IP和端口才标记为蜜罐,如:
- www.honeypot.com - 这是一个蜜罐
- 192.168.120.160 11080,33306 本地测试蜜罐
在IP和Domain的页面中,对匹配到的蜜罐,会提示红色的“蜜罐”信息。
任务结果中黑名单中的IP与域名不会保存到数据库中;通过在线资产平台(如FOFA等)收集到的资产如果是黑名单中,会忽略指纹获取、漏洞扫描任务及保存。黑名单分为IP黑名单和域名黑名单
- IP黑名单:格式为:IP 备注(备注为可选),如单IP:172.16.8.1 XX公司;连续IP地址:172.16.8.10-172.16.8.30 YY公司;CIDR:192.168.120.128/25 ZZ公司
- 域名黑名单:用于域名任务,以及在线资产管理平台收集到的黑名称匹配,采用正则匹配的方式,格式为完整的主/子域如: qq.com、stmp.qq.com、.pop3.qq.com、.gov.cn
可上传单个xray(.yml)或nuclei(.yaml)的poc文件,上传的位置是conf/worker.yml中配置的路径。
对漏洞扫描的Xray配置文件进行修改,包括:
- config.yaml
- module.xray.yaml
- plug.xray.yaml
- xray.yaml
具体的配置,请参考Xray的文档。
组织是用来对同一工作空间中的资源进行逻辑归属,工作空间的资源可以不指定组织归属,也可以有且归属于某一个组织。目前不能手工将某个IP或Domain资源指定到某个组织中,只能通过新建任务的方式,在任务中指定组织,将任务执行的最终结果中包括的IP或Domain归属到某个组织中。如果这个资源以前已归属一个不同的组织,则只会被重新归属到最新的任务指定的组织。
在实战攻防中,可能同一团队中多个队员、同时开展对多个目标的渗透测试工作,每个队员在新建任务时,将任务目标与组织进行关联后,团队通过查询中指定组织就能比较方便地查看该组织相关的IP或Domain资源,能够做到目标清晰、减少干扰。
如果在组织管理中删除某一个组织,则该组织关联的资源将会被全部删除。
在Nemo中,资源包括:IP、Domain和Vulnerability,每一个资源都属于一个工作空间,在同一个工作空间中,IP和Domain是唯一的。
任务有三种类型的任务:
- 端口扫描
- 漏洞扫描
- 探测+扫描
端口扫描
- 对指定的IP目标,调用nmap/masscan进行端口扫描
- 对扫描开放的端口使用指定的方式进行指纹探测
- 调用在线资产平台,获取IP关联的资产
- 查询IP归属地
“目标资产所有端口”选项:读取输入目标的资产IP已探测到的所有开放端口,进行指纹和信息收集;可以和主动扫描同时进行,也可以单独进行。输入的目标只能是 IP 或者 IP/掩码 两种格式。
漏洞扫描
- 对指定的IP目标,调用相应的漏洞验证工具进行漏洞扫描
- 扫描的目标会直接传递给漏洞工具,格式为ip:port的方式,如果不指定port为为默认的80端口
- 目标资产所有开放端口:读取输入目标的资产IP已探测到的所有开放端口,按ip:port格式生成漏洞验证的目标输入的目标只能是 IP 或者 IP/掩码 两种格式。
探测+扫描
- 探测:对指定目标IP目标的指定端口进行端口扫描(一般为80、443、8080,也可根据实际情况设置),如果该IP存活且端口开放,则将该IP的C段加入到下一步的扫描目标中
- 扫描:对探测到的存活C段,按指定的扫描端口进行扫描(同“端口扫描”任务)。
指纹获取
在完成端口扫描或在线API获取到IP的端口后,可以使用以下几种指纹获取技术获取端口的详细信息:
- Httpx:调用httpx程序,获取web相关的详细指纹,包括title、server、status-code、TLSData、以及HTTP的Header及Body等
- FingerprintHub:调用Observer_Ward程序及定义的web_fingerprint_v3指纹特征库,获取端口的指纹信息
- Screenshot:调用Headless Chrome浏览器,获取端口的屏幕截图信息
- IconHash:获取HTTP网站的Icon图标及信息
在线资产平台API
可调用在线资产的API平台,获取IP关联的资产,支持以下平台:
- Fofa
- Quake
- Hunter
使用在线资产API平台获取资产,必须在配置管理里设置有效的API Token,如果API有并发及检索数量限制,可能导致调用失败。该任务与端口扫描任务是同时并发进行的。
通过在线资产API平台获到到的资产,在经过去重后会使用任务设置的扫描工具和指纹工具选项,对端口进行扫描和获取指纹信息。
任务模式
任务模式是新建任务时,对任务执行的并发程度进行控制的方式。一般情况下,任务的目标可能是一个或多个IP及IP段,在新建任务时,合理地对目标IP或端口进行拆分,一方面可以通过多个任务并发执行提高执行效率,另一方面多个任务分配到多个worker上执行,减少了同一IP的扫描流量。
任务模式有以下方式:
- 单任务:对全部目标生成一个任务执行
- 每一行目标单个任务:将输入的目标每一行生成一个任务执行
- 按IP切分任务:将输入目标,按配置管理的“任务切分”设置的IP个数进行切分生成多个任务,每个任务扫描相同的指定的端口
- 按端口切分任务:将指定的端口按配置管理的“任务切分”设备的端口数量进行切分生成多个任务,每个任务扫描相同的IP目标
- 按IP和端口交叉切分任务:按配置管理的“任务切分”设置的IP和端口个数同时进行切分,交叉生成切分后的IP和端口的任务
定时任务
定时任务是在新建任务的时候,将任务目标及参数保存至数据库,由Server的定时任务线程,根据任务设定的定时规则生成运行任务。定时任务规则是采用Linux的Crontab的定时规则。
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * *
例如:0 8-16/2 * * *表示在每天8-16点的整点,每隔2小时启动
XScan任务,是为了提高工作效率,将端口扫描、在线API资产接口、指纹获取及漏洞扫描实现流程化集成的任务模式。
与普通任务相比,主要有两方面差别。一是在通过端口扫描及在线API接口获得的资产,可以直接进行对结果漏洞扫描;二是在新建XScan任务时简化了参数设置,大部份参数采用配置管理中定义的参数。
XScan任务目标主要有两种形式:
- IP/Domain:目标为输入的IP或Domain,先进行端口扫描(IP目标)或子域名收集(Domain)任务,对结果进行指纹获取和漏洞扫描
- 组织:读取指定组织已收集到的信息,生成IP:Port列表或域名列表,进行指纹获取和漏洞扫描
对已收集到的IP资产,Nemo提供了列表视图和资产详细视图两种模式,为团队提供资产搜索、标记、备忘录及删除功能。
列表视图
在列表视图下,主要提供了IP及归属地、开放端口及HTTP状态码,以及汇聚Icon图标、Title、Banner及屏幕截图等信息。资产默认是按更新时间排序,可点击“更多”选项,去掉勾选的“按更新时间排序”,则将会IP地址的Int值顺序进行排序。
可根据以下条件的进行搜索资产(条件之间是逻辑“与”的关系):
- 组织
- Domain:与IP关联的Domain
- IP:单个IP或IP掩码格式
- Port:指定端口开放的IP
- IP归属地
- 端口属性
- HTTP状态码
- 颜色标记
- 备忘录信息
- HTTP信息
- IP更新时间
- 端口发现时间
资产详细视图
在列表视图点击IP地址,进入资产详细视图,主要包括以下内容:
- 端口信息:IP所开放的端口
- 关联域名:与IP关联的所有Domain
- 站点标题:汇聚该IP所有端口获取到的title属性的内容
- Banner:汇聚该IP所有端口获取到的的banner、server、tag、fingerprint等属性的内容
- IconHash:该IP下所有端口获取到的HTTP系统的Icon及Hash值,可点击自动跳转到Fofa的Iconhash搜索
- Screenshot:该IP下所有端口获取到的网站屏幕截图
- 漏洞信息:IP与关联的漏洞信息
- 端口信息:IP每一个端口收集到的详细信息的来源、属性、内容及时间等
置顶
将选择的IP或域名资产始终固定在列表视图的顶部,便于提醒团队关注该信息;被置顶的资产可以取消置顶。
备忘录编辑及导出
在团队协作中,队员可以将该资产的有关信息,比如获取到的用户名密码、分析的结果、重要提醒等通过备忘录的方式,保存相应的资产中。在列表视图中,有备忘录的资产将会显示小旗子进行提示,同时也可以通过模糊查询对备忘录进行搜索或导出。
标记颜色
Nemo内置了RED、YELLOW、BLUE、GREEN、GRAY及BLANK六种颜色,供团队对资产进行分类标记,被标记的资产将会在列表视图中显示对应的背景颜色。同时被标记的颜色也可以被清除标记。
导出
导出功能根据当前列表视图的搜索条件,将IP资产按以下格式导出为csv格式文件:
- Url
- IP
- 开放端口
- IP归属地
- HTTP状态码
- 标题
- 指纹
- TLS数据
- HTTPX的返回信息
- Source
统计
统计功能根据当前列表视图的搜索条件,统计IP资产的以下属性:
- 开放端口及IP数
- IP所属子网,及该子网有多少IP
- IP列表
- IP归属地统计
导入离线资产
支持解析并导入常用端口扫描工具的扫描结果到Nemo中,目前支持以下工具及平台的资产:
- nmap
- masscan
- fscan
- gogo
- naabu
- httpx
- TxPortMap
- 0Zone
- Fofa
- Hunter
对大部份资产平台及扫描结果的解析,为根据当前工具的文档定义自行编码进行的解析,不能保证全部的完整性和正确性。
一键拉黑
将IP或域名资产加入到黑名单列表中,同时从数据库中删除IP或域名,以及IP关联的域名! 通过将IP或域名拉黑的方式,降低使用在线API接口获取到的部分无效资产的干扰,请慎重使用!
任务有两种类型的任务:
- 资产扫描
- 漏洞扫描
资产扫描
- 资产扫描使用子域名收集技术,收集目标域名下的子域名
- 对目标域名和子域名的进行指纹探测
- 调用在线资产平台,获取目标关联的资产
- 获取目标的Whosis、ICP备案信息
- 对域名和子域名进行地址解析
- 域名的资产扫描任务完成后,可对所有结果解析的IP地址或C段生成端口扫描任务,端口扫描使用配置管理中配置参数选项
漏洞扫描
- 对指定的域名目标,调用相应的漏洞验证工具进行漏洞扫描
- 扫描的目标会直接传递给漏洞工具,格式为Domain:port的方式,如果不指定port为为默认的80端口
子域名收集技术
- 子域名被动枚举:调用Subfinder进行被动枚举
- 子域名暴力枚举:调用massdns,使用指定的字典进行子域名暴力枚举(字典文件在“配置管理-子域名默认收集技术”)
- 子域名爬虫:使用爬虫任务指定的域名的首页进行爬取,从页获得页面中与指定域名相关的子域名
- ICP备案查询:调用Chinaz的ICP备案值查询API接口,获取任务域名的ICP备案信息(需要设置在线API接口)
- Whois查询:在线查询任务域名的Whois信息
同IP的XScan任务
对已收集到的域名资产,Nemo提供了列表视图和资产详细视图两种模式,为团队提供资产搜索、标记、备忘录及删除功能。
列表视图
在列表视图下,主要提供了IP地址,以及汇聚Icon图标、Title、Banner及屏幕截图等信息。资产默认是按更新时间排序,可点击“更多”选项,去掉勾选的“按更新时间排序”,则将会资产的完整域名的ASCII码升序排序。
可根据以下条件的进行搜索资产(条件之间是逻辑“与”的关系):
- 组织
- Domain:域名的关键词进行模糊查询
- IP:关联的单个IP
- 域名属性
- 颜色标记
- 备忘录信息
- HTTP信息
- 更新时间
- 创建时间
备注:Nemo在对域名资产汇聚Title、Banner及站点标题等信息时,包含域名关联的IP地址中的上述信息。
资产详细视图
在列表视图点击域名,进入资产详细视图,主要包括以下内容:
- 端口信息:域名关联的IP开放的端口
- 关联IP:与域名关联的所有IP地址
- 站点标题:汇聚域名及关联的IP的title属性的内容
- Banner:汇聚域名及关联的IP的banner、server、tag、fingerprint等属性的内容
- IconHash:域名获取到的HTTP系统的Icon及Hash值,可点击自动跳转到Fofa的Iconhash搜索
- Screenshot:域名下所获取到的网站屏幕截图
- 漏洞信息:与域名关联的漏洞信息
- 域名相关信息:域名的指纹收集、ICP备案、Whois查询、HTTP等信息
- 端口信息:域名关联的IP每一个端口收集到的详细信息的来源、属性、内容及时间等
导出
导出功能根据当前列表视图的搜索条件,将域名资产按以下格式导出为csv格式文件:
- Domain
- IP
- 开放端口
- HTTP状态码
- CDN信息
- 标题
- 指纹
- TLS数据
- Source
统计
统计功能根据当前列表视图的搜索条件,统计域名资产的以下属性:
- 主域名
- 子域名
- 子域名中域名列表及出现的次数
- 域名关联的IP的C段
- 域名关联的全部IP
其它功能使用参见IP管理
漏洞是Nemo任务通过调用漏洞检测工具,对通过POC验证存在的资产及漏洞的信息。Nemo支持调用以下几种漏洞检测工具:
- XRay
- Nuclei
- Goby
XRay和Nuclei是通过命令行的方式传递参数调用并解析结果文件;Goby需通过服务端部署的模式,通过API调用和解析结果。
POC使用与管理
-
XRay调用POC的两种方式:
- 内置POC:每一个版本的xray都集成了相应的POC,可直接进行使用
- 自定义POC:对XRay没有集成的POC,可自行编写后上传到Nemo进行使用
-
XRay如果不指定POC,会执行默认webscan模式。
-
Nuclei的POC,在Release包中默认是集成nuclei-templates
-
Goby由于没有提供POC列表,因此任务是使用全部的POC。更多Goby相关的细节,请参考安装文档中的Goby内容。
-
XRay与Nuclei可在“自定义管理”-“Poc上传”处,上传自定义的POC;相同文件名的的POC会覆盖并不会提示,目前暂时只能手工在worker删除上传的POC文件。
Nemo有三种类型的任务:
- 定时任务
- 主任务
- 运行子任务
定时任务和主任务在是IP或Domain管理页面,通过新建任务或XScan任务,指定任务目标、设置任务参数和执行的技术。主任务在新建后会立即执行;定时任务由Server的定时任务进程根据任务的定时启动规则,周期性地生成主任务后启动执行。
运行子任务是主任务启动执行后,根据目标的执行模式、使用的技术方式等,生成多个子任务并发执行,如果有多个worker则会分布式执行。运行子任务是worker中真正执行具体的扫描和信息搜集的过程。
定时任务和主任务会存入到数据库中,Server定时任务线程根据定时规则生成主任务。
主任务后台线程根据任务的要求生成运行子任务、监控子任务的执行状态,同时将运行子任务发布到消息中间件。Nemo的任务是异步且分布式执行的,采用了rabbitmq消息中间件进行子任务的分发和确保任务完成的可靠性。
主任务在整个执行过程中,有以下状态:
- CREATED:创建,主任务还没有开始执行
- STARTED:正在执行中,已生成了运行子任务并且子任务已发送到消息队列中
- SUCCESS:执行完成,所有运行子任务全部执行完成或被取消,没有待执行或执行中的运行子任务
运行子任务有以下状态:
- CREATED:创建,还没有开始执行
- STARTED:执行中
- SUCCESS:完成,并成功执行
- FAILURE:完成,但执行失败
- RECEVIED:创建并被worker接收
- PENDING:任务被挂起
- REVOKED:任务被中止取消执行
- RETRY:任务失败重试
中止取消子任务执行 运行子任务被创建(CREATED)、但没有开始执行时,可手工中止取消任务(REVOKED),或者删除该任务。由于golang的协程运行机制,任务处于执行中(STARTED)无法中断协程的运行。
唯一的(不完美)方式是:删除该任务(最终是删除掉数据库的记录),通过Dashboard“重启”,或手工Kill执行该任务的worker进程后重启worker进程。在worker被“重启”或kill后,任务会被重新放回消息队列并分发到其它正常的worker,但由于数据库中已删除任务记录,worker不会去执行该任务,同时在日志里会提示“任务不存在”。
如果从web的任务管理中删除一个已执行中的运行子任务,不会影响该任务的正常执行(除非重启执行任务的worker进程),但任务的结果(IP、Domain资产及属性等)不会被正常保存。如果删除主任务,则该主任务生成的运行子任务也将全部被删除。
如果重启worker,当前worker的正在执行的任务虽然会被中断,但任务会被重新放回消息队列并分发到其它正常的worker并再次重新执行。
Nemo比较推荐采用分布式worker的使用方式。为了方便对worker的资源分发,设计了server与worker的文件同步功能。文件同步的运行机制为:
-
Server在启动后,会在5002端口上进行文件同步监听,同时会对Server下的指定的文件和目录的更改进行监控,监控的文件和目录包括:
- work_linux_amd64
- version.txt
- conf
- thirdparty
可参见pkg/filesync/config.go
// syncFileList 需要同步的文件白名单 var syncFileList = []string{"worker_linux_amd64", "version.txt", "conf", "thirdparty"} // syncFileBlackList 不需要、禁止同步的文件黑名单 var syncFileBlackList = []string{"thirdparty/massdns/temp", "conf/server.yml", "conf/app.conf"}
-
Worker在启动时,会主动请求Server进行一次文件同步
-
可以在server或worker启动时,增加-nf选项禁止文件同步功能
文件同步功能会在worker上新建和覆盖server上相同的文件,worker不会自动删除被server删除的文件,也不会删除server不存在的文件或目录。
从v2.10后,worker的RuntimeLog通过RPC的方式上传到Server并保存到数据库中,从v2.9版本升级需导入runtimelog.sql以创建数据库表。
Nemo日志按从高到低分为Fatal、Error、Warning、Info、Debug及Trace六个级别,每条日常包含了来源Worker、产生日志的文件、函数及信息,重点需关注Error和Warning类。
从v2.11后,支持对worker的任务执行情况、所在VPS的CPU/MEM资源使用率进行监控,同时可通过Server端动态修改Worker的启动参数;修改的启动参数由Daemon进程重启并传递到Worker执行。可修改的启动参数包括:
- 任务并发数(-c)
- 任务执行模式(-m)
- Worker性能模式(-p)
- 默认启动参数文件(-f)
- 自定义任务的工作空间GUID(-w)
- 关闭socks5代理功能(-np)
知识库是Nemo的一个功能模块,主要是为了方便团队协作,将团队的知识、经验、资产等进行整理、归纳和分享。知识库文档的内容可关联到IP和域名资产。目前已集成了飞书知识库,具体使用方法见飞书知识库的文档。
从飞书知识库中同步知识库的文档列表到Nemo中。
如果文档在Nemo中不存在,则在Nemo中创建文档,如果文档在Nemo中存在,则更新文档的标题和时间。如果文档在飞书知识库中不存在,则会从Nemo中删除文档。
Nemo会调用飞书知识库的API,获取每一个文档的纯文本内容,并提取出其中的IP和域名,如果该文档中的IP和域名在Nemo中存在,则会创建文档和IP、域名的关联关系。在IP或域名的列表及详情页面中,可以查看到该IP或域名在哪些文档中出现过。
通过Nemo新建一个文档,即可在Nemo中新建一个文档,并通过API同步在飞书的知识库中创建文档。创建文档时,标题将同步到飞书知识库中的文档标题,备注只是用于在Nemo中使用。
点击文档列表中的标题,即可打开网页版的飞书知识库的文档编辑页面。文档的编辑最终是由飞书云文档在线进行的,Nemo只是提供了一个打开文档编辑页面的链接。
修改文档只是修改了文档的标题和备注,不会修改飞书知识库中的文档信息。同时可以选择是否将文档在Nemo中置顶(不会影响飞书知识库中的文档),如果文档已导出到Nemo,也可以选择是否清除导出的文档。
可将文档导出到Nemo中。导出的文档将会保存在Nemo的“知识库”目录下。已导出的文档在标题前会有标记,点击即可下载到本地进行查看和编辑。