ClamAV 警告信息解析:cli_scanxz: decompress file size exceeds limits

在使用 ClamAV 进行文件扫描时,日志中经常会出现如下警告信息: pgsqlCopyEditLibClamAV Warning: cli_scanxz: decompress file size exceeds limits – only scanning 105906176 bytes 这条信息可以分解为以下几个部分: 产生原因 ClamAV 为了防止扫描过程中消耗过多系统资源,默认对解压后文件的大小设定了限制。这主要是出于性能和安全考虑,避免在面对恶意构造的巨型压缩文件时导致系统资源耗尽。 是否需要调整 若需要完整扫描所有内容,可在 clamd.conf 配置文件中通过修改如下参数进行调整: confCopyEditMaxFileSize 500M MaxScanSize 1G 需要注意,增加这些值将导致更高的内存和 CPU 占用,并可能导致扫描耗时显著增加。实际应用中,通常只在对安全性要求极高的环境或需要扫描大文件的情况下才会考虑修改。 总结 当 ClamAV 遇到解压后超出大小限制的文件时,会发出警告但继续进行扫描,仅扫描指定限制内的部分数据。这种机制是一种平衡性能与安全性的默认保护措施。在大多数场景下,可保持默认配置,无需额外干预。

使用 ClamAV 进行 Linux 系统全盘扫描并保存日志

在 Linux 系统中,如果需要定期对整台机器进行恶意软件(病毒、木马等)扫描,ClamAV 是一个常用的免费工具。以下介绍如何进行全盘扫描,并将完整扫描结果保存为带时间戳的日志文件,方便后续查看或归档。 基础扫描命令 ClamAV 的 clamscan 工具支持递归扫描,最基本的写法如下: bashCopyEditclamscan -r / 但这样会扫描系统中的所有文件,包括 /proc、/sys、/dev 等虚拟或设备目录,这些目录不适合扫描,会产生大量错误信息。 排除系统特殊目录 为了避免扫描无意义的系统伪文件系统,可以使用 –exclude-dir 参数排除这些目录,例如: bashCopyEdit–exclude-dir=/proc –exclude-dir=/sys –exclude-dir=/dev 此外,如果还需要排除其他目录(比如存放大文件或备份的目录),也可继续添加 –exclude-dir 参数。 自动保存扫描日志 为了后期分析结果,通常需要将扫描输出同时保存为日志文件。可以结合 tee 命令实现: bashCopyEditclamscan -r –bell –exclude-dir=/proc –exclude-dir=/sys –exclude-dir=/dev / | tee /root/clamav_scan_$(date +%Y%m%d_%H%M%S).log 命令说明 是否支持「增量扫描」 ClamAV 的 clamscan 不会自动跳过已扫描过的文件,每次执行都会重新完整扫描。它不包含「增量扫描」或「缓存机制」,也不会记住上次扫描状态。 如果需要仅扫描新增或修改过的文件,需要额外实现文件变更检测(例如使用 inotify)或定期针对指定文件夹进行局部扫描。 总结 💡 …

使用 rkhunter 执行系统 Rootkit 检查及配置 SSH 安全

近期在对 Linux 系统进行安全加固时,执行了 rootkit 检查工具 rkhunter,并同步完善了 SSH 配置。以下为详细流程总结。 🕵️ rkhunter 检查流程 在执行 rkhunter –check 时,默认会在每个阶段提示「按 Enter 继续」,需要手动操作,无法一次性跑完。为实现自动化,可使用以下命令: sudo rkhunter –check –skip-keypress 如果需要将输出保存为日志文件,可追加 tee: sudo rkhunter –check –skip-keypress | tee /root/rkhunter_check_$(date +%Y%m%d_%H%M%S).log 💾 更新文件属性数据库 执行属性文件数据库更新时,常用命令如下: udo rkhunter –propupd 默认会提示确认,可使用 -y 参数自动同意: sudo rkhunter –propupd -y 🔒 SSH 配置安全性调整 rkhunter 在检测 SSH …

邮件评分优化与检测流程总结

近期针对自建域名邮件发送,进行了一次详细的评分检测与优化测试,目标是尽可能提高邮件送达率并符合各大邮件服务商的安全及合规要求。 🎯 背景 测试中使用了一个新注册的 .top 域名,通过 mail-tester.com 检测,初步得分为 8/10,整体表现较好,但仍有部分扣分项需要分析和理解。 ✅ 已完成的安全配置 ⚠️ 主要被扣分的原因 💬 内容优化尝试 ✅ 最终结论 💡 建议 🔗 参考

使用反向代理实现 Apache 服务的域名切换与 HTTPS 加密(含 Certbot 与 FRP 配置)🌐

在构建个人服务时,我们常常需要将 Apache 提供的本地服务通过公网访问,并启用 HTTPS 进行加密通信。本文记录了如何: 🧱 架构概览 本次部署采用了以下结构: arduinoCopyEdit公网用户 ↓ VPS(运行 FRP Server,负责公网端口) ↓ FRP 客户端 → 反向代理服务器(Nginx + Certbot,TLS 终结) ↓ 内网 Apache 主机,仅提供 HTTP 服务(80端口) 🛰️ FRP 配置 FRP 客户端(运行在反代服务器) 配置如下(已脱敏): iniCopyEdit[web_https] type = tcp local_ip = 127.0.0.1 local_port = 443 remote_port = xxxx # 例如 VPS 映射的 …

一个HTTP请求的曲折经历

原文: https://www.neroht.com/article-detail/18 一个HTTP请求的曲折经历 nero发布于 2020-04-30 09:04:73 写在前面 作为程序员的我们每天都在和网络请求打交道,而前端程序员接触的最多的就是HTTP请求。平时工作中,处理网络请求之类的操作是最多的了。但是一个请求从客户端发出到被服务端处理、再回送响应,再被客户端接收这一个闭环的底层细节可能并没有深究过,本篇文章是我的一篇读书笔记,总结出来恰好涉及到了这一过程,分享出来希望可以对大家有所启发。 文中某些点如果表述有误,欢迎指出来,不胜感激。 从一个经典的面试题说起 从输入URL到页面展现的过程 输入URL后,会先进行域名解析。优先查找本地host文件有无对应的IP地址,没有的话去本地DNS服务器查找,还不行的话,本地DNS服务器会去找根DNS服务器要一个域服务器的地址进行查询,域服务器将要查询的域名的解析服务器地址返回给本地DNS,本地DNS去这里查询就OK了。 浏览器拿到服务器的IP地址后,会向它发送HTTP请求。HTTP请求经由一层层的处理、封装、发出之后,最终经由网络到达服务器,建立TCP/IP连接,服务器接收到请求并开始处理。 服务器构建响应,再经由一层层的处理、封装、发出后,到达客户端,浏览器处理请求。 浏览器开始渲染页面,解析HTML,构建render树,根据render树的节点和CSS的对应关系,进行布局,绘制页面。 这4个步骤包含了一个HTTP请求的完整生命周期,文章着重介绍第2步和第3步,也就是请求是如何在两个物理端点之间进行通信的。数据的发出和接收必然会经历一些处理、解析的过程,这些过程在系统的不同层次进行。 分层 一个HTTP请求从源端发出到在终端接收的处理过程都是要经过以下四层。其中每一层都有各自的协议。 我们先来理解一下协议是什么,协议是经过约定,双方共同承认,并且需要共同遵守的规则。上面的每一层,都有各自的协议,协议的执行者是通信链路两端内的对应层。每一层通过协议来理解数据,并进行处理。 上图中只举例出了最常见的协议,实际上每一层都有细分的协议: 应用层:应用程序负责将数据以相应规则(协议)进行包装,发给传输层 HTTP:超文本传输协议 FTP:文件传输协议 SMTP:简单邮件传送协议 SNMP:简单网络管理协议 传输层:负责将应用层传过来的数据进行分组,为确保终端接收数据的顺序和完整性,会对每个分组进行标记,交给网络层 TCP:传输控制协议 UDP:用户数据协议 网络层:负责将传输层发来的数据分组发送到目标终端 IP:网际协议 ICMP:Internet互联网控制报文协议 IGMP:Internet组管理协议 链路层:为网络层发送和接收数据单元 ARP:地址解析协议 RARP:逆地址解析协议 封装和分用 数据在经过每一层的时候都要被对应的协议包装,到达终端的时候,要一层一层的解包。这两个过程叫封装和分用。 发送时,用户数据被HTTP封装为报文,每一层会将上层传过来的报文作为本层的数据块,并添加自己的首部,其中包含了协议标识,这一整体作为本层报文向下传递。 接收时,数据自下而上流动,经过每一层时被去掉报文首部,根据报文标识确定正确的上层协议,最终到应用层被应用程序处理。 封装 源端发送HTTP报文时,报文会以数据流的形式通过一条已经打开的TCP连接按序传输,TCP收到数据流后会将其分割成小的数据块,每个小块被添加的TCP首部与数据块共同组成了TCP分组,分组经由网络层发送,网络层遵循IP协议,当收到分组发送请求后,会将分组其放入IP数据报,填充报头,将数据报发经由链路层发送出去。 这一过程经过每层的时候都会被增加一些首部信息,有时还需要增加尾部信息,每一层都会把数据封装到各自的报文中, 并在报文首部添加协议标识,这个过程叫封装。 分用 终端接收到一个以太网数据帧时,数据自底层向上流动,去掉发送时各层协议加上的报文首部,每层协议都要检查报文首部的协议标识,从而确定上层协议,保证数据被正确处理,这个过程叫分用。 终端从链路层接收到数据请求后,进入网络层对数据进行解析,交给给传输层,校验分组顺序和完整性,从数据块中取出数据,得到HTTP报文,交给应用层进行处理。这个过程会逐层剥离报头还原数据。 逐层分析 我们已经知道,数据是从源端自上而下到终端自下而上被一层层处理的,现在就来看一下每层都做了什么事情。 HTTP HTTP属于应用层,用户触发交互所产生的行为数据和服务端对此的响应都由它封装成HTTP报文,再交由下层协议进行处理。报文的作用是客户端与服务端沟通的载体,双方都要遵循统一规则对信息进行处理,这一规则称为HTTP。 …

nginx.service: Failed to parse PID from file /var/run/nginx.pid: Invalid argument bugs

原文:https://medium.com/@parsher/nginx-service-failed-to-parse-pid-from-file-var-run-nginx-pid-invalid-argument-bugs-fda95eeeda73 # Fix for Nginx PID problem in Ubuntu 16.04 in an EC2 instance sudo systemctl stop nginx sudo mkdir /etc/systemd/system/nginx.service.d # build the file in root where no sudo is needed printf “[Service]\nExecStartPost=/bin/sleep 0.1\n” > override.conf sudo cp override.conf /etc/systemd/system/nginx.service.d/override.conf sudo systemctl daemon-reload sudo systemctl start nginx

Linux客户端查看服务器端图形程序

客户端需要安装openssh-client,服务器需要安装openssh-server,一般情况下默认都是安装好的。 服务器端设置:/etc/ssh/sshd_config中,修改这一行,修改后是这样的: X11Forwarding yes 客户端设置:/etc/ssh/ssh_config中,修改三行,修改后如下: ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes 修改完配置文件,在客户端终端执行 xhost + server_IP ssh -X root@server_IP export DISPLAY=client_IP:0.0 接着在客户端执行图形程序,图形界面便会转发过来了。 即便是服务器没有安装图形界面,只要安装了带有图形界面的程序,就可以进行转发,比如在服务器上安装Firefox,在客户端执行firefox,本地就会打开浏览器窗口。

通过源码编译ngrok并用于端口映射

如果要做端口映射,可以购买ngrok服务,也有免费的方案,可以从源代码自己编译ngrok软件。编译的版本是1.7,更高的版本没有开放源代码。 需要准备的材料: 1、一个备案域名,ngrok需要使用域名,不能直接用公网IP,这里域名以domain.com为例; 2、CentOS主机,在自己电脑上(可以使用虚拟机)或者VPS上都可以; 3、VPS,上面说的域名要设置解析到这台VPS的IP上。 下面列出的是我编译的过程: CentOS环境,要安装以下软件, yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ git go语言环境,要下载适合自己系统的go语言包  这里用的是centos 6.8 64位 所以选择以下包 wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz vim /etc/profile 修改环境变量,添加以下内容: export PATH=$PATH:/usr/local/go/bin source /etc/profile 检测是否安装成功go go version 下载ngrok源码包 mkdir /ngrok …