标签: 安全

  • 使用 opkssh 实现 OpenID 身份验证与 SSH 连接

    opkssh 是一个结合 OpenID 身份验证和 SSH 连接的工具,它能简化 SSH 密钥的管理,并提升 SSH 连接的安全性。与传统的 SSH 密钥验证方式不同,opkssh 通过 OpenID 身份验证来生成 SSH 密钥,使得用户的身份验证更加灵活与安全。

    1. 安装 opkssh

    opkssh 可以在 Windows、macOS 和 Linux 系统上使用。下面是详细的安装步骤:

    在 Windows 上安装 opkssh

    1. 打开 PowerShell 或命令提示符。
    2. 执行以下命令,下载并安装 opkssh
    curl https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-windows-amd64.exe -o opkssh.exe
    1. 下载完成后,你将获得 opkssh.exe 文件。你可以将它放在任何你想要的目录下,并通过命令行运行它。

    在 macOS 上安装 opkssh

    1. 打开终端。
    2. 执行以下命令,下载并安装 opkssh
    curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-osx-amd64 -o opkssh; chmod +x opkssh
    1. 这将下载 opkssh 文件并授予执行权限。你可以将其移动到 /usr/local/bin/ 目录,方便在终端中全局使用。

    在 Linux 上安装 opkssh

    Linux 系统支持多种架构。根据你的系统架构(x86_64 或 ARM64),选择相应的安装命令。

    • 对于 x86_64 架构的 Linux 系统
    curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-linux-amd64 -o opkssh; chmod +x opkssh
    • 对于 ARM64 架构的 Linux 系统
    curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-linux-arm64 -o opkssh; chmod +x opkssh

    安装完成后,你可以将 opkssh 文件移动到 /usr/local/bin/ 目录,或将其保留在当前目录。

    2. 使用 opkssh 进行身份验证与 SSH 登录

    安装完成后,你可以开始使用 opkssh 进行身份验证和 SSH 连接。

    登录并生成 SSH 密钥

    1. 在终端或命令行中运行以下命令:
    opkssh login
    1. 该命令将打开一个浏览器窗口,要求你选择一个 OpenID 提供商并完成身份验证。你可以选择 Google、GitHub 等常见的 OpenID 提供商来进行登录。
    2. 登录成功后,opkssh 会在你的本地系统中生成一个 SSH 公钥文件,默认位置是 ~/.ssh/id_ecdsa。这个密钥对应的是你的 OpenID Token,凭此可以通过 SSH 连接到服务器。

    默认 SSH 密钥过期时间

    生成的 SSH 密钥默认会在 24 小时后过期。到期后,你需要重新运行 opkssh login 来生成新的密钥。

    使用 SSH 登录

    一旦密钥生成成功,你可以像使用传统 SSH 密钥一样使用它来登录到远程服务器。执行以下命令:

    ssh [email protected]

    使用 SFTP 进行文件传输

    你还可以使用 opkssh 生成的 SSH 密钥进行 SFTP 文件传输:

    sftp [email protected]

    3. 自定义 SSH 密钥名称

    opkssh 允许你为生成的密钥指定自定义名称,方便管理。

    登录时指定自定义密钥名称

    如果你希望使用特定名称的密钥,可以在执行 opkssh login 时指定密钥名称:

    opkssh login -i opkssh_server_group1

    使用自定义密钥进行 SSH 连接

    在使用 SSH 时,你可以通过 -i 参数指定自定义的密钥文件。假设你使用了 opkssh_server_group1 作为密钥名称,可以执行以下命令:

    ssh -o "IdentitiesOnly=yes" -i ~/.ssh/opkssh_server_group1.pub -i ~/.ssh/opkssh_server_group1 [email protected]

    这里的 -o "IdentitiesOnly=yes" 参数会确保 SSH 仅使用指定的密钥进行身份验证,避免使用其他默认密钥进行干扰。

    4. 在服务器端安装和配置 opkssh

    为了让你的服务器支持使用 opkssh 进行身份验证,你需要在服务器上安装并配置它。

    安装 opkssh 在服务器上

    1. 登录到你的服务器。
    2. 使用以下命令安装 opkssh
    wget -qO- "https://raw.githubusercontent.com/openpubkey/opkssh/main/scripts/install-linux.sh" | sudo bash

    这条命令会自动下载并安装 opkssh,并将其放置在 /usr/local/bin/ 目录中,同时配置 SSH 服务以支持 opkssh 作为附加的身份验证机制。

    允许单个用户使用 opkssh 登录

    如果你想允许某个用户(例如 [email protected])通过 OpenID 进行身份验证并作为 root 登录到服务器,可以执行以下命令:

    sudo opkssh add root [email protected] google

    允许用户组使用 opkssh 登录

    如果你希望允许某个用户组(例如 ssh-users)中的所有成员通过 OpenID 进行身份验证并作为 root 登录,可以使用以下命令:

    sudo opkssh add root oidc:groups:ssh-users google
  • Windows系统恶意域名连接事件分析与响应

    事件概述

    在防火墙监控中检测到一台内部 Windows 主机(通过其 IP 地址识别)发起了对一个或多个恶意域名的网络连接。这可能表明该主机已受到恶意软件感染,需要立即进行排查和处理。

    1. 识别恶意请求来源

    1.1. 检查防火墙日志

    • 在防火墙管理界面中,找到相关的日志记录,确定:
      • 访问的恶意域名
      • 访问的时间
      • 发起请求的设备 IP
      • 访问的协议(如 HTTP、HTTPS、DNS 等)
      • 源端口和目标端口

    1.2. 在 Windows 设备上检查 DNS 解析历史

    在受感染的 Windows 设备上,使用以下命令查看 DNS 缓存:

    ipconfig /displaydns

    查找是否存在恶意域名,并记录相关条目。同时,检查 DNS 服务器的指向,是否被篡改。

    1.3. 查找相关进程

    使用以下命令查看当前连接的域名和进程:

    Get-NetTCPConnection -State Established | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess | Format-Table -AutoSize

    找到与恶意域名相关的 IP 地址,并记录对应的进程 ID(PID)。

    然后使用:

    Get-Process -Id <PID> -IncludeUserName

    查看是哪个进程在发起恶意请求,并查看进程的用户名,来判断是否是异常进程。

    1.4. windows事件日志分析

    • 打开事件查看器,检查“Windows 日志”下的“应用程序”、“安全”和“系统”日志。
    • 重点关注以下事件:
      • 异常的登录尝试(安全日志)。
      • 应用程序错误或崩溃(应用程序日志)。
      • 系统错误或警告(系统日志)。
      • 查找与恶意软件活动相关的事件,例如:
        • 可疑的进程启动或终止。
        • 异常的文件访问或修改。
        • 网络连接错误。

    1.5. 使用wireshark抓包分析

    • 在受感染主机上安装 Wireshark,捕获网络流量。
    • 使用过滤器(例如,dns.qry.name contains "malicious-domain.com")来查找与恶意域名相关的流量。
    • 分析流量中的数据包,查找恶意软件的通信模式和数据内容。
    • 重点关注以下信息:
      • 恶意软件使用的协议和端口。
      • 恶意软件通信的 IP 地址和域名。
      • 恶意软件传输的数据内容。

    2. 终止并分析恶意进程

    2.1. 终止可疑进程

    • 当发现感染的进程是系统进程时:
      • 仔细核对:使用Process Explorer等工具,查看进程的详细信息。
      • 数字签名验证:检查系统进程的数字签名。
      • 资源占用异常:监控系统进程的CPU、内存和网络占用情况。
      • 网络连接异常:通过netstat,wireshark等工具,确认系统进程的网络链接,是否链接了可疑的IP或者域名。
      • 隔离网络:立即将受感染的主机从网络中隔离。
      • 安全模式扫描:重启计算机进入安全模式,进行全面扫描。
      • 系统文件检查器(SFC):使用sfc /scannow命令扫描并修复受损的系统文件。
      • DISM工具:使用DISM工具,对系统镜像进行修复。
      • 系统还原:尝试回滚到感染前的状态。
      • 分析恶意软件:提取可疑的系统进程文件进行恶意软件分析。
      • 考虑重装系统:如果以上方法无效,考虑重装系统。
    • 找到可疑进程后,可以手动终止:
    Stop-Process -Id <PID> -Force

    或者在任务管理器中找到对应进程并结束任务。在终止前,使用工具进行进程的快照。

    2.2. 分析进程启动项

    使用以下命令检查进程是否在开机启动:

    Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location

    如果发现恶意进程,手动删除启动项,或者使用 msconfig 检查启动项。同时检查服务列表,是否有可疑服务在运行。

    3. 查找恶意文件

    3.1. 检查系统文件

    使用 Windows Defender 进行完整扫描:

    Start-MpScan -ScanType FullScan

    或者使用 ClamAV(适用于 Windows 版本)进行手动扫描:

    clamscan.exe -r C:\ --bell --remove

    同时可以使用其他的杀毒软件进行辅助查杀

    3.2. 使用 Autoruns 检查隐藏启动项

    下载 Autoruns,运行后检查是否有恶意程序在系统启动时运行。尤其关注隐藏的启动项和服务。

    3.3. 检查 Hosts 文件

    打开 Hosts 文件:

    notepad C:\Windows\System32\drivers\etc\hosts

    删除所有与恶意域名相关的可疑条目。检查是否有异常的指向。

    4. 阻止恶意域名

    在本地防火墙或 Windows Defender 中阻止恶意域名:

    New-NetFirewallRule -DisplayName "Block Malicious Domain" -Direction Outbound -Action Block -RemoteAddress <恶意IP>

    或者在 Hosts 文件中将恶意域名指向本地:

    127.0.0.1 malicious-domain.com

    同时,在企业环境中,需要在边界防火墙,IDS/IPS 等设备中添加封禁策略。

    5. 排查后门和持久化机制

    5.1. 检查计划任务

    Get-ScheduledTask | Where-Object {$_.TaskName -match "malware"}

    删除任何可疑任务:

    Unregister-ScheduledTask -TaskName "<TaskName>" -Confirm:$false

    5.2. 检查注册表

    查看注册表启动项:

    reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

    删除可疑项:

    reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "<恶意项>" /f

    同时,检查其他的注册表启动项,例如 RunOnce,RunServices 等。

    5.3 检查网络连接

    通过 netstat 命令,检查异常网络连接。

    netstat -ano

    6. 进行系统修复

    如果感染严重,可以执行以下操作:

    1. 系统还原:回滚到之前的快照
    2. 重装 Windows:如果找不到恶意软件的来源,建议重装系统
    3. 更改密码:如果怀疑凭据被窃取,建议更改相关账户密码
    4. 隔离受感染主机:将受感染主机从网络中隔离,防止横向传播。
    5. 分析恶意软件样本:如果可能,提取恶意软件样本进行分析,了解其行为和目的。
    6. 更新安全补丁:确保系统和应用程序都安装了最新的安全补丁。
    7. 全网安全扫描:对网络中的其他主机进行安全扫描,确保没有其他主机受到感染。
    8. 备份重要数据:在重装系统前,尽可能的备份重要数据。
  • Debian12 安装ClamAV

    ClamAV 是一款流行的开源病毒扫描工具,可以用于扫描文件和目录中的恶意软件。

    1. 安装 ClamAV

    首先,使用以下命令安装 ClamAV 和其守护进程:

    apt install clamav clamav-daemon -y

    2. 更新病毒库

    安装完成后,使用以下命令更新病毒库:

    freshclam

    3. 扫描

    扫描单个文件

    使用以下命令扫描指定的文件:

    clamscan /path/to/file

    扫描整个目录

    扫描整个目录中的所有文件:

    clamscan -r /path/to/directory

    扫描指定目录并仅显示感染的文件

    使用 -i 参数,仅显示感染的文件:

    clamscan -r -i /path/to/directory

    扫描整个系统并仅显示感染的文件,并将结果记录到日志文件

    要扫描整个系统并将结果记录到日志文件中,可以使用以下命令:

    clamscan -r -i -l /var/log/clamscan-infected.log /

  • 通过关闭第一篇文章评论来防止 WordPress 自动化垃圾评论

    网站刚上线,默认的第一篇文章(“Hello World”)就涌入了大量垃圾评论这并非个例,而是许多WordPress站点初期都会面临的问题,在 WordPress 站点中默认的第一篇文章(通常是“Hello World”)往往会成为垃圾评论的主要目标。许多站长在搭建新站点时,可能会忽略这一点,导致网站在上线初期就受到垃圾评论的侵扰。分析第一篇文章易受攻击的原因,并提供有效的解决方案,帮助您减少垃圾评论,提升网站安全性和用户体验。

    1. 为什么 WordPress 第一篇文章容易受到垃圾评论?

    WordPress 安装完成后,默认会生成一篇标题为 “Hello World” 的示例文章。这篇文章通常具有以下特点,使其成为垃圾评论的高发区域:

    文章 ID 是最小的,容易被机器人扫描

    • WordPress 文章的 ID 号是按顺序分配的,而第一篇文章的 ID 通常是 1。
    • 许多垃圾评论机器人会自动扫描 ID 为 1 的文章,并尝试发送垃圾评论。

    默认文章通常不会删除或修改

    • 许多站长搭建网站后,可能不会立即删除或修改默认文章。
    • 这篇文章往往是公开可见的,容易被垃圾评论者利用。

    WordPress 站点刚建立时安全防护较弱

    • 新站点通常没有安装防垃圾评论插件,如 Akismet 或 CAPTCHA,导致垃圾评论可以轻松提交。
    • 由于管理员可能尚未设置评论审核规则,垃圾评论可能会直接显示在网站上,影响网站的信誉和形象。

    机器人针对默认内容进行批量评论

    • 许多垃圾评论机器人专门针对 WordPress 站点的默认文章,批量发布广告、恶意链接或欺诈信息。
    • 这些垃圾评论不仅影响用户体验,还可能损害网站的 SEO 排名。

    2. 如何手动关闭第一篇文章的评论?

    登录 WordPress 后台

    找到第一篇文章

    1. 在后台左侧菜单栏中,点击 “文章” -> “所有文章”。
    2. 找到 默认的第一篇文章(通常是“Hello World”)
    3. 点击文章标题,进入文章编辑页面。

    关闭评论功能

    1. 在文章编辑页面,找到 “讨论” 选项(如果没有看到“讨论”选项,请点击右上角的“显示选项”,勾选“讨论”)。
    2. 取消勾选 “允许评论” 和 “允许引用通告和通知”。
    3. 点击 “更新” 按钮,保存更改。

    完成以上操作后,该文章的评论功能将被完全禁用,任何访客都无法再对其进行评论。

  • AI驱动的供应链污染及其安全隐患分析

    随着人工智能(AI)的发展,越来越多的开发者和企业依赖AI生成代码、优化软件和提升生产力。然而,AI在供应链中的应用也带来了严重的安全隐患,攻击者可以利用AI技术污染软件供应链,导致个人用户、开发者和企业面临各种安全风险。

    1. 小白用户下载第三方AI插件,导致系统被植入恶意代码

    案例描述

    • 小白用户在非官方渠道下载了一款“智能办公插件”或AI图像生成工具的扩展插件,但插件内嵌了恶意代码。
    • 恶意代码可能包含远程控制程序、键盘记录器、勒索软件等。
    • 用户未经检查直接运行插件,导致系统被感染。

    安全隐患

    • 个人数据泄露,账号密码、支付信息被窃取。
    • 电脑被远程控制,成为“僵尸网络”一部分。
    • 重要文件被加密,要求支付赎金解锁。

    防范措施

    • 只从官方渠道下载软件和插件。
    • 使用安全软件扫描插件,避免恶意代码感染。
    • 在沙盒或虚拟机环境中测试插件,确保安全性。
    • 提高安全意识,不随意运行来源不明的脚本。

    2. AI生成的代码未经审查上线,导致安全漏洞

    案例描述

    • 开发者使用AI代码生成工具加速开发,但未进行充分的安全审查。
    • AI生成的代码可能包含SQL注入、XSS(跨站脚本攻击)或未授权访问等漏洞。
    • 攻击者利用这些漏洞入侵系统,造成数据泄露或服务宕机。

    安全隐患

    • 敏感数据泄露,可能导致企业声誉受损。
    • 服务器被入侵,影响系统稳定性。
    • 面临法律诉讼,造成经济损失。

    防范措施

    • 对AI生成的代码进行严格安全审查。
    • 使用静态代码分析工具检测安全漏洞。
    • 进行安全测试,模拟攻击场景。
    • 建立代码审查流程,确保代码质量和安全性。

    3. AI联网搜索的恶意代码被直接复制到生产环境

    案例描述

    • 小白程序员在开发过程中使用AI联网搜索写代码进行快速开发。
    • AI提供的代码中隐藏了恶意后门,但程序员未仔细审查。
    • 该代码被部署到生产环境,导致服务器被入侵。

    安全隐患

    • 服务器长期被攻击者控制,可能导致数据泄露。
    • 攻击者窃取企业机密信息,造成商业损失。
    • 可能面临合规性问题和法律风险。

    防范措施

    • 仅信任权威的代码来源,不随意复制粘贴。
    • 使用代码审查工具检测潜在风险。
    • 在测试环境中进行严格测试,确保安全性。
    • 限制AI代码生成工具的访问权限。

    4. AI优化的开源项目隐藏恶意代码

    案例描述

    • 攻击者利用AI生成开源代码并提交到流行项目。
    • 由于代码较复杂,维护者未深入审查直接合并。
    • 受影响的开源项目被广泛使用,导致大量系统受到攻击。

    安全隐患

    • 供应链污染,影响范围广泛。
    • 恶意代码可能导致远程控制或数据窃取。
    • 企业使用该代码后,面临重大安全威胁。

    防范措施

    • 对开源贡献代码进行严格审查。
    • 监控开源库的维护动态,避免使用可疑代码。
    • 采用SBOM(软件物料清单)追踪供应链依赖。

    5. AI优化的编译器或代码压缩工具被污染

    案例描述

    • 开发者使用AI驱动的编译器或压缩工具进行代码优化。
    • 由于工具被污染,编译后的代码被植入恶意逻辑。
    • 该代码最终进入生产环境,影响用户。

    安全隐患

    • 恶意代码难以察觉,长期潜伏。
    • 可能窃取用户数据或劫持API请求。
    • 影响多个企业或开发团队。

    防范措施

    • 仅使用经过安全审计的编译工具。
    • 代码生成后进行额外的安全检查。
    • 监测应用行为,防止异常代码执行。

    6. AI生成的伪造开源项目欺骗开发者

    案例描述

    • 攻击者利用AI生成完整的开源项目,提供详细文档和示例代码。
    • 该项目被宣传为“创新的开源解决方案”,吸引开发者使用。
    • 实际上,该项目隐藏后门,允许远程控制。

    安全隐患

    • 受信任的开源平台被污染,影响开发者社区。
    • 企业误用后门代码,导致数据泄露。
    • 供应链信任体系受损。

    防范措施

    • 避免轻信新兴开源项目,优先使用知名软件。
    • 检查开源库的维护历史,确保代码安全。
    • 对第三方依赖进行安全扫描。

    AI在提高开发效率的同时,也带来了前所未有的安全挑战。为防范AI驱动的供应链污染,需要开发者、企业和安全研究人员共同努力:

    • 小白用户 提高安全意识,不随意下载和运行不明来源的代码,尤其是AI生成的插件和工具。
    • 开发者 加强代码审查,避免误用AI生成的恶意代码。
    • 企业 对供应链安全进行全面管理,防止供应链攻击。

    AI的安全问题不容忽视,只有建立完善的安全机制,才能在享受AI带来的便利的同时,避免潜在的安全风险。

  • Debian12为 history 命令添加时间戳显示

    1. 修改 ~/.bashrc 让 history 命令显示时间

    1. 编辑 ~/.bashrc 文件

    在终端执行以下命令,打开 ~/.bashrc 配置文件:

    nano ~/.bashrc
    1. 添加 HISTTIMEFORMAT 变量

    ~/.bashrc 文件末尾添加以下内容:

    # Histroy display time
    export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  "

    这行代码的作用:

    • HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " —— 让 history 以 YYYY-MM-DD HH:MM:SS 的格式显示时间。

    如果你希望存储更多的历史命令,还可以添加:

    # 设置 history 命令记录的条数
    export HISTSIZE=10000
    export HISTFILESIZE=20000
    • HISTSIZE=10000 —— 设置 history 缓存 10,000 条命令(当前会话)。
    • HISTFILESIZE=20000 —— 让 .bash_history 文件最多存储 20,000 条记录。

    2. 使更改生效

    在终端执行以下命令,让 .bashrc 立即生效:

    source ~/.bashrc

    3. 测试

    执行 history 命令,检查是否显示时间:

    history

    如果输出结果前面出现了时间戳,说明已生效:

      1  2025-03-14 11:00:01  ls
      2  2025-03-14 11:05:32  ls