当前位置: 首页 > ai >正文

VNC和RPC加固措施

VNC和RPC加固措施

VNC(Virtual Network Computing)和RPC(Remote Procedure Call)是两种常见的远程访问与通信协议,但它们在默认配置下往往存在较大的安全风险。以下是针对 VNC 和 RPC 服务的全面加固方案,从配置优化、访问控制、加密传输到日志审计等多个维度进行深入讲解,并提供具体操作命令和代码示例,帮助你完成实际环境中的安全加固。


一、VNC 安全加固(以 RealVNC / TightVNC / TigerVNC 为例)

🔍 1. 漏洞原理与常见攻击方式

  • 明文传输:早期版本的 VNC 使用明文传输密码和屏幕数据,极易被中间人窃听。
  • 弱认证机制:使用固定密码或默认密码,易受暴力破解。
  • 无访问控制:未限制 IP 或用户访问,导致任意主机可连接。
  • 缺乏日志审计:无法追踪谁在何时进行了远程连接。

✅ 2. 安全加固措施(分步骤详解)

(1)升级到最新版本(推荐使用 TigerVNC 或 UltraVNC)
# Ubuntu/Debian 系统安装最新版 TigerVNC
sudo apt update
sudo apt install tigervnc-standalone-server tigervnc-common -y# CentOS/RHEL
sudo yum install tigervnc-server -y
# 或使用 dnf(较新版本)
sudo dnf install tigervnc-server -y

建议版本

  • TigerVNC ≥ 1.12
  • RealVNC Enterprise ≥ 6.8
  • TightVNC 不推荐用于生产环境(已多年未更新)

🌐 下载地址:

  • TigerVNC: https://github.com/TigerVNC/tigervnc
  • RealVNC: https://www.realvnc.com/en/connect/download/vnc/
  • UltraVNC: https://www.uvnc.com/downloads.html

(2)强制启用加密(SSL/TLS 或 SSH 隧道)
方法①:使用 SSH 隧道加密 VNC 流量(推荐)
# 在客户端通过 SSH 隧道连接 VNC(Linux/Mac)
ssh -L 5901:localhost:5901 user@vnc-server-ip# 然后本地使用 VNC Viewer 连接 127.0.0.1:5901

✅ 优点:完全加密,无需修改 VNC 配置。


方法②:配置 TigerVNC 启用 TLS 加密(高级用法)

编辑 ~/.vnc/xstartup 并启动时指定加密参数:

vncserver :1 -localhost no -rfbauth ~/.vnc/passwd -SecurityTypes TLSVnc,X509Vnc

⚠️ 注意:需要提前生成证书(OpenSSL),配置较复杂,适用于企业级部署。


(3)设置强密码并启用双因素认证(可选)
# 设置 VNC 登录密码(会生成 ~/.vnc/passwd)
vncpasswd# 密码要求:
# - 至少8位
# - 包含大小写字母、数字、特殊字符
# - 不使用默认密码如 "password"、"123456"

🔐 推荐结合 Google Authenticator 实现双因素认证(需定制脚本或使用 UltraVNC 插件)。


(4)限制访问源 IP(防火墙 + hosts.allow)
# 使用 iptables 限制仅允许特定 IP 访问 VNC 端口(默认 5900+n)
sudo iptables -A INPUT -p tcp --dport 5901 -s 192.168.10.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5901 -j DROP# 或使用 /etc/hosts.allow(基于 tcpd)
echo "vncserver: 192.168.10.100" >> /etc/hosts.allow
echo "vncserver: ALL" >> /etc/hosts.deny

📝 服务名需与 /etc/services 中一致,若无则添加:

echo "vncserver 5901/tcp" >> /etc/services

(5)关闭不必要的共享和剪贴板功能

在 VNC Viewer 或 Server 配置中禁用:

  • 共享剪贴板(防止信息泄露)
  • 文件传输功能
  • 多用户并发连接

TigerVNC 配置文件示例(~/.vnc/config):

desktop=Secure Desktop
geometry=1920x1080
localhost=no
alwaysshared=no
nevershared=yes
dontdisconnect=yes
rfbport=5901
SecurityTypes=TLSVnc

(6)启用日志审计
# 查看 VNC 日志(通常位于 ~/.vnc/hostname:display.log)
tail -f ~/.vnc/$(hostname):1.log# 建议将日志集中发送至 SIEM 系统(如 ELK、Splunk)

🛡️ 3. VNC 安全配置检查清单

项目是否完成
升级到最新稳定版 VNC
使用 SSH 隧道或 TLS 加密
设置强密码(>8位,复杂度高)
限制访问源 IP(iptables 或 hosts.allow)
禁用剪贴板共享和文件传输
关闭未使用的 VNC 实例
启用日志记录并定期审查

二、RPC(Remote Procedure Call)安全加固(以 Windows RPC / Linux RPCbind 为例)

🔍 1. 漏洞原理与常见攻击方式

  • 端口动态分配:RPC 服务使用随机高端口,难以通过防火墙精确控制。
  • 身份验证薄弱:NTLM 认证可被哈希传递攻击(Pass-the-Hash)。
  • 服务暴露过多:如 lsass, netlogon, samr 等接口被滥用。
  • 经典漏洞
    • MS17-010(永恒之蓝)利用 SMB over RPC
    • Zerologon(CVE-2020-1472)攻击 Netlogon
    • PrintNightmare(CVE-2021-1675 / CVE-2021-34527)

✅ 2. 安全加固措施

(1)最小化启用 RPC 服务
  • Windows:仅启用必要的 RPC 服务(如域控需要的 LSASS, NETLOGON
  • Linux:关闭 rpcbind 若无需 NFS/RPC 服务
# CentOS/RHEL 停止并禁用 rpcbind
sudo systemctl stop rpcbind
sudo systemctl disable rpcbind# 检查是否仍在监听
netstat -tuln | grep :111

❗ 若使用 NFS,请确保仅绑定内网接口:

# 编辑 /etc/rpcbind.conf
bind_address=192.168.10.10

(2)使用防火墙限制 RPC 端口范围

RPC 默认使用 135(TCP)作为监听端口,后续连接使用动态端口(1024~65535)。可通过注册表或配置文件固定端口。

Windows 固定 RPC 端口(注册表)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet]
"Ports"=dword:0x0400
"PortsInternetAvailable"="Y"
"UseInternetPorts"="Y"

Reg

然后在防火墙开放指定端口段(如 50000-50100):

# PowerShell 添加防火墙规则
New-NetFirewallRule -DisplayName "RPC Static Ports" -Direction Inbound -Protocol TCP -LocalPort 50000-50100 -Action Allow

(3)启用强身份验证和加密
  • 启用 Kerberos 身份验证(优于 NTLM)
  • 强制 SMB 签名和加密
  • 禁用匿名枚举
# PowerShell 设置本地策略(需管理员权限)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\" -Name "RestrictAnonymous" -Value 1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "RequireSignOrSeal" -Value 1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "RequireStrongKey" -Value 1

(4)修补已知漏洞(关键补丁)
漏洞编号影响补丁链接
CVE-2017-0144 (MS17-010)永恒之蓝https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012212
CVE-2020-1472 (Zerologon)Netlogon 特权提升https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4557222
CVE-2021-34527 (PrintNightmare)远程代码执行https://support.microsoft.com/en-us/topic/kb4569745-print-spooler-security-feature-bypass-cve-2021-34527-6e79d8e8-3a9a-4d6d-8c6d-6f8f9b7b5e5f

建议:所有 Windows 主机安装最新安全补丁,域控优先打补丁


(5)禁用不必要的 DCOM/RPC 接口
# 禁用 Windows Print Spooler(若无需打印服务)
Stop-Service -Name Spooler
Set-Service -Name Spooler -StartupType Disabled

⚠️ 注意:关闭 Spooler 可防御 PrintNightmare 类攻击。


(6)监控与日志审计(Windows Event Log)

关键事件 ID:

  • Event ID 4662:对象访问(如 RPC 调用)
  • Event ID 5145:网络共享访问
  • Event ID 4776:NTLM 认证尝试
  • Event ID 4674:权限提升操作

使用 PowerShell 查询近期 RPC 相关活动:

Get-WinEvent -LogName "Security" | Where-Object { $_.Id -eq 4662 } | Select TimeCreated, Message

建议将日志转发至 SIEM 系统(如 Microsoft Sentinel、Graylog)进行关联分析。


🛡️ 4. RPC 安全配置检查清单

项目是否完成
关闭不必要的 RPC 服务(如 rpcbind)
固定 RPC 动态端口并配置防火墙
启用 Kerberos 替代 NTLM
安装关键补丁(MS17-010、Zerologon 等)
禁用 Print Spooler(如非必要)
设置 RestrictAnonymous=1
启用日志审计并集中管理

三、综合建议(内网渗透视角)

结合你提供的图片中 192.168.1.x 网段存在多个开放 VNC/RPC 的主机,以下是从红队/蓝队角度的延伸建议:

🔹 红队视角(攻击检测)

  • 若发现 5900, 5901 开放 → 尝试弱密码爆破(工具:hydra -t 4 vnc://target

  • 若发现

    135
    

    开放 → 使用

    rpcdump.py
    

    (Impacket)探测可调用接口:

    python3 rpcdump.py @192.168.1.10 | grep -i print
    

    若返回

    MS-RPRN
    

    接口 → 存在 PrintNightmare 风险。

🔹 蓝队视角(防御策略)

  • 所有 VNC 服务必须通过 跳板机 + SSH 隧道 + MFA 访问
  • 所有 RPC 请求必须经过 网络层微隔离(如 Zero Trust 架构)
  • 部署 EDR(如 CrowdStrike、Bitdefender)监控 lsass.exe 异常行为
  • 定期使用 Nessus / OpenVAS 扫描 RPC/VNC 漏洞

四、法律风险提示

本文内容仅用于合法网络安全研究、系统加固与等保合规。未经授权对他人系统进行扫描、渗透、爆破等行为违反《中华人民共和国网络安全法》及相关法律法规,可能导致刑事责任。请确保在授权范围内操作。

http://www.xdnf.cn/news/16480.html

相关文章:

  • win10 环境删除文件提示文件被使用无法删除怎么办?
  • 海外短剧系统架构设计:从0到1搭建高并发微服务平台
  • 白玩 一 记录retrofit+okhttp+flow 及 kts的全局配置
  • 墨者:SQL过滤字符后手工注入漏洞测试(第3题)
  • npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
  • 什么是ios企业签名?
  • VTK开发笔记(一):VTK介绍,Qt5.9.3+VS2017x64+VTK8.2编译
  • 使用 Django REST Framework 构建强大的 API
  • vue请求golang后端CORS跨域问题深度踩坑
  • 分布式链路追踪详解
  • 图论:Bellman_ford算法
  • 预过滤环境光贴图制作教程:第三阶段 - GGX 分布预过滤
  • Unity 编辑器开发 之 Excel导表工具
  • git使用lfs解决大文件上传限制
  • 监控场景视频质量异常修复:陌讯动态增强算法实战解析
  • 使用JavaScript实现轮播图的自动切换和左右箭头切换效果
  • BERT 的 NSP慢慢转换为SOP
  • Linux -- 文件【中】
  • 工具链攻击利用漏洞链入侵SharePoint服务器获取完全控制权
  • 图片查重从设计到实现(7) :使用 Milvus 实现高效图片查重功能
  • python基础:request请求Cookie保持登录状态、重定向与历史请求、SSL证书校验、超时和重试失败、自动生成request请求代码和案例实践
  • GCC、glibc、GNU C(gnuc)的关系
  • 准大一GIS专业新生,如何挑选电脑?
  • redhat7.9更换源为centos7(阿里云源-目前centos7可用的源)
  • 基于KMeans、AgglomerativeClustering、DBSCAN、PCA的聚类分析的区域经济差异研究
  • 222. 完全二叉树的节点个数
  • AI算法实现解析-C++实例
  • 如何在在NPM发布一个React组件
  • 第2章 cmd命令基础:常用基础命令(1)
  • 音频算法基础(语音识别 / 降噪 / 分离)