系统安全配置与加固
用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。
这里我们来讲述系统安全配置与加固,在进行内网渗透工程中,我们接触到的,利用最多的就是系统,了解系统的安全配置有利于我们进行渗透测试,比如说提权,横向移动等操作,当我们无法利用系统或者服务漏洞来进行提权或者横向移动时,那么利用安全配置的缺陷来进行渗透就是一个很好的思路。接下来我们来讲述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段添加
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段添加
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:将公钥上传到服务器(客户端执行):
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip # user为服务器用户名,server-ip为服务器IP
步骤 3:服务器禁用 SSH 密码登录(服务器端执行,root 权限):
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:
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 权限):
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:启动并设置开机自启:
systemctl start firewalldsystemctl enable firewalldfirewall-cmd --state # 验证,输出“running”
步骤 2:配置基础规则(仅允许必要服务):
# 查看默认区域(通常为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=httpfirewall-cmd --permanent --zone=public --add-service=https# 拒绝所有其他入站连接(默认已拒绝,无需额外配置)# 重新加载规则生效firewall-cmd --reload
步骤 3:限制特定 IP 访问(如仅允许公司内网 IP 访问 SSH):
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 并设置默认规则:
ufw default deny incoming # 默认拒绝所有入站ufw default allow outgoing # 默认允许所有出站ufw enable # 启用ufwufw status # 验证,输出“Status: active”
步骤 2:允许必要服务:
# 允许SSH(端口2222)
ufw allow 2222/tcp# 允许HTTP和HTTPSufw allow 80/tcpufw allow 443/tcp# 限制特定IP访问SSHufw 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):
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# 重启rsyslogsystemctl restart rsyslog
客户端(日志发送端)配置:
vim /etc/rsyslog.conf# 添加远程日志服务器地址*.* @log-server-ip:514 # UDP协议(@)# 或 *.* @@log-server-ip:514 # TCP协议(@@)# 重启rsyslogsystemctl restart rsyslog
(2)配置 auditd 审计关键行为
安装 auditd(Ubuntu 需手动安装):
# CentOS/RHEL(默认已安装)systemctl start auditdsystemctl enable auditd# Ubuntuapt install auditd -ysystemctl enable --now auditd
添加审计规则(监控关键文件 / 操作):
# 1. 监控/etc/passwd(账户修改)
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修改)
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:
# 安装yum-cronyum 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-cronsystemctl enable yum-cron
Ubuntu 配置 unattended-upgrades:
# 安装工具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-upgradesAPT::Periodic::Update-Package-Lists "1"; # 每天更新包索引APT::Periodic::Unattended-Upgrade "1"; # 每天执行自动更新
(2)定期漏洞扫描(第三方工具)
使用 OpenVAS(开源漏洞扫描器):
# Ubuntu安装apt install openvas -ygvm-setup # 初始化(需等待较长时间,生成管理员账户)gvm-start # 启动服务
访问 Web 界面(默认https://localhost:9392),使用初始化生成的管理员账户登录,创建扫描任务(输入目标 IP),扫描完成后查看漏洞报告(高危漏洞需优先修复)。
第三部分:跨系统安全加固核心
安全维度 | Windows 关键加固点 | Linux 关键加固点 |
身份认证 | 1. 密码复杂度≥10 位(大小写 + 数字 + 特殊字符); | 1. PAM 配置密码复杂度(minlen=10,difok=3); |
访问控制 | 1. 系统目录(C:\Windows、C:\Program Files)仅给 Admin/SYSTEM 完全控制; | 1. 清理危险 SUID/SGID 程序; |
内存防护 | 1. DEP 设为 “所有程序启用”; | 1. ASLR 设为全启用(randomize_va_space=2); |
网络防护 | 1. 防火墙禁用 135/139/445 端口; | 1. firewalld/ufw 仅允许 SSH(2222)、HTTP/HTTPS; |
日志审计 | 1. 启用高级审计(账户登录、对象访问、进程创建); | 1. auditd 监控 /etc/passwd、sshd、进程创建; |
漏洞管理 | 1. Windows Update 自动安装安全补丁; | 1. yum-cron/apt 自动更新安全补丁; |
通过以上机制与加固操作,可构建 Windows 与 Linux 系统的 “纵深防御体系”,大幅降低被攻击的风险。