系统安全配置与加固

用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。

这里我们来讲述系统安全配置与加固,在进行内网渗透工程中,我们接触到的,利用最多的就是系统,了解系统的安全配置有利于我们进行渗透测试,比如说提权,横向移动等操作,当我们无法利用系统或者服务漏洞来进行提权或者横向移动时,那么利用安全配置的缺陷来进行渗透就是一个很好的思路。接下来我们来讲述windows和linux系统的安全配置以及相应的加固。

系统安全的核心是构建 "纵深防御体系",覆盖身份认证、访问控制、内存保护、日志审计、网络防护、漏洞管理、数据加密七大维度。本文将分别拆解 Windows(以 Win10/Win11、Server 2019/2022 为例)与 Linux(以 CentOS 7/8、Ubuntu 20.04/22.04 为例)的原生安全机制,并提供可落地的加固操作(含命令、配置路径、验证方法)。

第一部分:Windows 系统安全机制与加固

Windows 通过 "本地安全策略 + 域策略 + 内置防护组件" 构建安全体系,需重点加固 "账户安全、权限控制、网络边界、日志审计" 四大模块。

一、身份认证机制与加固(账户安全核心)

1. 原生安全机制

|-----------------------|----------------------------------------------------------------------|--------------------|
| 机制名称 | 原理与作用 | 适用场景 |
| 本地账户(SAM 数据库) | 账户信息存储于C:\Windows\System32\config\SAM(哈希加密,非明文),支持密码策略(复杂度、有效期)。 | 非域环境的单机 / 服务器 |
| 域账户(Active Directory) | 账户信息集中存储于域控制器(DC),支持组策略统一管控,依赖 Kerberos 协议认证。 | 企业域环境(多主机统一管理) |
| UAC(用户账户控制) | 限制普通用户权限,高权限操作(如安装软件、修改系统配置)需管理员授权(弹窗确认),防止恶意程序自动执行。 | 所有 Windows 系统 |
| Windows Hello | 支持生物识别(指纹、面部、PIN 码),替代传统密码,基于 TPM 2.0 芯片存储认证信息,防窃取。 | 个人 PC / 笔记本(需硬件支持) |
| 账户锁定策略 | 连续登录失败 N 次后锁定账户(默认无,需手动配置),防暴力破解。 | 本地 / 域账户均适用 |

2. 加固操作(关键步骤)

(1)强化本地账户密码策略

配置路径:控制面板 → 管理工具 → 本地安全策略 → 账户策略 → 密码策略

|-------------|-------------|------------------------|
| 策略项 | 推荐值 | 作用 |
| 密码必须符合复杂性要求 | 已启用 | 密码需包含大小写、数字、特殊字符(长度≥8) |
| 密码长度最小值 | 10 个字符 | 防止弱口令(如 123456) |
| 密码最长使用期限 | 90 天 | 定期更换密码,降低泄露风险 |
| 强制密码历史 | 记住 5 个以前的密码 | 防止重复使用旧密码 |
| 密码最短使用期限 | 2 天 | 防止频繁改密码绕过历史限制 |

验证:新建用户或修改密码时,系统会强制校验复杂度(如输入123456会提示 "不符合策略")。

(2)加固 UAC 权限

配置路径:控制面板 → 用户账户 → 更改用户账户控制设置

推荐级别:选择 "始终通知"(最高级别),任何程序修改系统设置或安装软件均需管理员确认,防止静默安装恶意程序。

注意:域环境可通过 "组策略" 统一配置所有主机的 UAC 级别(域控制器 → 组策略管理 → 默认域策略 → 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项 → 用户账户控制:管理员批准模式中管理员的提升权限提示行为)。

(3)禁用 / 删除冗余账户

操作工具:lusrmgr.msc(本地用户和组)

删除默认 "Guest" 账户(来宾账户,权限低但易被利用);

禁用无实际用途的账户(如旧员工账户、测试账户);

重命名 "Administrator" 账户(默认账户名易被暴力破解,改为非默认名称如Admin_2024)。

命令行操作(管理员权限):

net user Guest /active:no # 禁用Guest账户

wmic useraccount where name='Administrator' rename 'Admin_2024' # 重命名管理员账户

二、访问控制机制与加固(权限最小化)

1. 原生安全机制

|------------------------|--------------------------------------------------------------|----------------------------|
| 机制名称 | 原理与作用 | 关键组件 |
| DAC(自主访问控制) | 资源(文件 / 文件夹 / 注册表)所有者可自主设置权限(如 "读取""写入""完全控制"),基于用户 / 组分配权限。 | 文件属性 → 安全选项卡 |
| ACL(访问控制列表) | 每个资源关联一张 ACL 表,记录 "哪些用户 / 组拥有哪些权限",支持精细化权限控制(如拒绝特定用户访问)。 | 安全描述符(SD) |
| 权限继承 | 子文件夹 / 文件默认继承父文件夹的权限,简化权限配置,但需防止继承导致的权限泄露。 | 高级安全设置 → 继承选项 |
| 特殊权限(如 Take Ownership) | 仅管理员可获取文件所有权,防止普通用户篡改系统关键文件(如SAM数据库)。 | SeTakeOwnershipPrivilege权限 |

2. 加固操作(核心是 "最小权限")

(1)系统分区与关键目录权限加固

核心原则:仅给 "Administrators" 和 "SYSTEM" 账户 "完全控制" 权限,普通用户仅给 "读取" 权限,防止恶意篡改系统文件。

|-------------------------------|--------------------------------------------------------------------------|
| 目录路径 | 推荐权限配置 |
| C:\Windows | Administrators(完全控制)、SYSTEM(完全控制)、Users(读取 & 执行)、TrustedInstaller(完全控制) |
| C:\Program Files | 同C:\Windows(防止普通用户安装恶意软件) |
| C:\Users\Public | Users(读取 & 执行)、Administrators(完全控制)(公共目录防止普通用户写入恶意文件) |
| C:\Windows\System32\config | 仅 Administrators 和 SYSTEM(完全控制)(含 SAM 数据库,严禁普通用户访问) |

操作步骤:

右键目录 → 属性 → 安全 → 编辑 → 移除无关用户 / 组(如 "Everyone");

对保留的用户 / 组,严格分配权限(如 Users 仅 "读取 & 执行");

取消 "允许继承权限"(如需自定义权限),并选择 "复制" 现有权限(避免权限丢失)。

(2)注册表权限加固

关键注册表路径(防止恶意修改系统配置):

HKEY_LOCAL_MACHINE\SOFTWARE(软件安装信息)

HKEY_LOCAL_MACHINE\SYSTEM(系统核心配置,如服务、驱动)

权限配置:仅 Administrators 和 SYSTEM(完全控制),Users(读取),禁止普通用户写入。

操作工具:regedit.exe → 右键注册表项 → 权限 → 按上述原则配置。

三、内存与进程防护机制与加固(防恶意代码执行)

1. 原生安全机制

|-----------------|-----------------------------------------------------------------|--------------------------------|
| 机制名称 | 原理与作用 | 启用状态 |
| DEP(数据执行保护) | 标记 "数据区域"(栈、堆、全局变量)为 "不可执行",防止攻击者将恶意代码注入数据区执行(如缓冲区溢出)。 | 分 "仅 Windows 程序和服务""所有程序" 两种模式 |
| ASLR(地址空间布局随机化) | 每次程序启动时,随机化代码段、栈、堆、动态链接库(DLL)的内存地址,使攻击者难以预测恶意代码位置。 | Windows Vista 及以上默认启用 |
| CFG(控制流保护) | 检查函数调用的 "返回地址" 是否合法(基于预设的 "安全调用表"),防止控制流被篡改(如 ROP 攻击)。 | Windows 10 及以上默认启用 |
| 进程完整性级别(IL) | 给进程分配 "低 / 中 / 高" 完整性级别(如浏览器为 "中",管理员程序为 "高"),低级别进程无法修改高级别进程数据。 | 任务管理器 → 详细信息 → 完整性列 |

2. 加固操作(确保防护机制全启用)

(1)启用 DEP 最高级别

配置路径:控制面板 → 系统 → 高级系统设置 → 性能 → 设置 → 数据执行保护

推荐选项:选择 "为所有程序和服务启用 DEP,除了我选择的程序"(避免因兼容性关闭关键防护)。

验证:通过systeminfo命令查看 DEP 状态,输出 "数据执行保护可用" 且 "DEP 策略:已启用"。

(2)确认 ASLR 与 CFG 启用

ASLR 验证:运行cmd → 输入wmic os get osarchitecture, buildnumber,Windows 10 1703 及以上默认强制启用 ASLR,无法手动关闭(需通过组策略修改特殊场景)。

CFG 验证:通过 Visual Studio 编译程序时,默认启用/guard:cf(CFG 编译选项);系统级 CFG 可通过组策略确认:

路径:本地安全策略 → 安全设置 → 本地策略 → 安全选项 → "控制流保护:启用 CFG 的应用程序的强制级别" → 设为 "强制"。

四、网络防护机制与加固(边界安全)

1. 原生安全机制

|------------------------|------------------------------------------------------------|-----------------|
| 机制名称 | 原理与作用 | 关键组件 |
| Windows 防火墙(WF) | 基于 "入站 / 出站规则" 过滤网络流量(按端口、协议、IP 地址限制),默认阻止未授权入站连接。 | wf.msc(高级防火墙管理) |
| 高级安全 Windows 防火墙(WFAS) | 支持更精细化规则(如域 / 私有 / 公共网络分别配置、IPsec 策略、连接安全规则)。 | wf.msc |
| IPsec(Internet 协议安全) | 通过 "加密 + 认证" 保护 IP 数据包传输,防止数据在网络中被窃听或篡改(如域环境中 DC 与客户端的通信)。 | 组策略 → IPsec 设置 |
| 网络隔离(如 VLAN) | 域环境中通过组策略划分网络区域(如 "服务器区""客户端区"),限制跨区域访问。 | 域控制器组策略 |

2. 加固操作(重点是 "关闭不必要端口,限制访问源")

(1)配置 Windows 防火墙入站规则

核心原则:"默认拒绝所有入站连接,仅允许必要服务的端口"(如 SSH、RDP、HTTP/HTTPS)。

必禁用端口(易被攻击的高危端口):

|------|-------------|----------------------|-----------------------------------------------|
| 端口号 | 关联服务 | 风险点 | 操作 |
| 135 | RPC(远程过程调用) | 易被用于漏洞攻击(如 MS17-010) | 入站规则 → 禁用 "Remote Procedure Call (RPC)" |
| 139 | NetBIOS | 用于文件共享,易被枚举主机信息 | 入站规则 → 禁用 "NetBIOS Session Service" |
| 445 | SMB 协议 | 易被利用(如永恒之蓝、勒索病毒) | 入站规则 → 禁用 "File and Printer Sharing (SMB-In)" |
| 3389 | RDP(远程桌面) | 易被暴力破解,暴露远程管理接口 | 仅允许特定 IP 访问(如公司内网 IP) |

配置步骤(以限制 RDP 为例):

打开wf.msc → 入站规则 → 找到 "Remote Desktop - User Mode (TCP-In)";

右键 → 属性 → 范围 → 远程 IP 地址 → 选择 "下列 IP 地址" → 添加允许的 IP(如192.168.1.0/24);

拒绝所有其他 IP 访问(默认已拒绝,无需额外配置)。

五、日志审计与监控机制与加固(溯源核心)

1. 原生安全机制

|--------------|----------------------------------------------------------------------------------------|---------------------|
| 机制名称 | 原理与作用 | 日志存储位置 |
| Windows 事件日志 | 记录系统、安全、应用程序三类日志: - 系统日志:服务启动 / 停止、驱动错误; - 安全日志:登录 / 注销、权限变更、文件访问; - 应用日志:软件运行错误 / 警告。 | eventvwr.msc(事件查看器) |
| 高级审计策略 | 支持精细化审计(如 "账户登录审计""对象访问审计""特权使用审计"),默认仅开启基础审计。 | 本地安全策略 → 高级审计策略配置 |
| 日志轮转 | 自动切割过大日志(默认最大 20480KB),防止磁盘占满,但需配置日志备份。 | 事件查看器 → 日志属性 |

2. 加固操作(确保 "关键行为可溯源")

(1)启用高级审计策略

配置路径:本地安全策略 → 高级审计策略配置 → 系统审计策略 → 选择需审计的类别,推荐启用:

|------|---------------------|---------------------------|
| 审计类别 | 推荐审计项 | 作用 |
| 账户登录 | 成功和失败 | 监控异常登录(如异地登录、暴力破解) |
| 账户管理 | 成功和失败 | 监控账户创建 / 删除 / 密码修改(防恶意账户) |
| 对象访问 | 成功和失败(针对关键文件 / 注册表) | 监控系统文件篡改(如 SAM 数据库访问) |
| 特权使用 | 成功和失败 | 监控管理员权限滥用(如获取文件所有权) |
| 详细跟踪 | 进程创建(成功) | 监控恶意程序启动(如木马进程) |

验证:启用后,执行相关操作(如登录失败、修改文件权限),在事件查看器 → Windows 日志 → 安全中可看到对应审计事件(事件 ID 如 4625 = 登录失败,4688 = 进程创建)。

(2)配置日志备份与轮转

操作步骤:

事件查看器 → 右键 "安全日志" → 属性;

日志大小上限:设为 102400KB(100MB),避免频繁轮转;

当日志达到最大大小时:选择 "存档日志,不覆盖事件"(需定期手动备份或配置脚本自动备份);

备份日志:右键日志 → 保存所有事件(格式为.evtx),存储到非系统分区(防止系统崩溃丢失日志)。

(3)启用进程命令行审计(Windows 10 1809+)

作用:记录进程启动时的完整命令行(如cmd.exe /c ping attacker.com),便于溯源恶意操作。

配置路径:组策略 → 计算机配置 → 管理模板 → Windows 组件 → 事件日志服务 → 安全 → 启用 "在安全日志中记录进程创建的命令行" → 设为 "已启用"。

验证:启动cmd并执行dir,在安全日志中找到事件 ID 4688,"详细信息" 中可看到 "CommandLine: dir"。

六、漏洞与补丁管理机制与加固(防已知漏洞利用)

1. 原生安全机制

|--------------------------------------|------------------------------------------|-------------------------|
| 机制名称 | 原理与作用 | 工具 / 组件 |
| Windows Update(WU) | 自动检测并安装系统漏洞补丁、驱动更新、功能更新,支持 "延迟更新"(企业场景)。 | 设置 → 更新和安全 → Windows 更新 |
| WSUS(Windows Server Update Services) | 企业级补丁管理服务器,统一管控域内主机的补丁下载与安装,避免带宽浪费。 | 服务器管理器 → WSUS 角色 |
| 漏洞扫描(Windows Defender) | 内置杀毒软件,支持漏洞扫描(如系统漏洞、软件漏洞),与 WU 联动修复。 | Windows 安全中心 → 漏洞防护 |

2. 加固操作("及时打补丁,定期扫漏洞")

(1)配置 Windows Update 自动更新

个人 PC / 非关键服务器:

路径:设置 → 更新和安全 → Windows 更新 → 高级选项 → 选择 "自动下载并安装更新"(确保 "接收其他 Microsoft 产品的更新" 已勾选)。

企业关键服务器:

建议通过 WSUS 统一管理,设置 "延迟更新 7-14 天"(测试兼容性后再推送),避免补丁导致服务中断。

操作:服务器管理器 → 添加角色和功能 → 勾选 "Windows Server Update Services" → 配置同步源(如微软官网或上级 WSUS)。

(2)定期手动扫描漏洞

操作工具:Windows 安全中心 → 病毒和威胁防护 → 扫描选项 → 选择 "全面扫描"(每月至少 1 次)。

第三方工具:使用微软基线安全分析器(MBSA,mbsacli.exe)或 Qualys、Nessus 等工具,扫描未修复的高危漏洞(如 CVE-2021-44228 Log4j2、CVE-2022-21907 远程代码执行漏洞)。

第二部分:Linux 系统安全机制与加固

Linux 基于 "开源内核 + 权限分离 + 最小服务" 设计,安全机制更依赖 "配置优化 + 工具扩展",核心加固维度与 Windows 类似,但操作方式以命令行为主。

一、身份认证机制与加固(账户安全)

1. 原生安全机制

|--------------|------------------------------------------------------------------|-------------------------|
| 机制名称 | 原理与作用 | 关键文件 / 工具 |
| PAM(可插拔认证模块) | 模块化认证框架,支持密码复杂度、账户锁定、双因素认证(如 Google Authenticator),通过配置文件控制认证逻辑。 | /etc/pam.d/目录下配置文件 |
| 影子密码(Shadow) | 账户密码哈希存储于/etc/shadow(仅 root 可读),替代早期/etc/passwd(所有人可读),防密码泄露。 | /etc/shadow、/etc/passwd |
| SSH 认证 | 支持 "密码认证" 和 "密钥认证",密钥认证基于非对称加密(公钥存服务器,私钥存客户端),安全性远高于密码。 | sshd_config、~/.ssh/目录 |
| sudo 权限管控 | 通过/etc/sudoers配置 "普通用户可执行的 root 命令",避免直接使用 root 登录,便于权限审计。 | sudo、visudo工具 |

2. 加固操作(命令行为主)

(1)强化密码策略(基于 PAM)

配置文件:/etc/pam.d/system-auth(CentOS)或/etc/pam.d/common-password(Ubuntu)

添加密码复杂度规则(需安装pam_cracklib模块):

CentOS:编辑/etc/pam.d/system-auth,在password段添加

bash 复制代码
password requisite pam_cracklib.so try_first_pass retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1# Ubuntu:编辑/etc/pam.d/common-password,添加

password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

参数说明:

minlen=10:密码最小长度 10;

difok=3:新密码与旧密码至少 3 个字符不同;

ucredit=-1:至少 1 个大写字母;lcredit=-1:至少 1 个小写字母;dcredit=-1:至少 1 个数字;ocredit=-1:至少 1 个特殊字符;

retry=3:密码输入错误 3 次后退出。

配置密码有效期(/etc/login.defs):

vim /etc/login.defs# 修改以下参数

PASS_MAX_DAYS 90 # 密码最长使用90天

PASS_MIN_DAYS 2 # 密码最短使用2天

PASS_WARN_AGE 7 # 密码过期前7天提醒

(2)启用账户锁定(基于 PAM)

配置文件:/etc/pam.d/system-auth(CentOS)或/etc/pam.d/common-auth(Ubuntu)

添加账户锁定规则:

CentOS:在auth段添加

bash 复制代码
auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800# Ubuntu:在auth段添加

auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

参数说明:

deny=5:连续 5 次失败锁定账户;

unlock_time=1800:普通用户锁定 30 分钟(1800 秒);

even_deny_root:root 账户也受锁定限制(防 root 暴力破解);

root_unlock_time=1800:root 账户锁定 30 分钟。

验证:连续输错 5 次密码后,执行pam_tally2 --user=root查看锁定状态,输出 "Count=5";30 分钟后自动解锁,或手动解锁:pam_tally2 --user=root --reset。

(3)SSH 密钥认证加固(禁用密码登录)

步骤 1:客户端生成密钥对(本地 PC 执行):

ssh-keygen -t ed25519 # 生成ed25519算法密钥(比RSA更安全、更短)# 按提示输入密钥保存路径(默认~/.ssh/id_ed25519),可设置密钥密码(增强安全性)

步骤 2:将公钥上传到服务器(客户端执行):

bash 复制代码
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip  # user为服务器用户名,server-ip为服务器IP

步骤 3:服务器禁用 SSH 密码登录(服务器端执行,root 权限):

bash 复制代码
vim /etc/ssh/sshd_config# 修改以下参数

PasswordAuthentication no  # 禁用密码认证

PubkeyAuthentication yes   # 启用密钥认证

PermitRootLogin no         # 禁用root直接SSH登录(需通过普通用户sudo提权)

Port 2222                  # (可选)修改SSH默认端口22为2222,减少扫描攻击# 重启sshd服务生效

systemctl restart sshd  # CentOS/RHEL# 或

systemctl restart ssh   # Ubuntu/Debian

验证:客户端执行ssh -p 2222 user@server-ip,无需输入密码(若设置了密钥密码,需输入密钥密码);尝试用密码登录会提示 "Permission denied"。

二、访问控制机制与加固(权限最小化)

1. 原生安全机制

|---------------------|---------------------------------------------------------------------------|---------------------------------|
| 机制名称 | 原理与作用 | 关键命令 / 文件 |
| DAC(自主访问控制) | 基于用户(UID)、组(GID)、其他用户(Other)分配权限(读 r=4、写 w=2、执行 x=1),文件所有者可修改权限。 | chmod、chown、ls -l |
| SUID/SGID 特殊权限 | 程序执行时继承文件所有者(SUID)或所属组(SGID)权限(如passwd命令为 SUID,普通用户可修改自己密码),但易被滥用提权。 | ls -l中权限位含s(如-rwsr-xr-x) |
| 粘滞位(Sticky Bit) | 仅目录所有者和文件所有者可删除目录下的文件(如/tmp目录),防止普通用户删除他人文件。 | ls -d /tmp显示drwxrwxrwt(末尾t为粘滞位) |
| SELinux(安全增强 Linux) | 强制访问控制(MAC),基于 "策略" 限制进程对资源的访问(如 Apache 进程仅能访问/var/www/html),CentOS 默认启用。 | getenforce、setenforce、semanage |
| AppArmor(应用盔甲) | Ubuntu 默认启用的 MAC 机制,为每个程序配置 "安全配置文件",限制其可访问的文件、网络资源。 | aa-status、apparmor_parser |

2. 加固操作(核心是 "清理危险权限,启用 MAC")

(1)清理 SUID/SGID 程序(防止提权)

查找系统中所有 SUID/SGID 程序(root 权限):

查找SUID程序find / -perm -4000 -type f 2>/dev/null# 查找SGID程序find / -perm -2000 -type f 2>/dev/null

清理原则:仅保留必要的 SUID/SGID 程序(如passwd、sudo、ping),对无关程序移除 SUID/SGID 权限:

示例:移除危险程序的SUID权限chmod u-s /usr/bin/find # find命令的SUID权限易被用于提权,非必要则移除

(2)启用并配置 SELinux(CentOS)

确认 SELinux 状态:

getenforce # 输出Enforcing(启用)、Permissive(宽容,仅日志)、Disabled(禁用)

启用 SELinux(若禁用):

编辑/etc/selinux/config:

vim /etc/selinux/configSELINUX=enforcing # 设为enforcing(强制模式)SELINUXTYPE=targeted # 仅对特定程序生效(推荐)

重启系统生效:reboot;

验证:getenforce输出Enforcing。

SELinux 基础配置(避免服务因 SELinux 被阻断):

例:允许 Apache 访问自定义网站目录/data/www:

bash 复制代码
semanage fcontext -a -t httpd_sys_content_t '/data/www(/.*)?'  # 添加SELinux上下文

restorecon -Rv /data/www  # 应用上下文

setsebool -P httpd_can_network_connect 1  # 允许Apache联网(如需)
(3)启用 AppArmor(Ubuntu)

确认 AppArmor 状态:

aa-status # 输出"apparmor module is loaded"且"profiles are loaded"

启用 AppArmor 配置文件(以保护 SSH 为例):

aa-enforce /etc/apparmor.d/usr.sbin.sshd # 强制启用SSH的AppArmor配置

aa-status | grep sshd # 验证,输出"enforce /usr/sbin/sshd"

自定义 AppArmor 配置(如需限制程序访问):

复制模板配置:cp /etc/apparmor.d/template /etc/apparmor.d/usr.bin.myapp;

编辑配置文件,添加允许访问的路径(如/usr/bin/myapp mrw, /var/data/myapp/ r,);

加载配置:apparmor_parser -r /etc/apparmor.d/usr.bin.myapp。

三、内存与进程防护机制与加固(防恶意代码)

1. 原生安全机制

|---------------------|-------------------------------------------------|------------------------------------|
| 机制名称 | 原理与作用 | 内核参数 / 工具 |
| NX(No eXecute,不可执行) | 同 Windows DEP,标记数据区域(栈、堆)为不可执行,防止缓冲区溢出攻击执行恶意代码。 | 内核参数nx(默认启用) |
| ASLR(地址空间布局随机化) | 随机化程序代码段、栈、堆、共享库的内存地址,使攻击者难以预测 shellcode 位置。 | 内核参数randomize_va_space(默认启用) |
| Stack Canary(栈金丝雀) | 栈帧中插入随机 "金丝雀值",溢出时覆盖该值会触发程序崩溃,防止栈溢出利用。 | 编译时-fstack-protector选项(GCC 默认启用) |
| 进程资源限制(ulimit) | 限制单个进程的资源使用(如最大进程数、最大文件句柄数、最大内存使用),防止 DoS 攻击。 | ulimit命令、/etc/security/limits.conf |

2. 加固操作(确保内核防护全启用)

(1)确认 ASLR 启用

查看 ASLR 状态:

cat /proc/sys/kernel/randomize_va_space

输出含义:

0:禁用 ASLR;

1:部分启用(随机化栈、共享库);

2:全启用(随机化栈、堆、共享库、代码段)。

启用全 ASLR(若未启用):

echo "kernel.randomize_va_space=2" >> /etc/sysctl.confsysctl -p # 生效

(2)配置进程资源限制(ulimit)

编辑/etc/security/limits.conf(root 权限):

bash 复制代码
vim /etc/security/limits.conf# 添加以下限制(对所有用户生效,*表示所有用户)

*               hard    nproc           1024    # 最大进程数1024

*               hard    nofile          65535   # 最大文件句柄数65535

*               hard    core            0       # 禁用核心转储(core dump,防止泄露进程内存)

*               hard    stack           8192    # 最大栈大小8MB

验证:执行ulimit -a,输出 "max user processes (-u) 1024""open files (-n) 65535" 等。

四、网络防护机制与加固(边界安全)

1. 原生安全机制

|------------------------------------|----------------------------------------------------------------------------|-------------------------------|
| 机制名称 | 原理与作用 | 工具 / 配置文件 |
| iptables(CentOS 7 及以下) | 基于 "链(Chain)" 和 "规则(Rule)" 过滤网络流量,支持按端口、协议、IP、MAC 地址限制,默认无规则(需手动配置)。 | iptables、iptables-save |
| firewalld(CentOS 7+、RHEL 7+) | 动态防火墙管理工具,基于 "区域(Zone)" 配置规则(如 public、internal 区域),支持服务名(如 ssh、http)而非仅端口。 | firewalld-cmd、firewall-config |
| ufw(Uncomplicated Firewall,Ubuntu) | Ubuntu 默认防火墙工具,简化 iptables 配置,支持基础的入站 / 出站规则。 | ufw命令 |
| TCP Wrappers | 基于/etc/hosts.allow和/etc/hosts.deny限制 TCP 服务访问(如 sshd、vsftpd),优先级高于防火墙。 | hosts.allow、hosts.deny |

2. 加固操作(以 firewalld 和 ufw 为例)

(1)CentOS 7+ 配置 firewalld

步骤 1:启动并设置开机自启:

bash 复制代码
systemctl start firewalld

systemctl enable firewalld

firewall-cmd --state  # 验证,输出"running"

步骤 2:配置基础规则(仅允许必要服务):

bash 复制代码
# 查看默认区域(通常为public)

firewall-cmd --get-default-zone# 允许SSH(端口2222,若已修改SSH端口)

firewall-cmd --permanent --zone=public --add-port=2222/tcp# 允许HTTP(80)和HTTPS(443)(若需Web服务)

firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https# 拒绝所有其他入站连接(默认已拒绝,无需额外配置)# 重新加载规则生效

firewall-cmd --reload

步骤 3:限制特定 IP 访问(如仅允许公司内网 IP 访问 SSH):

bash 复制代码
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="2222" accept'

firewall-cmd --permanent --zone=public --remove-port=2222/tcp  # 移除全局允许的2222端口

firewall-cmd --reload

验证规则:

firewall-cmd --zone=public --list-all  # 查看public区域所有规则
(2)Ubuntu 配置 ufw

步骤 1:启用 ufw 并设置默认规则:

bash 复制代码
ufw default deny incoming  # 默认拒绝所有入站

ufw default allow outgoing  # 默认允许所有出站

ufw enable  # 启用ufw

ufw status  # 验证,输出"Status: active"

步骤 2:允许必要服务:

允许SSH(端口2222)

bash 复制代码
ufw allow 2222/tcp# 允许HTTP和HTTPS

ufw allow 80/tcp

ufw allow 443/tcp# 限制特定IP访问SSH

ufw allow from 192.168.1.0/24 to any port 2222 proto tcp

验证规则:

ufw status numbered  # 查看带编号的规则列表

五、日志审计与监控机制与加固(溯源)

1. 原生安全机制

|-----------------|-----------------------------------------------------------|---------------------------------------|
| 机制名称 | 原理与作用 | 工具 / 配置文件 |
| rsyslog(系统日志) | 收集并转发系统日志(如内核日志、服务日志、应用日志),支持输出到文件、远程日志服务器。 | /etc/rsyslog.conf、/var/log/目录 |
| auditd(审计守护进程) | 精细化审计系统调用、文件访问、进程操作,支持实时监控和日志记录,CentOS 默认安装,Ubuntu 需手动安装。 | auditctl、ausearch、aureport |
| logrotate(日志轮转) | 自动切割过大日志(按大小 / 时间),压缩旧日志,删除过期日志,防止磁盘占满。 | /etc/logrotate.conf、/etc/logrotate.d/ |

2. 加固操作(重点是 auditd 审计)

(1)配置 rsyslog 远程日志(企业场景)

作用:将本地日志发送到远程日志服务器,防止攻击者篡改本地日志销毁证据。

服务器端(日志接收端)配置(CentOS):

bash 复制代码
vim /etc/rsyslog.conf# 启用UDP接收(或TCP,更可靠)

module(load="imudp")

input(type="imudp" port="514")# 或启用TCP接收# module(load="imtcp")# input(type="imtcp" port="514")# 配置日志存储路径(按客户端IP分类)$template RemoteLog,"/var/log/remote/%FROMHOST-IP%/%PROGRAMNAME%.log"

*.* ?RemoteLog# 重启rsyslog

systemctl restart rsyslog

客户端(日志发送端)配置:

bash 复制代码
vim /etc/rsyslog.conf# 添加远程日志服务器地址

*.* @log-server-ip:514  # UDP协议(@)# 或 *.* @@log-server-ip:514  # TCP协议(@@)# 重启rsyslog

systemctl restart rsyslog
(2)配置 auditd 审计关键行为

安装 auditd(Ubuntu 需手动安装):

bash 复制代码
# CentOS/RHEL(默认已安装)

systemctl start auditd

systemctl enable auditd# Ubuntuapt install auditd -y

systemctl enable --now auditd

添加审计规则(监控关键文件 / 操作):

1. 监控/etc/passwd(账户修改)

bash 复制代码
auditctl -w /etc/passwd -p rwxa -k passwd_changes# 2. 监控/etc/shadow(密码修改)

auditctl -w /etc/shadow -p rwxa -k shadow_changes# 3. 监控/etc/sudoers(sudo配置修改)

auditctl -w /etc/sudoers -p rwxa -k sudoers_changes# 4. 监控SSH登录(记录所有ssh相关操作)

auditctl -w /usr/sbin/sshd -p rwxa -k sshd_activity# 5. 监控进程创建(记录所有execve系统调用)

auditctl -a exit,always -F arch=b64 -S execve -k process_creation

参数说明:

-w /path:监控的文件 / 路径;

-p rwxa:监控的权限(read、write、execute、append);

-k key:给规则加标签(便于后续查询);

-a exit,always:记录系统调用退出事件。

查询审计日志:

按标签查询(如查询passwd修改)

bash 复制代码
ausearch -k passwd_changes# 按时间查询(如查询今天的审计日志)

ausearch -ts today# 生成审计报告

aureport -a  # 所有审计事件统计

aureport -x  # 进程执行报告

六、漏洞与补丁管理机制与加固(防已知漏洞)

1. 原生安全机制

|--------------------|-------------------------------------------------------------------|----------------------------------------------------|
| 机制名称 | 原理与作用 | 工具 / 命令 |
| yum(CentOS/RHEL) | RPM 包管理工具,支持从官方仓库或第三方仓库(如 EPEL)下载并安装补丁,yum update可更新所有包。 | yum、yum-cron(自动更新) |
| apt(Ubuntu/Debian) | DEB 包管理工具,apt update更新包索引,apt upgrade安装补丁,apt dist-upgrade处理依赖变更。 | apt、unattended-upgrades(自动更新) |
| 内核更新 | Linux 内核漏洞需通过更新内核包修复(如kernel包),更新后需重启生效。 | yum install kernel、apt install linux-image-generic |

2. 加固操作(自动更新 + 定期扫描)

(1)配置自动更新

CentOS/RHEL 配置 yum-cron:

bash 复制代码
# 安装yum-cron

yum install yum-cron -y# 编辑配置文件vim /etc/yum/yum-cron.conf# 修改以下参数

update_cmd = security  # 仅更新安全补丁(推荐,避免功能更新导致兼容性问题)

update_messages = yes  # 发送更新通知

download_updates = yes  # 自动下载补丁

apply_updates = yes     # 自动安装补丁(生产环境需谨慎,建议先测试)# 启动并设置开机自启

systemctl start yum-cron

systemctl enable yum-cron

Ubuntu 配置 unattended-upgrades:

bash 复制代码
# 安装工具apt install unattended-upgrades update-notifier-common -y# 启用自动更新

dpkg-reconfigure -plow unattended-upgrades  # 选择"是"# 编辑配置文件(仅更新安全补丁)vim /etc/apt/apt.conf.d/50unattended-upgrades# 确保以下配置生效

Unattended-Upgrade::Allowed-Origins {

    "${distro_id}:${distro_codename}-security";  # 仅安全补丁

    # 注释其他源(如${distro_id}:${distro_codename}-updates)};

Unattended-Upgrade::AutoFixInterruptedDpkg "true";  # 自动修复中断的dpkg进程

Unattended-Upgrade::SendEmail "true";  # 发送邮件通知(需配置邮件)# 配置更新频率(每天检查一次)vim /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1";  # 每天更新包索引

APT::Periodic::Unattended-Upgrade "1";   # 每天执行自动更新
(2)定期漏洞扫描(第三方工具)

使用 OpenVAS(开源漏洞扫描器):

bash 复制代码
# Ubuntu安装apt install openvas -y

gvm-setup  # 初始化(需等待较长时间,生成管理员账户)

gvm-start  # 启动服务

访问 Web 界面(默认https://localhost:9392),使用初始化生成的管理员账户登录,创建扫描任务(输入目标 IP),扫描完成后查看漏洞报告(高危漏洞需优先修复)。

第三部分:跨系统安全加固核心

|------|----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
| 安全维度 | Windows 关键加固点 | Linux 关键加固点 |
| 身份认证 | 1. 密码复杂度≥10 位(大小写 + 数字 + 特殊字符); 2. 账户锁定 5 次 / 30 分钟; 3. 重命名 Administrator,禁用 Guest; 4. 启用 Windows Hello。 | 1. PAM 配置密码复杂度(minlen=10,difok=3); 2. 账户锁定 5 次 / 30 分钟; 3. SSH 禁用密码登录,启用密钥; 4. 禁用 root SSH 登录。 |
| 访问控制 | 1. 系统目录(C:\Windows、C:\Program Files)仅给 Admin/SYSTEM 完全控制; 2. 移除文件 ACL 中的 Everyone 组; 3. 注册表关键路径权限加固。 | 1. 清理危险 SUID/SGID 程序; 2. 启用 SELinux(CentOS)或 AppArmor(Ubuntu); 3. /tmp 目录设置粘滞位; 4. 关键文件(/etc/passwd)权限设为 644。 |
| 内存防护 | 1. DEP 设为 "所有程序启用"; 2. 确认 ASLR/CFG 启用; 3. 进程完整性级别设为 "中 / 高"。 | 1. ASLR 设为全启用(randomize_va_space=2); 2. 编译时启用 Stack Canary(-fstack-protector); 3. ulimit 限制进程资源(nproc=1024)。 |
| 网络防护 | 1. 防火墙禁用 135/139/445 端口; 2. RDP 仅允许特定 IP; 3. 禁用 SMBv1; 4. 启用 IPsec(域环境)。 | 1. firewalld/ufw 仅允许 SSH(2222)、HTTP/HTTPS; 2. 限制 SSH 访问 IP; 3. 启用 TCP Wrappers(hosts.allow/deny); 4. 禁用 IPv6(非必要)。 |
| 日志审计 | 1. 启用高级审计(账户登录、对象访问、进程创建); 2. 日志大小设为 100MB,存档不覆盖; 3. 启用进程命令行审计。 | 1. auditd 监控 /etc/passwd、sshd、进程创建; 2. rsyslog 发送日志到远程服务器; 3. logrotate 配置日志轮转(保留 4 周,压缩)。 |
| 漏洞管理 | 1. Windows Update 自动安装安全补丁; 2. 定期用 MBSA 扫描漏洞; 3. 禁用 IE 等漏洞组件。 | 1. yum-cron/apt 自动更新安全补丁; 2. 定期用 OpenVAS 扫描漏洞; 3. 及时更新内核(高危漏洞)。 |

通过以上机制与加固操作,可构建 Windows 与 Linux 系统的 "纵深防御体系",大幅降低被攻击的风险。

相关推荐
用户9623779544813 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机16 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机16 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544818 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star18 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544821 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透6 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全