网络运维与网络安全 学习笔记2023.12.5

网络运维与网络安全 学习笔记 第三十五天
在这里插入图片描述

今日目标

su用户切换、sudo命令提权、部署动态Web应用
数据库安全加固、Web安全加固
网络监控基础、配置zabbix主控机、配置zabbix被控机
管理监控项、监控结果分析

su用户切换

su机制介绍及用法

Linux安全基线
指的是使Linux各项配置都符合安全要求的基本标准
账号/密码:口令复杂度/wheel组
SSH登录控制:禁root/改端口/密码/密钥验证··
[root@svr203~]# vim /etc/ssh/sshd_configPermitRootLogin no
//此行中的yes改no,可以禁止root远程登录
[root@svr203~]# systemctl restart sshd
//重启远程服务

su机制介绍
Substitute User,切换/替换用户
root切换为任何可登录的用户,无需密码
普通用户切换至其他用户时,需要验证目标用户的登录密码
不指定目标用户时,默认切换为root

su基本用法
切换到新用户的登录环境
执行su -用户名进入新的用户环境
执行exit返回原来的用户
[root@svr203~]# su - student
//切换为student,其中–表示登录
… …
[student@svr203 ~]$ pwd
//以student身份执行任务
/home/student
[student@svr203 ~]$ exit
//退出切换环境
注销
[root@svr203~]#
//已返回到原来的环境

su控制及跟踪

禁止滥用su切换权限
通常情况下,任何用户都被允许使用su切换
openEuler中已启用wheel组限制
除了root以外,只有加入wheel组的用户才被允许使用su切换
其他人使用su切换时,会提示拒绝权限

[root@svr203~]# vim /etc/pam.d/su… .-
auth requiredpam_wheel.so use_uid
//删除此行开头的#注释符号
[student@svr203~]$ su -
密码:
su:拒绝权限

su操作日志
安全日志/var/log/secure 文件
记录了用户登录、切换相关的事件消息
查找su-l关键词,可以找到与使用su切换用户相关的消息

[root@svr203~]# less /var/log/secure
Apr 2510:34:15svr203 su: pam_unix(su-l:session): session opened for user studentby root(uid=0)
Apr 25 i0:34:26svr203 su: pam_succeed_if(su-l:auth): requirement "uid>= 1000"not met by user “root”
Apr2510:38:07svr203 su: pam_unix(su-l:session): session closed for user student

sudo命令提权

sudo授权及使用

sudo机制介绍
Super doing,执行管理员授权的命令
允许授权用户代替管理员(或其他用户)来完成预先授权的命令
授权用户、授权命令需要提前配置
通过sudo执行命令时,只验证自己的密码(5分钟内不重复验证)

配置sudo授权
使用visudo专用工具
用户名本机可用主机名列表=(用户身份)授权命令列表
不指定用户身份时,缺省为root
[root@svr203~]# visudo

%wheelALL =(ALL) ALL
//允许wheel组用户使用任何命令(行首加#号可取消)
zx ALL= /usr/bin/nmcli,/usr/ bin/nmtui
//允许用户zx使用nmcli、nmtui管理网络
zy ALL=ALL//允许用户zy使用所有命令

sudo基本用法
查看自己的sudo授权
sudo -l
[zy@svr203~]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。总结起来无外乎这三点:
#1)尊重别人的隐私。
#2)输入前要先考虑(后果和风险)。
#3)权力越大,责任越大。
[sudo] zy的密码://初次使用时,验证用户zy的密码(5分钟内不再验证)用户zy可以在svr203上运行以下命令:
(root)ALL

执行管理员已允许提权的命令
sudo命令行
[zy@svr203~]$ mkdir /zydir//正常使用,无权在/下创建子目录
mkdir:无法创建目录"/zydir":权限不够
[zy@svr203 ~]$ sudo mkdir /zydir //sudo方式使用,成功在/下创建子目录
[zy @svr203~]$ ls -ld /zydir
drwxr-Xr-x. 2 root root 64月25 11:20/zydir

sudo日志跟踪

sudo操作日志
日志审计功能默认不开启
如果需要,可以手动打开sudo操作日志
[root@svr203~]# visudo

Defaults logfile=/var/log/sudo
//添加此行,要求记录sudo操作
[root@svr203~]# cat /var/log/sudo//使用过sudo后,会记录在这个文件中
Apr2511:34:52:zy:TTY=pts/1; PWD=/home/zy; USER=root ; COMMAND=list
Apr 25 11:34:59:zy: TTY=pts/1; PWD=/home/zy; USER=root ;
COMMAND=/bin/touch/zyfile

部署动态Web应用

部署DZ论坛代码

论坛系统概述
Forum,网络论坛
指的是Internet上的一种电子信息服务系统
提供一块公共电子白板,每个用户都可以在上面发布信息、提出看法
也称为BBS,Bulletin Board System

关于Discuz!论坛/社区系统
腾讯旗下北京康盛公司Comsenz出品
使用PHP语言编写,支持MySQL等多种数据库
免费提供源代码,用于学习、测试;商业站点需购买授权许可

确认LAMP环境
LAMP平台要确保已正常运行
主要是httpd、mariadb服务,必要时可以重启一下
[root@svr203 ~]# systemctl restart httpd mariadb
//重启web和数据库
若无特别需要,建议停用防火墙、停用SELinux保护
[root@svr203~]# systemctl disable firewalld --now
//停用防火墙
[root@svr203 ~]# setenforce 0
//停用SELinux

部署Discuz!论坛代码
下载 Discuz!论坛程序包,部署为网站目录
将upload目录上传到Web服务器(比如,作为bbs 网页子目录)
[root@svr203~]# ls /var/www/html/bbs/
//确认结果
admin.php configfavicon.ico index.php misc.php search.php
api connect.php forum.php install plugin.php source
… …

访问Discuz!安装页面
从浏览器访问http://服务器地址/bbs/,可看到安装页面

安装DZ论坛系统

搞定目录权限
1.使用chown将相关目录的所有者改为apache
2.特别提示:还需要关闭SELinux保护机制
正确设置数据库连接、管理员密码
MariaDB数据库的默认管理员为root,密码为空
成功安装后,页面底部会出现相应提示

数据库安全加固

数据库服务配置

LAMP+Discuz!环境部署
网站+数据库“速成版”环境
1.安装httpd、mariadb-server、php、php-mysql
2.启用httpd 服务、mariadb服务
3.基于上述LAMP默认环境部署Discuz_X3.4_SC_UTF8.zip 论坛系统

――其实,互联网中相当一部分网站就是类似这种的“默认”环境

mysql_secure_installation
默认设置很方便,也很不安全
需要为MariaDB/MySQL的test库、空密码等默认设置填坑
注意:生产环境建议运行此脚本,并仔细完成所有安全优化操作

[root@svr203 ~]# mysql_secure_installation

Web前台连数据库
指定前端系统如何连接数据库
服务器地址、数据库用户名、连接密码、数据库名
最好改用非root用户(需提前授权)

[root@svr203~]# vim /var/www/html/bbs/config/config_global.php
… …
$_config[‘db’][‘1’][‘dbhost’]=‘localhost’;
//数据库服务器地址
$_config[db’]1][dbuser’] =‘root’;
//数据库用户名
$_config[‘db’]1][dbpw’]='pwd@1234";
//数据库密码
$_config['db]1][‘dbname’]=‘ultrax’;
//数据库名称

Web后台连数据库
指定后端系统如何连接数据库
可以与前端使用同一套数据库用户名/密码
也可以另外准备一套账号
[root@svr203~]# vim /var/www/html/bbs/config/config_ucenter.php
… …
define(‘UC_DBHOST’, ’ localhost’);
//数据库服务器地址
define(‘UC_DBUSER’,’ root’);
//数据库用户名
define('UC_DBPW", ‘pwd@1234’);
//数据库密码
define(‘UC_DBNAME, ’ ultrax’);
//数据库名称

控制配置文件的权限
默认所有人有r读权限,非必要、应去除[
[root@svr203 bbs]# chmod o-r config/config_global.php
[root@svr203 bbs]# chmod o-r config/config_ucenter.php

[root@svr203 bbs]# ls -lh config/config_global.php
-rw-r-----. 1 apache apache 4.8K 6月15 14:49 config/config_global.php
-rw-r-----. 1 apache apache 540 6月1515:24 config/config_ucenter.php

Web安全加固

Web配置调整

httpd.conf常规优化
理解常规配置
DocumentRoot:设置本网站的网页根目录
Listen:设置在本机监听Web服务的IP地址及端口
DirectoryIndex:设置访问网站目录时的默认网页文件名
ServerName:设置本网站注册的DNS名称(即完整域名)

[root@svr203~]# vim /etc/httpd/conf/httpd.conf
… …
DocumentRoot “/var/www/html”
Listen 80
Directorylndex index.html…
//上述内容是默认配置

隐藏版本信息
通过浏览器/扫描工具很容易获取Web服务端的软件版本信息
通过隐藏版本细节,可以提高侦察难度
[root@svr203~]# vim /etc/httpd/conf.d/sec1.conf
//新建一个配置文件
ServerTokens Prod
//HTTP响应只显示产品名(默认为Full,显示全部)
ServerSignature off
//服务器信息不显示签名

[root@svr203~]# systemctl restart httpd
//重启服务
[root@svr203~]# nmap -sV -p 80 localhost
//使用nmap扫描本机,只显示Apache httpd

保护网页目录
默认配置的httpd允许自动列出目录下所有资源
针对目录启用“Options -Indexes”可以关闭目录浏览功能
[root@svr203~]# vim /etc/httpd/conf.d/sec2.conf
<Directory “/var/www/html/vod”>
//针对特定目录
Options -Indexes
//添加-号表示禁用此项功能

[root@svr203~]# systemctl restart httpd
//重启服务

网络监控基础

开源监控方案
拥有集成化、自动化、Web管理等优势
监控结果直观、支持报警插件
… …
zabbix体系架构
采集数据
展示结果
触发告警
在这里插入图片描述
准备网站、数据库支持
一台openEuler 20.03主机
主机名: svr203.tedu.cn,IP地址:192.168.10.203/24
安装并启用LAMP网站平台

[root@svr203~]# vim /etc/hosts
//添加本地域名记录
192.168.10.203 svr203.tedu.cn
[root@svr203 ~]# yum -y install /root/lamp_oe1_pkgs/*.rpm
//安装预备好的离线包
//安装LAMP组件
[root@svr203~]# systemctl restart httpd mariadb php-fpm //开启服务
[root@svr203~j# systemctl enable httpd mariadb php-fpm //设置开机自运行

安全策略调整
禁用防火墙
[root@svr203~]# systemctl stop firewalld
//立即停止防火墙
[root@svr203~]# systemctl disable firewalld
//禁止开机自动运行
禁用SELinux机制
[root@svr203~]# setenforce 0
//使SELinux失效
[root@svr203~]# vim /etc/selinux/config
//开机时禁用
SELINUX=disabled
//修改原有的SELINUX=enforcing行

配置zabbix主控机

安装zabbix主控端软件

安装主控端组件
在线安装可参考官方文档
https://www.zabbix.com/documentation/5.0/zh/manual
国外源,可能会比较慢

离线安装可从教学资源中获取
比如zabbix5o_pkgs目录,将其上传至主控机的/root/目录下
[root@svr203~]# yum -y install /root/zabbix50_pkgs/.rpm //安装包
[root@svr203~]# yum list "zabbix
"
//检查安装结果

已安装的软件包
zabbix-agent.x86_64 5.0.11-1.el8
//被控端
zabbix-apache-conf.noarch 5.0.11-1.el8
//网站配置文件
zabbix-get.x86_64 5.0.11-1.el8
//检测工具(可选)
zabbix-server-mysql.x86_64 5.0.11-1.el8
//主控端
zabbix-web.noarch 5.0.11-1.el8
//web控制界面
zabbix-web-deps.x86_64 5.0.11-1.el8
//PHP协作配置文件
zabbix-web-mysql.noarch 5.0.11-1.el8
//数据库支持

安装zabbix网页控制台

配置Web界面
安装好zabbix包以后,先重启一次httpd服务
[root@svr203~]# systemctl restart httpd//更新zabbix的网页配置
访问http://192.168.10.203/zabbix,单击“Next step”

若提示时区未设置,要先正确设置时区,再刷新网页

修改/etc/httpd/conf.d/zabbix.conf配置
启用时区配置(删除行首;号),并正确设置时区值
[ root@svr203 ~]# vim /etc/php-fpm.d/zabbix.conf
… …
php_value[date.timezone]=Asia/Shanghai
//时区设为亚洲/上海
[root@svr203~]# systemctl restart php-fpm
//重启Web以更新服务配置

若提示拒绝连接数据库,要先准备库及账号,再刷新网页

为zabbix建立专用库及授权用户,根据提示填写网页
[root@svr203~]# mysql -u root
create database zabbix character set utf8 collate utf8_bin;
//建库
grant all on zabbix.* to zabbix@localhost identified by 'zbx@1234";
//建用户、设置密码
quit;

若提示table … … not found,则要先导入初始库,再刷新网页ZABBIX

导入zabbix-server-mysql提供的初始数据
通过管道|操作交给mysql命令,导入到zabbix库中
[root@svr203~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz| mysql -uzabbix -pzbx@1234 zabbix

完成初始化以后,可以看到登录界面

启用zabbix主控服务

要告知zabbix-server如何访问数据库
[root@svr203~]# vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
//数据库名
DBUser=zabbix
//数据库用户
DBPassword=zbx@1234
//连接密码,注意删除行首#号
然后,再启动zabbix-server服务
[root@svr203~]# systemctl restart zabbix-server
//启动主控端服务
[root@svr203 ~]# systemctl enable zabbix-server
//设置开机自运行

部署zabbix被控机

安装被控端组件
被监控的Linux主机需要部署zabbix-agent代理程序
zabbix主控机,也可以作为被控机
前一节实际上已经安装好了
[ root@svr204~]# yum -y install /root/zabbix50_pkgs/zabbix-agent*.rpm
//安装agent代理包
[ root@svr204~]# yum list “zabbix*”
//检查安装结果
已安装的软件包
zabbix-agent.x86_64 5.0.11-1.el8 @@commandline
启用zabbix-agent被控服务
调整监听设置,允许主控机来采集数据
[root@svr204~]# vim /etc/zabbix/zabbix_agentd.conf

Server=127.0.0.1,192.168.10.203
//添加主控机的地址
ServerActive=127.0.0.1,192.168.10.203
//添加主控机的地址
Hostname=svr204.edu.cn
//本机的主机名
启用zabbix-agent服务
[root@svr204~]# systemctl restart zabbix-agent
//启动服务
[root@svr204~]# systemctl enable zabbix-agent
//设置开机自运行

管理监控项

管理被控机

用户登录及账号控制
登入zabbix控制台http://192.168.10.203/zabbix/
默认管理员账号Admin,密码是zabbix
单击左侧栏User settings,将界面语言修改为Chinese(zh_CN)

管理被控机
Zabbix导航边栏→配置→主机
可添加新的被控机:指定主机名、可见名、agent接口地址
可管理现有被控机:停用/启用、修改、选监控模板、…….

管理被控机的监控项

设置监控项
单击被控主机右侧的“监控项”,可以管理监控项
关联了OS Linux模板时,会自动添加大量监控项
比如针对CPU、内存、登录用户数、运行任务数等指标的监控

zabbix自动发现,或管理员手动添加新监控项
网卡入站流量net.if.in[ens33]
网卡出站流量net.if.out[ens33]

监控结果分析

使用仪表板
监测→仪表板,用于集中展现监控指标、报告问题
仪表板展示的数据块可以编辑
在这里插入图片描述

查看监控图形
监测→主机→xx→图形,查看主机的监控结果
在这里插入图片描述
修复中文显示
[root@svr203 ~ ]# yum -y install wqy-zenhei-fonts//安装中文字体(文泉驿-正黑)
[root@svr203 ~ ]# cp /usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc
/usr/share/zabbix/assets/fonts/graphfont.ttf//替换掉默认字体cp:是否覆盖"/usr/share/zabbix/assets/fonts/graphfont.ttf"? y
在这里插入图片描述
创建监控图形
选中被监控主机→图形→创建图形
比如“网卡流量分析”图,整合入站/出站流量监控项
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/219310.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

哈希表【1】

文章目录 &#x1f914;0.哈希表&#x1f33c;1. 两数之和&#x1f33b;1. 题目&#x1f337;2. 算法原理&#x1f33a;3. 代码实现 &#x1f348;面试题 01.02. 判定是否互为字符重排&#x1f34c;1. 题目&#x1f34f;2. 算法原理&#x1f353;3. 代码实现 &#x1f914;0.哈…

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-C卷

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-C卷 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-C卷A模块基础设施设置/安全加固&#xff08;200分&#xff09;A 模块基础设施设置/安全加固&#xff08;200 分&am…

一个跨平台、跨空间支持多用户的远程云备份系统

多可云备份系统用于将一台服务器上的数据&#xff0c;高速备份到另一台或多台服务器上。无论这些服务器都在同一个局域网内&#xff0c;还是都在云服务器上&#xff0c;或者是分别在局域网内和云服务器上&#xff0c;使用多可云备份系统&#xff0c;都能够高速、高效、精确地完…

AntV和AntD之间的区别与联系

前言&#xff1a;最近在调研前端的一些框架&#xff0c;技术栈主要是用react&#xff0c;所以找到了2个十分相似解决方案&#xff0c;拿来对比一下&#xff08;antd和antv都是基于react&#xff09; antd对比antv antd antv 解决方案企业级 UI 设计语言数据可视化解决方案提供…

每日一练 | 华为认证真题练习Day142

1、路由器的主要功能&#xff0c;以下说法错误的是&#xff1f;&#xff08;多选&#xff09; A. 通过多种协议建立路由表 B. 根据路由表指导数据转发 C. 根据收到数据包的源IP地址进行转发 D. 实现相同网段设备之间相互通信 2、管理员发现无法通过TFTP传输文件到华为AR200…

【设计模式】策略模式设计-电影票打折功能

任务二&#xff1a;使用策略模式设计电影票打折功能 某电影院售标系统为不同类型的用户提供了不同的打折方式&#xff08;Discount&#xff09;&#xff0c;学生凭学生证可享受8折优惠**&#xff08;StudentDiscount&#xff09;&#xff0c;儿童可享受减免10元的优惠&#xf…

使用gunicorn部署django项目时,发现静态文件加载失败问题

本文主要介绍如何配置Niginx加载Django的静态资源文件&#xff0c;也就是Static 1、首先需要将Django项目中的Settings.py 文件中的两个参数做以下设置&#xff1a; STATIC_URL /static/ STATIC_ROOT os.path.join(BASE_DIR, static) 2、将 STATICFILES_DIRS [ os.p…

开关电源有哪些EMI整改?|深圳比创达电子EMC

某控制产品在进行辐射发射测试时&#xff0c;发现测试结果超标&#xff0c;辐射发射测试结果如下图所示&#xff1a; 控制产品在去掉发射源之前&#xff0c;就在各外部端口采取了各种滤波措施&#xff0c;结果并无明显作用&#xff0c;即使把所有相关外部引线全部拿走(只剩下电…

js 防抖函数、节流函数

/** 节流函数 */ export function throttle(func, wait 100) {let isDoing falsereturn function (...rest) {if (isDoing) returnisDoing truesetTimeout(() > {func(...rest)isDoing false}, wait)} }/** 防抖函数 */ export function debounce(func, wait 100) {let…

微信小程序开发:地图路线规划全流程,超详细!!!(包括遇到的问题解决)

目录 效果展示 第一章 准备阶段 1.1 使用uniapp搭建微信小程序 1.2 条件1&#xff1a;appId&#xff08;微信小程序appId&#xff09; 1.3 条件2&#xff1a;key&#xff08;腾讯位置服务申请的key&#xff09; 1.4 条件3&#xff1a;插件appId&#xff08;微信小程序插件…

C语言每日一题(41)循环队列

力扣 622 循环队列 题目描述 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前…

分布式版本管理系统---->Git(Linux---centos(保姆式)讲解1)

文章目录: 1:什么是Git以及作用 2.Git的基本操作过程(创建git仓库,配置仓库的配置) 3.git的工作区&#xff0c;暂存区&#xff0c;版本库的关系 4.将文件添加到版本库&#xff1a;git add 与git commit -m命令 5.git log查看日志的引入 6.查看.git文件中的内容 7.修改文件内容查…

图扑数字孪生压缩空气储能管控平台

压缩空气储能在解决可再生能源不稳定性和提供可靠能源供应方面具有重要的优势。压缩空气储能&#xff0c;是指在电网负荷低谷期将电能用于压缩空气&#xff0c;在电网负荷高峰期释放压缩空气推动汽轮机发电的储能方式。通过提高能量转换效率、增加储能密度、快速启动和调节能力…

探索什么样的导线,适合做433的天线

​​​​​​一、理论基础 (3 封私信 / 18 条消息) 为什么天线的材质会影响接收电磁波的效果&#xff1f; - 知乎 (zhihu.com) 电感基础3——RLC电路&#xff0c;帮助你轻松理解“阻抗”的概念 - 知乎 (zhihu.com) 一文读懂介电性能---介电常数 - 知乎 (zhihu.com) 433MHz 至…

亚马逊,shopee,lazada自养号测评补单,保护店铺信誉提升自然流量

测评补单对跨境电商卖家来说&#xff0c;是运营店铺的重要手段之一。一个产品想要有更好的曝光、更高的转化率&#xff0c;需要有一个好的Listing排名。Review在各平台Listing中占据着较高的权重&#xff0c;一个好的Review能给用户带来良好的观感&#xff0c;使用户对产品的信…

【EI会议征稿】第五届人工智能、网络与信息技术国际学术会议(AINIT 2024)

第五届人工智能、网络与信息技术国际学术会议&#xff08;AINIT 2024&#xff09; 第五届人工智能、网络与信息技术国际学术会议&#xff08;AINIT 2024&#xff09;将于2024年3月22-24日在中国南京举行。本届会议将主要关注人工智能、网络与信息技术面临的新的挑战问题和研究…

使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案

一、延长k8s证书时间 查看 apiserver 证书有效时间&#xff1a;默认是一年的有效期 [rootxuegod63 ~]# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep Not 延长证书过期时间 1.把 update-kubeadm-cert.sh 文件上传到 xuegod63 节点 vim update-…

写给初学者的 HarmonyOS 教程 -- 页面路由(router)

页面路由&#xff08;router&#xff09;是指在应用程序中实现不同页面之间的跳转和数据传递。 HarmonyOS 提供了 Router 模块&#xff0c;通过不同的 url 地址&#xff0c;可以方便地进行页面路由&#xff0c;轻松地访问不同的页面。 类似这样的效果&#xff1a; 页面跳转是…

代理服务器如何保护用户隐私和安全?

目录 前言 一、代理服务器的工作原理 二、代理服务器的隐私保护机制 1. IP地址隐藏 2. 安全加密 3. 访问控制 三、代理服务器的安全问题 1. 黑客攻击 2. 版本漏洞 3. 恶意软件 四、总结 前言 代理服务器是一种位于用户与服务器之间的中介&#xff0c;可以隐藏用户的…

VSCode 配置JavaScript环境

首先下载node.js&#xff0c;我的电脑是Windows10版本 之后安装node 在这里插入图片描述 安装成功 如果发现运行的时候还是报错&#xff0c;则添加环境变量试试 在Windows10版本的搜索框&#xff0c;搜索环境变量&#xff0c;点击 D:\Program Files\nodejs\ %NODE_HOME…