欢迎新同学的光临
… …
人若无名,便可专心练剑


我不是一条咸鱼,而是一条死鱼啊!


网上看到了许多Snort3的安装以及Snort2的安装教程,尤其是Snort3的安装,博主严重怀疑他们有没有真的安装成功... ...,让人真的想扣jio,Snort3按照其它博主给的搭一直出问题,不是搭不上就是报错要么就是写的很乱,没看的欲望。而且Snort3和Snort2的安装区别很大,博主只尝试了Snort3的完整安装,并记录了下来,Snort2的网上很详细,也顺路整理了一下,有需要的自取
# 0x01 Snort2安装教程
  • 安装Snort2 需要的依赖
apt-get install gcc					: 编译器,如果报错,apt-get install g++
apt-get install flex				: DAQ所需的解析器
apt-get install bison				: DAQ所需的解析器
apt-get install zlib1g-dev			: Snort所需的压缩库
apt-get install libpcap-dev    		: Snort所需的网络流量捕获头文件库
apt-get install libdnet-dev			: 不是必要的,只是snort为几个网络历程提供了简化的可移植接口
apt-get install luajit   			: lua的头文件库headers
apt-get install liblua5.1-0-dev
apt-get install liblua5.1-0-dev liblua50-dev liblualib50-dev
apt-get install build-essential		: 提供编译软件的构建工具
apt-get install libpcre3-dev		: Snort所需的pcre3的头文件
apt-get install libdumbnet-dev		: 同libdnet
apt-get install openssl libssl-dev	: ssl的加密组件,提供SHA和MD5文件签名
apt-cache search lua
apt-get update
apt-get upgrade
apt-get install gcc
apt-get install flex
apt-get install bison
apt-get install zlib1g-dev
apt-get install libpcap-dev
apt-get install libdnet-dev
apt-get install luajit
apt-get install liblua5.1-0-dev
apt-get install liblua5.1-0-dev liblua50-dev liblualib50-dev
apt-get install build-essential
apt-get install libpcre3-dev
apt-get install libdumbnet-dev
apt-get install openssl libssl-dev
apt-cache search lua
  • 下载一些源tarball和其他文件,将它们存储在一个文件夹中,方便管理
mkdir ~/snort_src
cd ~/snort_src
  • 安装libpcap
cd ~/snort_src
wget https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz
tar -zxvf libpcap-1.10.1.tar.gz
cd libpcap-1.10.1
./configure && make && make install
  • 安装nghttp2
wget https://github.com/nghttp2/nghttp2/releases/download/v1.46.0/nghttp2-1.46.0.tar.gz
tar -zxvf nghttp2-1.46.0.tar.gz
cd nghttp2-1.46.0
./configure && make && make install
  • 安装LuaJIT
wget https://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar -zxvf LuaJIT-2.0.5.tar.gz
make && make install (ps:./configure)
  • 安装pcre
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
tar -zxvf pcre-8.45.tar.gz
cd pcre-8.45
./configure && make && make install
  • 安装daq
wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
tar xvzf daq-2.0.7.tar.gz              
cd daq-2.0.7
./configure && make && sudo make install
  • 安装Snort2
wget https://www.snort.org/downloads/snort/snort-2.9.19.tar.gz
tar xvzf snort-2.9.19.tar.gz             
cd snort-2.9.19
./configure --enable-sourcefire && make && sudo make install
sudo ldconfig
ln -s /usr/local/bin/snort /usr/sbin/snort
snort -V

1.1 配置snort文件

  • 创建一些必要的文件
# Snort的安装目录
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/rules/iplists
sudo mkdir /etc/snort/preproc_rules
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo mkdir /etc/snort/so_rules# 存储过滤规则和服务器黑白名单
sudo touch /etc/snort/rules/iplists/default.blacklist
sudo touch /etc/snort/rules/iplists/default.whitelist
sudo touch /etc/snort/rules/local.rules# 创建日志目录
sudo mkdir /var/log/snort
sudo mkdir /var/log/snort/archived_logs# 调整权限
sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /var/log/snort/archived_logs
sudo chmod -R 5775 /etc/snort/so_rules
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules# 改变文件夹属主
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrulesclassification.config	: 描述了Snort理解的攻击分类类型(将规则分组为这些类型的分类),例如木马活动或系统调用检测。分类列表可以在Snort手册的第3.4.6节中找到file_magic.conf			: 描述了用于标识文件类型的规则reference.config		: 包含提供有关警报的更多信息的规则中引用的URLsnort.conf				: 是Snort的配置文件,它告诉Snort资源的位置,以及如何输出警报等threshold.conf			: 允许您控制生成警报所需的事件数,这有助于抑制噪声警报gen-msg.map				: 告诉Snort哪个规则使用哪个预处理器,更多信息在这里。unicode.map				: 提供Unicode语言和标识符之间的映,nSnort需要此文件才能启动。
  • 复制文件到我们的/etc/snort,这里的路径一定要确保是你的snort的解压路径
cp ~/snort-2.9.12/etc/*.conf* /etc/snort
cp ~/snort-2.9.12/etc/*.map /etc/snort
cp ~/snort-2.9.12/etc/*.dtd /etc/snort
cp ~/snort-2.9.12/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/* /usr/local/lib/snort_dynamicpreprocessor/			
  • 修改默认配置
	编辑snort.conf (ps:现在你的snort.conf在/etc/snort/)gedit /etc/snort/snort.conf1. 修改一些文件的路径,你可以搜索RULE_PATH,然后将下面几个路径改为如下var RULE_PATH /etc/snort/rulesvar SO_RULE_PATH /etc/snort/so_rulesvar PREPROC_RULE_PATH /etc/snort/preproc_rules# If you are using reputation preprocessor set thesevar WHITE_LIST_PATH /etc/snort/rules/iplists/var BLACK_LIST_PATH /etc/snort/rules/iplists/2. 打开文件过滤规则包含,去掉开头的#号include $RULE_PATH/local.rules3. 修改配置文件让黑白名单生效whitelist $WHITE_LIST_PATH/default.whitelist, \blacklist $BLACK_LIST_PATH/default.blacklist
  • 安装rules包
wget https://www.snort.org/downloads/registered/snortrules-snapshot-29190.tar.gz
tar zxvf snortrules-snapshot-29190.tar.gz -C /etc/snort
cp /etc/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9.19.0/* /usr/local/lib/snort_dynamicrules/
  • 启动测试,请无视WARNING警告,不用担心,这不会影响我们的安装
sudo snort -T -c /etc/snort/snort.conf ......
Snort successfully validated the configuration!
Snort exiting
  • Snort2 安装教程
    https://blog.csdn.net/weixin_46763552/article/details/116350545

  • Snort2 规则配置教程
    https://blog.csdn.net/weixin_46763552/article/details/116350908

参考链接

https://blog.csdn.net/qq_38990949/article/details/85568020

0x02 Snort3安装

2.1 安装依赖以及必备组件

sudo apt-get update && sudo apt-get dist-upgrade -y
sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev zlib1g-dev
sudo apt-get install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev cmake liblzma-dev openssl libssl-dev cpputest libsqlite3-dev libtool uuid-dev git autoconf bison flex libcmocka-dev libnetfilter-queue-dev libunwind-dev libmnl-dev ethtool

2.2 调整时间

sudo dpkg-reconfigure tzdata

2.3 下载一些源tarball和其他文件,将它们存储在一个文件夹中,方便管理

mkdir ~/snort_src
cd ~/snort_src

2.4 下载并安装safec,以便对某些旧式C库调用进行运行时边界检查

cd ~/snort_src
wget https://github.com/rurban/safeclib/releases/download/v02092020/libsafec-02092020.tar.gz
tar -xzvf libsafec-02092020.tar.gz
cd libsafec-02092020.0-g6d921f
./configure
make
sudo make install

2.5 安装Hyperscan

Snort 3使用Hyperscan进行快速模式匹配。可以从Ubuntu存储库安装一个旧版本的Hyperscan,但是Hyperscan对Snort的操作和性能至关重要,最好编译Hyperscan的最新稳定版本。Hyperscan有一个需求数量,包括PCRE、gper工具、ragel和Boost库。

  • 首先安装PCRE:Perl兼容的正则表达式。不使用Ubuntu存储库,因为它有一个旧版本:
cd ~/snort_src/
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
tar -xzvf pcre-8.45.tar.gz
cd pcre-8.45
./configure
make
sudo make install
  • 安装 gpertools
cd ~/snort_src
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz
tar -xzvf gperftools-2.9.1.tar.gz
cd gperftools-2.9.1
./configure
make
sudo make install
  • 安装 Ragel
cd ~/snort_src
wget http://www.colm.net/files/ragel/ragel-6.10.tar.gz
tar -xzvf ragel-6.10.tar.gz
cd ragel-6.10
./configure
make
sudo make install
  • 下载(但不要安装)Boost C++库
cd ~/snort_src
wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz
tar -xvzf boost_1_78_0.tar.gz
  • 从源代码处安装Hyperscan 5.3,参考Boost源目录的位置
cd ~/snort_src
wget https://github.com/intel/hyperscan/archive/refs/tags/v5.4.0.tar.gz
tar -xvzf v5.4.0.tar.gz
mkdir ~/snort_src/hyperscan-5.4.0-build
cd hyperscan-5.4.0-build/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBOOST_ROOT=~/snort_src/boost_1_78_0/ ../hyperscan-5.4.0
make
sudo make install

2.6 安装flatbuffers

cd ~/snort_src
wget https://github.com/google/flatbuffers/archive/refs/tags/v2.0.0.tar.gz -O flatbuffers-v2.0.0.tar.gz
tar -xzvf flatbuffers-v2.0.0.tar.gz
mkdir flatbuffers-build
cd flatbuffers-build
cmake ../flatbuffers-2.0.0
make
sudo make install

2.7 安装DAQ

安装数据采集库(DAQ),Snort3使用的数据采集卡与Snort 2.9.0系列不同

cd ~/snort_src
# 可以根据自身下载最新的库
wget https://github.com/snort3/libdaq/archive/refs/tags/v3.0.5.tar.gz
tar -xzvf libdaq-3.0.5.tar.gz
cd libdaq-3.0.5
./bootstrap
./configure
make
sudo make install
  • 更新共享库
sudo ldconfig

2.8 最后源码安装Snort 3

如果对启用其他编译时功能感兴趣,例如处理大型(超过2GB)PCAP文件的能力,或者新的命令行shell:运行./configure cmake.sh–帮助列出所有可选功能,并将它们附加到下面的./configure\u cmake.sh命令中。在Snort网站上查看Snort3的更新版本

cd ~/snort_src
wget https://github.com/snort3/snort3/archive/refs/tags/3.1.20.0.tar.gz
tar -xzvf snort3-3.1.20.0.tar.gz
cd snort3-3.1.20.0
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
cd build
make
sudo make install
  • Snort现安装在/usr/local/下,最后,验证Snort是否正确运行(版本为大写V)
/usr/local/bin/snort -V

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OnqQTyL8-1642406613444)(/upload/2022/01/%E5%9B%BE%E7%89%87-6e885edf2fee4c0f9afe40cbc4b9a6ae.png)]

如果输出与上图一样,Snort已安装并工作

2.9 测试Snort规则

  • 现在让我们用默认配置文件测试Snort
snort -c /usr/local/etc/snort/snort.lua

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XowxJu0n-1642406613446)(/upload/2022/01/%E5%9B%BE%E7%89%87-a710fd1d2ba242ca8558bc908b52bc02.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AD4KgD7G-1642406613446)(/upload/2022/01/%E5%9B%BE%E7%89%87-2e2943e462904edb9539f44c5920ab7a.png)]

  • 为了减少IDS上截断的数据包,配置如下
# 检查这些接口的large-receive-o load(LRO)和generic-receive-offload(GRO)的状态,使用ethtool检查状态
sudo ethtool -k eth0 | grep receive-offload
##内容,输入以下信息,用接口名称替换ens3:
[Unit]
Description=Ethtool Configration for Network Interface
[Service]
Requires=network.target
Type=oneshot
ExecStart=/sbin/ethtool -K ens3 gro off
ExecStart=/sbin/ethtool -K ens3 lro off
[Install]
WantedBy=multi-user.target
  • 创建文件后,运行如下命令启动服务
sudo systemctl enable ethtool
sudo service ethtool start
  • 再次查看两者是否设置为“off”
sudo ethtool -k eth0 | grep receive-offload

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9nZoGgBU-1642406613446)(/upload/2022/01/%E5%9B%BE%E7%89%87-800d7c4b68b84db78aee1c8660a086ee.png)]

2.10 配置规则集

  • 创建一些必要的文件
sudo mkdir /usr/local/etc/rules
sudo mkdir /usr/local/etc/so_rules/
sudo mkdir /usr/local/etc/lists/
sudo touch /usr/local/etc/rules/snort.rules
sudo touch /usr/local/etc/rules/local.rules
sudo touch /usr/local/etc/lists/default.blocklist
sudo mkdir /var/log/snort
  • 在上面创建的local.rules文件中创建一个规则
sudo vi /usr/local/etc/rules/local.rules
  • local.rules文件内容
alert icmp any any -> any any ( msg:"ICMP Traffic Detected"; sid:10000001; metadata:policy security-ips alert; )

PS:此规则将检测ICMP事务,对于测试Snort是否正常工作和生成警报非常有用。将以下行粘贴到local.rules文件中(确保准确复制这行,必须在该文件中的每个分号中有一个空格才能正确解析警报)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1lpjZBl-1642406613448)(/upload/2022/01/%E5%9B%BE%E7%89%87-a41fc2965ee14526ba3fa92b35df8cee.png)]

  • 现在运行Snort并让它加载local.rules文件(带有-R标志),以确保正确加载这些规则(验证规则的格式是否正确)
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules
  • 现在,在接口上以检测模式运行Snort(将下面的eth0更改为与的接口名称匹配),并将所有警报打印到控制台
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules \
-i eth0 -A alert_fast -s 65535 -k none

标志含义

Flag描述
-c /usr/local/etc/snort/snort.luasnort.lua配置文件
R /usr/local/etc/rules/local.rules包含一个ICMP规则的规则文件的路径
-i eth0要监听的接口
-A alert_fast使用alert_fast快速输出插件将警报写入控制台
-s 65535设置snaplen,使Snort不会截断和丢弃过大的数据包
-k none忽略错误的校验和,否则snort将丢弃具有错误校验和的数据包

这意味着snort当前正在侦听该接口上的所有流量,并将其与加载的规则进行比较。当流量与规则匹配时,Snort将向控制台写入警报。现在,从该计算机上的另一个窗口(打开一个新的终端窗口或第二个ssh会话),使用ping命令生成穿过正在侦听的接口的数据包(如果从另一台计算机连接,则ping到该接口的IP地址;如果在同一台计算机上,则只ping外部IP地址)。看到屏幕上打印的警报:

###警报信息
1 2 / 152 1: 0 2: 2 6. 97 6 073 [ * * ] [ 1 : 1 0 0 0 0 0 0 1 : 0 ] " ICMP T r a f f i c De tec te d " [ * * ] [ P r i o r i t y : 0 ] { ICMP } 1 0 . 1 0 . 1 0 . 1> 1 0 . 1 0 . 1 0 . 8 8
1 2 / 152 1: 0 2: 2 6. 9 7 6 15 7 [ * * ] [ 1 : 1 0 0 0 0 0 0 1 : 0 ] " ICMP T r a f f i c De tec te d " [ * * ] [ P r i o r i t y : 0 ] { ICMP } 1 0 . 1 0 . 1 0 . 8 8> 1 0 . 1 0 . 1 0 . 1

使用ctrl-c停止Snort,这是测试Snort的一个很好的规则,但是在实际的生产使用过程中可能会有点嘈杂,所以如果愿意的话,可以用hash(#)符号来注释它。

  • 接下来,编辑snort.lua文件,此文件是我们在启动时传递给Snort的配置文件
sudo vi /usr/local/etc/snort/snort.lua

接下来,我们要启用解码器和检查器警报(Snort检测到的恶意流量,而不是规则,因为格式更复杂),并且我们要告诉ips模块规则文件的位置(PulledPork稍后将为我们创建此文件)

向下滚动到第169行,并查找标题为ips的部分。在这里,我们从enable_builtin_rules=true中取消注释(删除前面的两个破折号),并启用pulledpork规则。请注意,lua使用四个空格,而不是制表符来缩进这些行(这是必需的)。此部分应如下所示(删除注释,166行左右):

ips =
{enable_builtin_rules = true,include = RULE_PATH .. "/local.rules",variables = default_variables}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0CTzXcLO-1642406613448)(/upload/2022/01/%E5%9B%BE%E7%89%87-431478cfb6364407b50d998607e09b64.png)]

  • 测试配置文件
snort -c /usr/local/etc/snort/snort.lua

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrriSwen-1642406613449)(/upload/2022/01/%E5%9B%BE%E7%89%87-38989029ba874ad7a203e7aa84939542.png)]

现在可以如上所述运行snort,但是不会在命令行上明确地传递local.rules文件,因为已经将它包含在snort.lua文件的ips部分中:

sudo snort -c /usr/local/etc/snort/snort.lua -i eth0 -A alert_fast -s 65535 -k none

PS:按上述方式Ping接口,会再次看到写入控制台的警报

2.11 安装PulledWork

PulledWork是我们用来下载和合并Snort规则集的脚本。要从Snort下载主要的免费规则集,需要一个oinkcode。在Snort网站上注册并在继续之前保存的oinkcode,因为最流行的免费规则集需要oinkcode

  • 依赖安装
sudo apt-get install -y libcrypt-ssleay-perl liblwp-useragent-determined-perl
  • 下载PulledPork的最新版本,并通过将perl文件复制到/usr/local/bin和所需的配置文件复制到/usr/local/etc/PulledPork来安装它
cd ~/snort_src
wget https://github.com/shirkdog/pulledpork/archive/refs/tags/v0.7.4.tar.gz -O pulledpork-v0.7.4.tar.gz
tar -xzvf pulledpork-v0.7.4.tar.gz
cd pulledpork-0.7.4
sudo cp pulledpork.pl /usr/local/bin
sudo chmod +x /usr/local/bin/pulledpork.pl
sudo mkdir /usr/local/etc/pulledpork
sudo cp etc/*.conf /usr/local/etc/pulledpork
  • 测试是否安装成功
/usr/local/bin/pulledpork.pl -V
  • 确定PulledWork已运行,对其进行配置:
sudo vi /usr/local/etc/pulledpork/pulledpork.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dTRpK4cx-1642406613450)(/upload/2022/01/%E5%9B%BE%E7%89%87-a90ebb75eaf9458babddcb139121cafa.png)]

第19行,需要更改URL,然后用在snort.com网站注册时获得的oinkcode替换。这将告诉PulledPork从何处下载规则
rule_url=https://www.snort.org/rules/|snortrules-snapshot.tar.gz|<oinkcode>

第24行:评出社区规则。这些不需要,因为它们包含在我们上面包含的注册规则集中:

#rule_url=https://snort.org/downloads/community/|community-rules.tar.gz|Community

第72行:指向正确的snort.rules文件,PulledWork将保存从local.rules文件下载并包含的所有规则:

rule_path=/usr/local/etc/rules/snort.rules

第87行:告诉PulledPork local.rules文件从何处复制规则(并复制到snort.rules中):

local_rules=/usr/local/etc/rules/local.rules

第94行:告诉PulledPork以较新的sid_msg格式输出有关规则的元数据:

sid_msg_version=2

第110行:告诉PulledPork在哪里保存已编译的规则:

sorule_path=/usr/local/etc/so_rules/

第134行,将发行版改为Ubuntu-18-4(即使你运行的是ubuntu20)。这将告诉PulledWork哪个版本的编译规则与我们的系统兼容:

distro=Ubuntu-18-4

第142行:这告诉PulledPork在何处保存阻止列表(已知的恶意IP地址,应该被阻止):

block_list=/usr/local/etc/lists/default.blocklist

第151行:告诉PulledPork块和允许列表的默认位置

IPRVersion=/usr/local/etc/lists

第186行:告诉PulledPork Snort守护进程将当前运行的PID保存在何处,以便PulledPork在安装新规则后可以向Snort发送消息,以便Snort加载新规则:

pid_path=/var/log/snort/snort.pid

第209行:取消对此行的注释以启用下载的规则文件中的所有规则。这些规则被分为不同的规则集,这取决于想要检测trafic的攻击性。如果在IPS模式下运行(阻止而不是检测传输),可能会考虑使用“ballanted”规则集而不是“security”,因为“security”规则集在检测可能是恶意的或可能是正常的流量方面更具攻击性:

ips_policy=security
  • 运行PulledPork,将配置文件传递给它并执行额外的日志记录。这将下载最新的规则集,将它们与local.rules文件中的任何规则合并,并将所有规则保存到snort.rules中,同时将黑名单条目保存在defautl.blocklist文件中:
sudo /usr/local/bin/pulledpork.pl -c /usr/local/etc/pulledpork/pulledpork.conf -l -P -E -H SIGHUP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lHucQc9T-1642406613451)(/upload/2022/01/%E5%9B%BE%E7%89%87-9d46faa834cb421c8e2d6fc1d98a57b4.png)]

使用以下标志:

Flag描述
-c /usr/local/etc/pulledpork/pulledpork.confPulledWork配置文件
-l将重要信息记录到syslog
-P即使未下载新规则,也处理规则
-E仅允许写入排除
H SIGHUP通过传递SIGHUP信号使Snort重新加载配置
  • 下一步是将此命令转换为计划任务,以便可以每天更新规则集
sudo crontab -e
  • 检查snort.rules文件,应该会看到一些新的规则

修改snort.lua以加载snort.rules而不是local.rules文件(local.rules中的规则通过PulledPork自动添加到snort.rules文件中,并与所有下载的规则一起使用,可以在snort.rules文件的末尾看到local.rules中的任何规则)

#167行
ips =
{enable_builtin_rules = true,include = RULE_PATH .. "/snort.rules",variables = default_variables
}
  • 测试Snort以查看这些规则是否正确加载:
snort -c /usr/local/etc/snort/snort.lua

2.12 配置Snort 插件

  • 在snort.lua文件中启用一些功能:
sudo vi /usr/local/etc/snort/snort.lua
  • 首先,配置HOME\u NET变量。这是指我们正在防御的本地子网(规则使用此信息来确定警报是否匹配)。在此处设置本地子网信息以匹配子网。我下面的子网是带有24位子网掩码的10.0.0.0网络
HOME_NET = '10.0.0.0/24'
  • 启用hyperscan(更快的模式匹配):更多信息,请将其放在重新命名检查器之后(配置绑定之前(此处我配置后会有警告提示,我就没有配置了,其它人有需要的话可以配置一下))
reputation=
{blacklist = BLACK_LIST_PATH .. "/default.blocklist"--whitelist = 'whitelist file name with ip lists'
}search_engine = { search_method = "hyperscan" }detection = {hyperscan_literals = true,pcre_to_regex = true
}

2.13 配置输出警告插件

为了方便地将Snort 3警报日志文件导入到选择的SIEM中(如Splunk),需要使用alert\u json输出插件将所有警报写入json格式的文本文件。启用json输出插件很简单,只需修改snort.lua文件(在第7节:配置输出中,大约230行):

sudo vi /usr/local/etc/snort/snort.lua
alert_json =
{file = true,limit = 100,fields = 'seconds action class b64_data dir dst_addr dst_ap dst_port eth_dst eth_len \eth_src eth_type gid icmp_code icmp_id icmp_seq icmp_type iface ip_id ip_len msg mpls \pkt_gen pkt_len pkt_num priority proto rev rule service sid src_addr src_ap src_port \target tcp_ack tcp_flags tcp_len tcp_seq tcp_win tos ttl udp_len vlan timestamp',}
  • 在alert_json插件中,我们指定了三个选项:
    • 首先,我们使用file选项将警报输出到json格式的文件(而不是控制台)
    • 接下来,我们指定limit选项来告诉Snort何时滚动到新文件。当输出文件达到10 MB时,将使用文件名中的当前unixtime创建一个新文件。对于测试,我们将其设置为100MB,但是在生产系统上,可能希望增加这个数字,这取决于如何进行日志管理/轮换
    • 最后,我们指定fields选项,该选项标识json输出中应该包含警报中的哪些特定字段。在这个例子中,我们选择了所有可能的字段作为输出

PS:在测试之后,可以选择删除其中的一些字段(vlan和mpls字段是不必要的,b64_data包含整个数据包负载,可以删除这些数据包负载以节省空间,尽管此字段中有很多好的信息)。不要删除“秒”字段,并确保它始终是列出的第一个字段。这将允许Splunk正确处理事件

现在运行Snort,并生成一些警报。这些警报将写入/var/log/snort。运行下面的命令,然后再次ping接口(就像我们以前所做的那样,生成与local.rules文件中的规则匹配的流量)

sudo /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 \
-k none -l /var/log/snort -i eth0 -m 0x1b

为此命令添加了几个新标志:

Flag描述
-l var/log/snort应该写入日志文件的目录
-m 0x1b033文件权限的Umask(rw-r–r–)
  • 在snort启动后,将不会看到任何输出到屏幕上,因为我们已经启用了alert_json输出模块(该模块按照上面命令中的指定写入/var/log/snort)。停止snort(ctrl-c),然后检查/var/log/snort
cat /var/log/snort/alert_json.txt

2.13 Snort 脚本

创建一个systemD脚本,以便在启动时自动运行snort,出于安全原因,让snort作为常规(非root)用户在启动时运行

  • 创建snort用户和组
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
  • 删除旧日志文件(如果要保留,请移动它们):
sudo rm /var/log/snort/*
  • 需要授予“snort”用户对日志目录的权限
sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort
  • 创建systemD服务文件
sudo vi /lib/systemd/system/snort3.service
  • 具有以下内容(更改以太网适配器eth0以匹配适配器)
[Unit]
Description=Snort3 NIDS Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 \
-k none -l /var/log/snort -D -u snort -g snort -i eth0 -m 0x1b --create-pidfile
[Install]
WantedBy=multi-user.target

Snort中使用的所有标志的分类

Flag描述
/usr/local/bin/snort这是snort二进制文件的路径。这里不使用sudo,因为脚本将以提升的(根)权限启动
-c /usr/local/etc/snort/snort.luasnort.lua配置文件
-s 65535设置snaplen,使Snort不会截断和丢弃过大的数据包
-k none忽略错误的校验和,否则snort将丢弃具有错误校验和的数据包,并且不会对它们进行计算
-l /var/log/snortSnort将存储其输出的所有日志文件的文件夹的路径
-D作为守护进程运行
-u snort启动后(以及执行任何需要提升权限的操作时),切换为以“snort”用户身份运行
-g snort启动后,作为“snort”组运行
-i eth0要监听的接口
-m 0x1b文件权限为033的Umask
–create-pidfile在日志目录中创建一个PID文件(这样pulledpork可以在加载新规则后重新启动snort)
  • 启用Snort systemD服务并启动它
sudo systemctl enable snort3
sudo service snort3 start
  • 检查服务的状态:
service snort3 status
  • 输出应类似于以下内容,显示“active(running)”:
service snort3 status* snort3.service - Snort3 NIDS DaemonLoaded: loaded (/lib/systemd/system/snort3.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2018-12-11 16:48:44 EST; 2min 57s ago
  • 如果有任何问题,可以使用以下命令检查服务的完整输出:
sudo journalctl -u snort3.service

2.14 安装Splunk

下载:https://www.splunk.com/en_us/download/splunk-enterprise.html

需要注册账户才能下载,登录后点击Linux选项卡,然后单击.deb旁边的download Now按钮(基于Debian的Ubuntu系统),如果使用wget下载安装程序,然后单击“通过命令行下载”(wget)复制wget字符串以供下载。

wget  htps://xxxxx
  • 一旦系统上安装了Splunk安装程序,就需要安装它。从保存安装程序的目录:
sudo dpkg -i splunk-8.*.deb
sudo chown -R splunk:splunk /opt/splunk
  • Splunk被安装到/opt/Splunk。请注意,安装的卷Splunk必须有5GB的可用空间,否则Splunk将无法启动。Splunk存储所有收集到的日志数据的索引位于安装位置的子文件夹中,因此请确保此卷上有足够的空间来存储希望收集的所有数据。

第一次启动Splunk(接受许可证并使用所有默认选项),系统将提示为Splunk创建一个新的管理用户和密码。保存这些凭据,因为稍后将使用它们登录到web界面:

sudo /opt/splunk/bin/splunk start --answer-yes --accept-license
  • 然后配置Splunk在引导时自动启动。还将为Splunk启用systemD并启动服务(而不是Splunk systemD服务名称中的大写“S”)。
sudo /opt/splunk/bin/splunk stop
sudo /opt/splunk/bin/splunk enable boot-start -systemd-managed 1
sudo chown -R splunk:splunk /opt/splunk
sudo service Splunkd start

Splunk服务器现在正在侦听此服务器的端口8000(http://localhost:8000(如果是从本地计算机连接,或从另一台计算机通过此系统的IP地址连接),用户名和密码是安装Splunk时设置的

Splunk目前使用免费的企业试用许可证运行,提供60天的所有企业功能,并允许每天索引5GB的日志数据。唯一的功能,我们将失去一旦试用许可证到期,将影响这个安装是删除已验证的登录。转换为免费许可证后,将不会提示登录到Splunk web界面

Splunk Enterprise提供了许多功能,包括自动更新Splunk实例及其自动运行的Splunk应用程序的部署服务器、具有可配置权限的多个用户帐户、负载平衡和其他功能

2.15 配置Splunk

现在,使用在Splunk安装期间创建的用户名和密码登录到Splunk实例。Splunk服务器正在监听端口8000(http://localhost:8000)

需要安装一个Splunk插件(称为Add-on),它允许我们轻松地接收(收集)Snort 3创建的日志并对其进行规范化(确保字段命名与NIDS数据一致,这样Splunk应用程序就可以轻松地显示我们的数据)

要安装此应用程序,请在Splunk实例的主页上,单击Splunk web界面左侧标题为+查找更多应用程序的链接,这将进入Splunkbase,这是一个Splunk插件的在线存储库,它扩展并增强了Splunk安装的功能。在Splunkbase中搜索Snort3,看到一个结果:snort3json警报。单击此加载项旁边的绿色安装按钮

输入注册下载Splunk时使用Splunk创建的用户名和密码(不是为本地Splunk服务器实例创建的用户名和密码)。接受条款和条件,然后单击“登录并安装”。安装完成后,单击“完成”。

接下来,要安装CyberChef for Splunk插件,它允许将b64_data字段转换为可读文本。如上所述,在Splunkbase中搜索“cyberchef”,单击cyberchef旁边的green install按钮以获取Splunk,登录,然后安装

接下来,需要配置Snort 3 JSON Alerts插件,告诉Splunk Snort 3生成的日志文件存储在哪里,以便Splunk能够接收它们,使用配置文件从命令行执行此操作

sudo mkdir /opt/splunk/etc/apps/TA_Snort3_json/local
sudo touch /opt/splunk/etc/apps/TA_Snort3_json/local/inputs.conf
sudo vi /opt/splunk/etc/apps/TA_Snort3_json/local/inputs.conf
  • 在此inputs.conf文件中输入以下文本
[monitor:///var/log/snort/*alert_json.txt*]
sourcetype = snort3:alert:json
  • 重启Splunk
sudo service Splunkd restart

现在,当Splunk启动时,它将扫描/var/log/snort目录中的json文件,将它们分配给sourcetype of snort3:alert:json把它们记录下去

从Splunk实例中登录(因为重新启动了服务器),单击左上角的Splunk>Enterprise链接,然后单击左侧的Search and Reporting app链接。在“搜索”字段中,输入以下文本:

sourcetype="snort3:alert:json"

然后单击绿色放大镜图标开始搜索,这将显示服务器正在收集的所有事件。可能看不到很多事件,特别是如果删除了从pcap文件创建的旧json文件。如果没有看到任何警报,可以使用ping创建一些新警报(请记住,之前创建了该规则)。在生成的事件和Splunk中显示的事件之间有一点延迟。如果仍然看不到任何警报,请将“时间范围”(搜索图标旁边的下拉列表设置为“过去24小时”)更改为“所有时间”,然后重新运行搜索。如果仍然没有看到任何事件,请检查/var/log/snort文件夹中是否有json文件

2.16 使用Splunk

下面是一些简单的搜索,要在包含时间、源、目标和消息的表中显示所有事件,请运行以下搜索:

sourcetype="snort3:alert:json"
| table _time src_ap dst_ap msg
  • 按目的地显示所有事件的计数
sourcetype="snort3:alert:json"
| stats count by dest
  • 要在地图上显示所有事件源
sourcetype="snort3:alert:json"
| iplocation src_addr
| stats count by Country
| geom geo_countries featureIdField="Country"

(可能需要单击“可视化”选项卡,然后单击“折线图”并将其更改为Choropleth地图)

对于许多事件,都会有base64编码的有效负载数据(b64_data)字段(http和SMTP就是一个很好的例子)。为了转换这些数据以便我们可以读取,我们使用“cyberchef”函数为每个事件转换数据(动态),并为每个事件添加一个名为“decrypted”的新字段

 sourcetype="snort3:alert:json" dest_port=80
| cyberchef infield='b64_data' outfield=decrypted operation="FromBase64"
| table src_addr, dst_addr, rule, msg, decrypted
  • 使用Splunk的一些优秀免费资源包括

  • EBook

https://www.splunk.com/en_us/form/exploring-splunk-search-processing-language-spl-primer-and-cookbook.html

  • Free Online Training

https://www.splunk.com/en_us/training/free-courses/splunk-fundamentals-1.html

2.17 Splunk试用版到期换成免费版

Splunk目前运行的是免费企业试用模式只有60天,此时将许可证转换为免费模式,这与企业模式类似,只是删除了一些功能,发现会缺少的功能是使用用户名和密码登录服务器(允许任何人登录),以及失去了一些与集群相关的功能和将Splunk应用程序部署到其他服务器的能力

  • 要更改许可证,请单击右上栏的“设置”,然后单击“许可证”

  • 单击更改许可证组。选择“免费许可证”,然后单击“保存”,单击“立即重新启动”,然后单击“确定”

PS:此时,无法从远程计算机访问spunkweb界面,我们将通过Splunk Web反向代理解决

2.18 反向代理Splunk Web

使用免费许可证的Splunk不会阻止使用用户名和密码进行访问,并且只允许从本地计算机进行访问(取决于切换许可证时是否在本地连接),通过设置一个反向代理,Apache监听该服务器的端口80,需要一个密码,并将重定向到Splunk接口

  • 安装Apache和代理模块
sudo apt-get install -y apache2 apache2-utils
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2
  • 创建新用户
sudo touch /etc/apache2/.htpasswd
sudo htpasswd /etc/apache2/.htpasswd <username>
  • 编辑apache配置文件,以在端口80上设置代理侦听
sudo vi /etc/apache2/sites-available/000-default.conf

在此文件中输入以下信息。如果已经有一个<VirtualHost*:80>部分,请将下面的设置添加到该部分中。告诉apache在端口80上侦听,需要身份验证(htaccess文件中的用户/密码),然后将所有授权的连接转发到端口8000(Splunk正在侦听)

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
<Proxy *>
Order deny,allow
Allow from all
Authtype Basic
Authname "Password Required"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Proxy>
</VirtualHost>
  • 验证apache配置
sudo apachectl -t

PS:可能会得到一个关于服务器FQDN的错误,请忽略

  • 重新启动apache以加载更改
sudo systemctl restart apache2
  • 将Splunk配置为仅接受来自本地计算机的连接(通过代理重定向)
sudo vi /opt/splunk/etc/system/local/web.conf
  • 在“设置”部分下,添加一行:server.socket_host=localhost(如果文件为空,只需添加以下两行,否则将server.socket添加到“设置”部分)
[settings]
server.socket_host = localhost
  • 重新启动splunk以注册更改
sudo service Splunkd restart

现在尝试连接到端口80上的splunk服务器,系统会提示输入用户名和密码。如果尝试连接到端口8000,无法连接(除非是从同一台计算机连接)。

2.19 OpenAppID(可选)

OpenAppID允许识别应用层(第7层)通信量,可以创建对应用程序层流量进行操作的规则(比如阻止facebook),并记录检测到的每种类型流量的流量统计信息。

OpenAppID是Snort的一个可选功能,如果您想检测或阻止流量类型(facebook、FTP等),或者收集Snort服务器检测到的每种流量的数据量指标,则该启用它

Snort团队在社区的帮助下组装了一个探测器包,可下载并安装它,称为applicationdetector包

  • 下载OpenAppID detector包并解压缩文件
cd ~/snort_src/
wget https://snort.org/downloads/openappid/15607 -O OpenAppId-15607.tgz
tar -xzvf OpenAppId-15607.tgz
sudo cp -R odp /usr/local/lib/

PS:如果得到一个文件不存在的错误,那么Snort团队可能更新了规则集。浏览到https://snort.org/downloads#openappid,并下载snort-openappid.tar.gz

接下来,下载Snort Extras存储库,它包含了额外的检查器和插件,包括appid_listener,它将允许以JSON格式输出appid统计信息

cd ~/snort_src/
git clone https://github.com/snort3/snort3_extra.git
cd ./snort3_extra/
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
./configure_cmake.sh --prefix=/usr/local
cd build
make
sudo make install
  • 接下来编辑Snort配置文件以指向这个odp目录
sudo vi /usr/local/etc/snort/snort.lua

找到以下部分并在configure Inspection部分中进行如下配置(修改appid部分,并添加新的appid\u listener部分)

appid =
{app_detector_dir = '/usr/local/lib',
}appid_listener =
{json_logging = true,file = "/var/log/snort/appid-output.log",
}

PS:既然已经做了更改,请如上所述验证snort.lua文件

  • 使用新规则修改local.rules文件,该规则将检测facebook流量
alert tcp any any -> any any ( msg:"Facebook Detected"; appids:"Facebook"; sid:10000002; metadata:policy security-ips alert; )
  • 测试snort_extras插件是否可以加载(这需要额外的命令行opton)以及新规则是否正确格式化
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules \
--plugin-path=/usr/local/lib/snort_extra

在继续之前修复所有错误,-pluginpath参数告诉snort从提取的snort_extra包中加载其他插件,包括appid_listener 插件

  • 首先,需要pulledpork来重新创建snort.rules文件(包括新规则),该文件还将重新加载snort
sudo /usr/local/bin/pulledpork.pl -c /usr/local/etc/pulledpork/pulledpork.conf -l -P -H SIGHUP
  • 其次,需要修改systemD Snort脚本,让其能够加载appid_listener 目录
sudo vi /lib/systemd/system/snort3.service
  • 添加 --plugin-path 选项
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 \
-k none -l /var/log/snort -D -u snort -g snort -i ens3 -m 0x1b --create-pidfile \
--plugin-path=/usr/local/lib/snort_extra
  • 重新加载systemd文件且重新加载snort,并验证服务是否运行
sudo systemctl enable snort3
sudo service snort3 restart
service snort3 status
  • 生成一些facebook流量(wget facebook.com),将看到写入splunk(和json日志文件)的警报
sourcetype="snort3:alert:json" msg="Facebook Detected"
  • 还会在日志目录中看到一个新文件:/var/log/snort/appid-output.log,其中包含json格式的trafic统计信息
{ "session_num": "0.58", "pkt_time": "2020-12-19 09:51:46.540562", "pkt_num": 1665, "apps": { "service"
: "HTTPS", "client": "SSL client", "payload": "Facebook", "misc": null, "referred": null }, "proto"
: "TCP", "client_info": { "ip": "10.10.10.88", "port": 33942, "version": null }, "service_info": {
"ip": "185.60.216.35", "port": 443, "version": null, "vendor": null }, "user_info": { "id": 0, "
username": null, "login_status": "n/a" }, "tls_host": "www.facebook.com", "dns_host": null, "http":
{ "http2_stream": null, "host": null, "url": null, "user_agent": null, "response_code": null, "
referrer": null } }
  • 服务字段告诉检测到此流量的服务,将splunk配置为读取appid stats:接下来,需要配置Snort3 json警报插件来告诉splunk OpenAppID日志文件的存储位置,使用配置文件从命令行执行此操作
sudo vi /opt/splunk/etc/apps/TA_Snort3_json/local/inputs.conf
  • 将以下文本添加到此inputs.conf文件中(不要删除指向警报文件的其他部分)
[monitor:///var/log/snort/*appid-output.log*]
sourcetype = snort3:openappid:json
  • 重启Splunk
sudo service Splunkd restart
  • 现在,在splunk中搜索OpenAppID数据
search sourcetype="snort3:openappid:json"

参考链接

https://www.cnblogs.com/thresh/p/14949405.html

https://www.itdaan.com/blog/2018/02/08/4fc7764b521e10bb0444c926c5472a27.html


我自横刀向天笑,去留肝胆两昆仑


查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 练习推导一个最简单的BP神经网络训练过程【个人作业/数学推导】

    写在前面&#xff1a; 各式资料中关于BP神经网络的讲解已经足够全面详尽&#xff0c;故不在此过多赘述。本文重点在于由一个“最简单”的神经网络练习推导其训练过程&#xff0c;和大家一起在练习中一起更好理解神经网络训练过程。 一、BP神经网络 1.1 简介 BP网络&#xf…...

    2024/4/14 17:25:26
  2. HarmonyOS-ServiceAndroid-Service,上海大厂Android面试经历

    后台服务&#xff1a;后台服务执行用户不会直接注意到的操作。一般情况下&#xff0c;Service都是在后台运行的&#xff0c;后台Service的优先级都是比较低的&#xff0c;当资源不足时&#xff0c;系统有可能回收正在运行的后台Service。前台服务&#xff1a;前台服务执行一些用…...

    2024/4/18 0:05:00
  3. 与Rmarkdown鏖战的过程

    导出Rmarkdown文件的曲折&#xff1a; 第一关&#xff1a;导出报错&#xff1a;The “error in contrib.urlrepos source r markdown” message occurs when using install.packages () 解决方法&#xff1a;把Rmarkdown里install.packages的命令都删除 第二关&#xff1a;…...

    2024/4/14 17:25:31
  4. 目标检测之IoU(box:[top, left, bottom, right])

    参考&#xff1a; 目标检测之 IoU_黑暗星球-CSDN博客_目标检测iouIoU 作为目标检测算法性能 mAP 计算的一个非常重要的函数。但纵观 IoU 计算的介绍知识&#xff0c;都是直接给出代码&#xff0c;给出计算方法&#xff0c;没有人彻底地分析过其中的逻辑&#xff0c;故本人书写…...

    2024/4/14 17:25:11
  5. 测试测试测试

    测试...

    2024/4/20 0:21:49
  6. git 撤销未提交的修改

    (1) git checkout 恢复某个已修改的文件&#xff08;撤销未提交的修改&#xff09;&#xff1a; $ git checkout index.php 例如&#xff1a;git checkout src/com/android/.../xxx.java 比如修改的都是java文件&#xff0c;不必一个个撤销&#xff0c;可以使用 $ git check…...

    2024/4/14 17:25:11
  7. 机器学习笔记--1.6数据可视化

    1.表与线性结构的可视化 Python提供四种容器结构--list、dict、set、tuple来装载数据&#xff0c;其中线性结构有两种&#xff1a;list和tuple。由于tuple是只读结构&#xff0c;仅用于外部生成器生成的数据&#xff0c;所以最常用的线性结构就是list。 import numpy as np i…...

    2024/4/20 8:17:20
  8. JVM内存模型

    JVM内存模型&#xff08;通俗易懂&#xff09;_孤刺-CSDN博客_jvm内存模型 1.什么是jvm? &#xff08;1&#xff09;jvm是一种用于计算设备的规范&#xff0c;它是一个虚构出来的机器&#xff0c;是通过在实际的计算机上仿真模拟各种功能实现的。 &#xff08;2&#xff09;j…...

    2024/4/16 11:01:30
  9. 2021年全球透皮贴剂收入大约6989.7百万美元,预计2028年达到8859.9百万美元

    本文研究全球市场、主要地区和主要国家透皮贴剂的销量、销售收入等&#xff0c;同时也重点分析全球范围内主要厂商&#xff08;品牌&#xff09;竞争态势&#xff0c;透皮贴剂销量、价格、收入和市场份额等。 针对过去五年&#xff08;2017-2021&#xff09;年的历史情况&…...

    2024/5/8 22:47:58
  10. 三层交换和单臂路由

    目录 一、单臂路由 1、链路类型 2、子接口 3、单臂路由概述 4、配置命令 1&#xff09;交换机配置 2&#xff09;路由器配置 二、三层交换技术 1、三层交换原理 2、基于CEF的MLS 3、三层交换机的配置 一、单臂路由 路由器的物理接口可以分化为多个逻辑子接口&#x…...

    2024/4/20 11:28:13
  11. HCIP(10)

    OSPF的选路原则 域内 --- 1类&#xff0c;2类LSA 域间 --- 3类LSA 域外 --- 5类&#xff0c;7类LSA --- 根据开销值的计算规则不同&#xff0c;还分为类型1和类型2. 1.如果学到的路由都是通过1类&#xff0c;2类LSA获取的域内路由 --- 这种情况直接比较开销值&#xff0c;优先选…...

    2024/4/19 9:00:10
  12. Android 项目总结(view控件之设置大小和间距)

    如何为indicator的ImageView设置大小和间距? 借助LayoutParams可以设置这些相关布局参数,但是必须注意:LayoutParams必须使用父类里的,比如父容器是一个LinearLayout,那么LayoutParams就必须使用LinearLayout.LayoutParams,否则会抛一个类型强制转换异常。 直接在Java代…...

    2024/4/14 17:26:27
  13. Git 撤销所有未提交(Commit)的内容

    撸了好多代码&#xff0c;但是突然设计改了(~~o(>_<)o ~~)&#xff1b;或者引入个第三方库&#xff0c;后来又发现用不着&#xff0c;想删掉&#xff0c;但文件太多了(比如几百个)&#xff1b;那&#xff0c;怎么办呢&#xff0c;都不想了...Git 比人聪明&#xff0c;所以…...

    2024/4/19 0:10:37
  14. 管理者和员工在OKR复盘时要思考的12个问题

    管理者和员工在OKR复盘时要思考的12个问题 一、管理者需要考虑以下几点&#xff1a; 在此期间&#xff0c;员工的主要目标和责任是什么&#xff1f; 员工表现如何&#xff1f; 如果有员工表现不佳&#xff0c;他该如何改正&#xff1f; 如果员工表现良好或者超出预期&#…...

    2024/4/14 17:26:07
  15. Ubuntu安装配置opencv和tensorRT

    配置如下&#xff1a; GTX2080ti / Ubuntu16.04 / cuda10.2 / cudnn8.0.3 / tensorrt8.2.0 / opencv3.4.10 缺少&#xff1a;tensorrt8.2.0 opencv3.4.10 准备工作&#xff1a; 查看cudnn版本&#xff0c;这里需要注意的是&#xff1a;新版本的cudnn与旧版本不同&#xff0c;cu…...

    2024/4/7 4:13:53
  16. css 布局和选择器

    css布局和选择器学习目标CSS Float(浮动)案例01案例02清除浮动案例03总结CSS position (定位)static 静态定位&#xff08;默认&#xff09;fixed 固定定位案例04relative 相对定位absolute 绝对定位案例05重叠的元素CSS复杂选择器子元素&#xff08;后代&#xff09;选取器案例…...

    2024/4/21 5:37:45
  17. Chapter 2.1 高频词和关键词提取(一)

    知识点2.1.1 高频词和关键词的区别 高频词&#xff1a;在文档中出现频数较高的词 关键词&#xff1a;能够代表文档重要内容的词 知识点2.1.2 基于numpy和pandas的高频词提取 #载入需要的程序包 import numpy as np import pandas as pd import jieba#导入需分析的文档&…...

    2024/4/14 17:26:02
  18. C++安全方向(三):SHA-1 算法分析和代码演示

    SHA-1算法分析和代码演示 安全散列算法&#xff08;source hash Algorithm&#xff09; 消息摘要&#xff08;message digest&#xff09; 产生160比特&#xff08;20字节&#xff09;散列值H0 H1 H2 H3 H4 强抗碰撞已经攻破&#xff0c;在2005年由王小云公婆 和md5一样都是由m…...

    2024/4/29 16:07:06
  19. 浏览器工作原理学习(十一)

    语言类型 在使用前需要确认其变量数据类型的称为静态语言©&#xff0c;运行过程中需要检查数据类型的语言称为动态语言(js)。在赋值时&#xff0c;语言回进程隐式类型转换&#xff0c;这类语言被称为弱类型语言&#xff0c;不支持隐式类型转换额语言称为强类型语言。 JS数…...

    2024/4/7 4:13:49
  20. 2.爬虫框架scrapy全部笔记

    1、cmd创建项目 scrapy startproject 项目名 2、创建爬虫 进入到刚刚创建的项目下的spiders目录中&#xff0c;scrapy genspider 爬虫名 域名 如&#xff1a; scrapy genspider douban douban.com 3、 用pycharm打开项目&#xff0c;在爬虫文件中开始编写爬虫代码。 …...

    2024/4/14 17:26:17

最新文章

  1. 代码审计-php篇之某CRM系统多处sql注入

    &#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;3516 阅读时间: 35min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果…...

    2024/5/8 23:07:50
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. centos后台运行使用nohup命令

    nohup ./my_script.sh & nohup命令运行后如何关闭 nohup 命令用于在用户注销系统后继续运行指定的命令。如果您想关闭使用 nohup 运行的进程&#xff0c;您可以使用 kill 命令。 首先&#xff0c;您需要找到 nohup 运行的进程的进程ID&#xff08;PID&#xff09;。可以使…...

    2024/5/7 16:06:00
  4. 大数据学习十三天(hadhoop基础2)

    一: MapReduce概述(了解) MapReduce是hadoop三大组件之一,是分布式计算组件 Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果 Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果 我们在MapReduce计算框架的使用过…...

    2024/5/8 16:15:09
  5. 【浅谈面向过程和面向对象的区别】

    面向对象和面向过程是两种不同的编程范式&#xff0c;它们在处理问题和构建软件时有着显著的区别。 一、面向过程 1、基本概念 面向过程编程是一种早期的程序设计范型&#xff0c;它以事件为中心&#xff0c;主要关注“怎么做”&#xff0c;即完成任务的具体步骤。它将问题分…...

    2024/5/8 2:36:54
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57