Linux服务器安全加固全攻略 从SSH、用户权限到防火墙、审计监控,四维纵深防御一次讲透!
你刚开了一台云服务器默认只开了 SSH 22 端口、允许 root 密码登录、防火墙没启用——对攻击者来说这几乎是一张邀请函。互联网上每分钟都有大量僵尸网络在扫描 22 端口、尝试弱口令、撞库一旦成功就植入挖矿木马、勒索病毒甚至把你的服务器当跳板去攻击别人。很多运维的安全策略停留在改个 SSH 端口“装个杀毒软件”但这远远不够。这篇文章基于真实攻防视角把SSH、用户权限、防火墙、审计监控四个维度的纵深防御一次讲透并附一套Ubuntu 22.04 从零加固的完整流程——跟着做你的服务器就硬起来了。红线先行本文所有加固与检测操作只用于你拥有权限的服务器/自建环境——没授权再小也是违法。为什么你的服务器上线即被攻击一台公网服务器从开机那一刻起就进入被扫描状态。据多家威胁情报平台统计暴露 22 端口的云主机平均几分钟内就会收到第一次 SSH 暴力破解尝试。攻击者通常用 Masscan、ZMap 批量扫端口再用 Hydra、Medusa、Ncrack 加载弱口令字典撞库——字典里不仅有root/123456这种组合还有大量历史泄露的用户名密码对。更危险的是他们会利用已知漏洞、错误的authorized_keys、未授权访问的 Redis/MongoDB/Docker API 作为入口再通过 SSH 密钥、历史命令、云元数据服务做横向移动。默认配置的风险归纳起来就四类风险具体表现①入口暴露SSH 22 端口对全网开放root 允许密码登录②权限过大所有人共享 root服务账户可交互登录③网络暴露防火墙没启用安全组放行全部端口④审计缺失没有日志监控入侵后无法追溯所以安全加固不是装一个软件而是围绕四个维度建纵深防御。第一维度SSH——入口即攻击面SSH 是服务器最重要的管理通道也是最大的攻击面。为什么公钥认证比密码安全密码认证依赖共享秘密容易被暴力破解、撞库公钥认证基于非对称加密私钥永不传输安全性高得多核心配置写入/etc/ssh/sshd_config.d/99-hardening.confProtocol 2 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes PermitEmptyPasswords no MaxAuthTries 3 LoginGraceTime 30 ClientAliveInterval 300 ClientAliveCountMax 2 AllowUsers ops deploy AllowGroups ssh-users KexAlgorithms curve25519-sha256,curve25519-sha256libssh.org,ecdh-sha2-nistp256 Ciphers chacha20-poly1305openssh.com,aes256-gcmopenssh.com,aes128-gcmopenssh.com MACs hmac-sha2-512-etmopenssh.com,hmac-sha2-256-etmopenssh.com UseDNS no X11Forwarding no AllowAgentForwarding no AllowTcpForwarding no关键点解读PermitRootLogin no禁止 root 直接登录必须走普通用户sudoPasswordAuthentication no关闭密码登录只留密钥防暴力破解AllowUsers/AllowGroups白名单只放行运维账号AllowTcpForwarding no默认禁隧道业务需要跳板时用Match块精细化放行Match User deploy AllowTcpForwarding yes PermitOpen db.internal:3306authorized_keys 还能限能力# 只允许来自指定IP 只能执行指定命令 from203.0.113.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... opsexample command/usr/local/bin/backup.sh,no-port-forwarding,no-pty ssh-rsa AAAAB3... backupexampleFail2ban 动态封禁解析 SSH 日志失败超阈值就封 IP。它不能替代密钥认证但能大幅降低爆破成功率、减少日志噪音。日志在/var/log/auth.logUbuntu或/var/log/secureCentOS也可用journalctl -u ssh。安全验证顺序避免把自己锁在门外保留一个已登录的 SSH 会话不要退出新开终端sshd -t检查语法 →systemctl reload sshd确认新会话能登录再关旧会话用了AllowUsers要确认自己在白名单内云服务器提前在控制台 VNC 确认能登录常见问题改端口为什么还会被扫改端口只是降噪针对性攻击仍能全端口扫到。真正的安全是SSH 只对 VPN/公司出口 IP 开放公网不暴露 22 端口。第二维度用户权限——最小化与职责分离禁掉 root 远程登录后必须建立普通运维用户通过 sudo 精细授权所有操作可审计、可追溯。关键原则每个运维人员独立账号禁止共享sudo 规则写/etc/sudoers.d/用visudo -cf校验服务账户用/usr/sbin/nologin禁止交互登录关键文件权限最小化/etc/shadow000/640、~/.ssh700、authorized_keys600pam_faillock锁定多次失败账户限制su到 root只允许 wheel 组sudo 规则示例/etc/sudoers.d/opsDefaults:ops env_reset, timestamp_timeout5, log_input, log_output ops ALL(ALL:ALL) ALL deploy ALL(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx %wheel ALL(ALL:ALL) ALL解读ops全权deploy只能免密重启/查看 nginx适合自动化部署log_input, log_output记录 sudo 会话输入输出方便审计。改完必须visudo -cf /etc/sudoers校验。PAM 账户锁定Ubuntu 的/etc/pam.d/common-auth与common-accountauth required pam_faillock.so preauth silent deny5 unlock_time900 auth [success1 defaultignore] pam_unix.so nullok auth [defaultdie] pam_faillock.so authfail deny5 unlock_time900 auth sufficient pam_faillock.so authsucc deny5 unlock_time900 account required pam_faillock.so文件权限与异常账户排查# 检查关键文件权限 stat -c %a %n /etc/shadow /etc/ssh/sshd_config # 查找 SUID/SGID 文件 find / -perm -4000 -o -perm -2000 -type f 2/dev/null # 查找 UID 为 0 的账户后门特征 awk -F: ($3 0) {print $1} /etc/passwd # 查找可登录 shell 的账户 awk -F: ($7 !~ /(nologin|false)$/) {print $1, $7} /etc/passwd # 查找空密码账户 awk -F: ($2 ) {print $1} /etc/shadow # 检查所有 authorized_keys find / -name authorized_keys -type f 2/dev/null -exec cat {} \;发现 UID 0 的非 root 账户、空密码账户、陌生公钥——立即隔离主机、取证。密码策略chagepam_pwquality密码最长 90 天、最短 1 天、到期前 7 天提醒/etc/security/pwquality.conf设minlen12、大小写数字符号混合。真正的安全仍应依赖密钥认证 多因素认证。常见问题禁了 root自动化任务怎么办别重新开 root SSH。给自动化任务建专用账户sudo 只授权特定命令 密钥用command/from限能力——即使密钥泄露也拿不到完整 root shell。第三维度防火墙——默认拒绝与网络隔离主机防火墙遵循**“默认拒绝入站允许出站”只开放必要端口尽量限制源 IP。云环境有安全组 主机防火墙**两层都要配。一个关键坑Docker 会直接操作 iptables 的 NAT 表可能绕过 ufw 规则——容器映射端口会直接暴露必须用DOCKER-USER链处理。UFW 典型配置# 默认策略拒绝入站允许出站 sudo ufw default deny incoming sudo ufw default allow outgoing # SSH 限制源 IP只放行公司网段 sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp # HTTP/HTTPS sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 启用 sudo ufw enable sudo ufw status verbose避免把自己关在防火墙外稳妥顺序# 1. 先放行当前管理 IP sudo ufw allow from $(echo $SSH_CLIENT | awk {print $1}) to any port 22 proto tcp # 2. 再设默认拒绝 sudo ufw default deny incoming sudo ufw default allow outgoing # 3. 最后启用 sudo ufw enableDocker 端口绕过处理只允许特定网段访问容器 8080sudo iptables -I DOCKER-USER -p tcp --dport 8080 ! -s 203.0.113.0/24 -j DROP # 保存规则否则重启失效 sudo apt install iptables-persistent sudo netfilter-persistent save定期检查监听端口ss -tulnp、lsof -i -P -n | grep LISTEN——只留必要服务。数据库、Redis、Docker API严禁直接暴露公网走内网/VPN/SSH 隧道/反向代理。安全组与主机防火墙是与关系安全组拒绝的流量根本到不了主机安全组允许但主机拒绝的也会被丢。两层都要放行必要流量。第四维度审计与持续监控没有审计的加固是不完整的。auditd 监控关键文件# 安装并启用 sudo apt install auditd audispd-plugins sudo systemctl enable --now auditd # 监控关键文件写入和属性变更 sudo auditctl -w /etc/passwd -p wa -k identity sudo auditctl -w /etc/shadow -p wa -k identity sudo auditctl -w /etc/sudoers -p wa -k sudoers sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd # 监控特权命令执行 sudo auditctl -a always,exit -F archb64 -S execve -F euid0 -k rootcmd # 持久化写入 /etc/audit/rules.d/hardening.rules 后 augenrules --load查询审计日志sudo ausearch -k identity -ts recent sudo aureport --summaryAIDE 文件完整性监控为关键文件建哈希基线之后aide --check发现非预期变更。首次初始化后把数据库存到只读介质或远程服务器防攻击者篡改。日常入侵排查清单ss -tulnp # 网络连接与监听端口 ps auxf # 异常进程 crontab -l ls -la /etc/cron.* # 计划任务 last -a lastb -a # 最近登录/失败登录 systemctl list-units --typeservice --staterunning lsmod # 内核模块发现异常优先隔离主机断网或改安全组保留现场再取证——不要直接重启内存里的恶意进程和临时文件会丢。集中日志防痕迹被清理攻击者常rm -rf /var/log/*清痕。用 rsyslog 实时转发到远程日志服务器或部署 Wazuh/ELK关键日志加不可变属性chattr a /var/log/auth.log防删防改配合 logrotatecopytruncate。auditd 性能只监控关键文件写入和特权命令执行开销很小别监控所有execve并按-k标签分类、配置日志轮转max_log_file50。实战Ubuntu 22.04 从零加固完整流程假设你已通过云控制台/初始密码登录拥有 root 权限步骤1更新系统 装基础工具sudo apt update sudo apt upgrade -y sudo apt install -y vim curl wget git ufw fail2ban auditd aide步骤2创建运维用户 配 SSH 密钥# 本地生成密钥 ssh-keygen -t ed25519 -a 100 -C opsexample # 上传公钥 ssh-copy-id -i ~/.ssh/id_ed25519.pub opsserver_ip # 服务器上建用户并加入 sudo 组 sudo adduser ops sudo usermod -aG sudo ops sudo mkdir -p /home/ops/.ssh sudo chmod 700 /home/ops/.ssh sudo cp /root/.ssh/authorized_keys /home/ops/.ssh/authorized_keys sudo chown -R ops:ops /home/ops/.ssh sudo chmod 600 /home/ops/.ssh/authorized_keys步骤3修改 SSH 配置sudo vim /etc/ssh/sshd_config.d/99-hardening.conf # 写入第一维度的配置 sudo sshd -t sudo systemctl reload sshd # 校验语法 重载步骤4配置 sudo 与 PAMsudo visudo -f /etc/sudoers.d/ops # 写入第二维度的规则 # 配置 pam_faillock 账户锁定步骤5启用防火墙sudo ufw allow from $(echo $SSH_CLIENT | awk {print $1}) to any port 22 proto tcp sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable步骤6部署 Fail2bansudo systemctl enable --now fail2ban # 检查状态fail2ban-client status sshd步骤7配置审计与文件完整性sudo auditctl -w /etc/passwd -p wa -k identity # 按第四维度加规则 sudo aideinit sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db步骤8收尾检查ss -tulnp # 确认监听端口 sudo ufw status verbose # 确认防火墙 lastb -a | head # 看失败登录 sudo ausearch -k identity -ts recent # 看审计日志走完这 8 步你的 Ubuntu 服务器就从敞开的门变成了有门禁、有监控、有审计的堡垒。恭喜你Linux 安全加固上手达成如果学到这里你已经具备服务器安全加固的实战能力可以从事安全运维工程师系统安全工程师运维/安全双技能岗位薪资区间8k-20k而且运维安全复合技能越来越抢手。这条路大概需要 1-2 个月的系统投入。那么你还想继续进阶吗Linux 服务器加固是运维和网安的交集点需求刚性、上手快、转岗友好——但自学容易踩坑改错 SSH 把自己锁在门外、防火墙规则写错放行全部端口、审计没配等于白加固。如果你想系统学习网络安全、从服务器加固开始打牢基础Linux 安全加固全体系课程SSH→权限→防火墙→审计实操环境带练授权环境练到会入侵排查与应急专题日志溯源、事件处置就业指导安全运维岗作品简历规划想系统学习网络安全、拿下服务器加固的评论区扣1或私信老师咨询课程详情。特别声明此教程为纯技术分享本文目的绝不是为怀有不良动机的人提供技术支持也不承担因为技术被滥用所产生的连带责任本文所有加固、检测与排查操作只允许在你拥有权限的服务器、自建环境或授权环境中进行目的是唤醒大家对网络安全的重视采取相应的安全措施减少因网络安全带来的经济损失

相关新闻

我在HarmonyOS 7上用三行代码做了个扫描工具,才明白端侧AI为什么是小开发者的春天

我在HarmonyOS 7上用三行代码做了个扫描工具,才明白端侧AI为什么是小开发者的春天

说实话,一开始看到API 26更新Core Vision Kit的时候,我没太当回事。 OCR嘛,哪个平台没有?百度阿里腾讯都有免费接口,接一下也不难。图像超分更是老话题了,各种APP都带,吹了好几年。文搜图听起来…

2026/10/1 12:51:00 阅读更多 →
嘉兴食品外箱收缩膜怎么选?上海睿越塑料,长三角就近供应 适配食品整箱打包

嘉兴食品外箱收缩膜怎么选?上海睿越塑料,长三角就近供应 适配食品整箱打包

嘉兴是长三角食品产业核心集聚区,休闲食品、粮油烘焙、农产品加工等食品加工厂密集,纸箱、泡沫箱外箱用 PE 收缩膜是产品流通的刚需包装材料。很多嘉兴食品厂采购外箱收缩膜时,常遇到膜材易破、收缩不均、食品级资质不全、异地供应商补单慢等…

2026/10/1 12:52:50 阅读更多 →
被投诉的柴犬、扑人的金毛、焦虑的布偶猫,端到端具身交互智能宠物训练师的两个月矫正手记

被投诉的柴犬、扑人的金毛、焦虑的布偶猫,端到端具身交互智能宠物训练师的两个月矫正手记

被投诉的柴犬、扑人的金毛、焦虑的布偶猫,端到端具身交互智能宠物训练师的两个月矫正手记 训练手记的扉页上,记着三个名字和三个问题:柴犬小柴,快递一来就叫,两周被邻居投诉三次;金毛大毛,见人就…

2026/10/1 12:52:41 阅读更多 →

最新新闻

网御星云Power_V堡垒机配置实战:从初始化到审计闭环

网御星云Power_V堡垒机配置实战:从初始化到审计闭环

简介:《网御星云安全系统Power_V功能使用手册》是一份面向安全网关运维人员与网络管理员的功能型参考文档,聚焦防火墙、UTM、IPS、AV等Power V系列产品的进阶配置与典型应用。手册从地址、服务、时间、安全域等基础资源概念切入,逐步讲解地址…

2026/10/1 12:53:59 阅读更多 →
马德拉酒深度解析:从酿造工艺到品鉴选购,读懂不死之酒

马德拉酒深度解析:从酿造工艺到品鉴选购,读懂不死之酒

“Madeira”这名字,我第一次见的时候是有点发懵的。翻开葡萄牙地图,它是北大西洋上的一个群岛;走进酒类商店,它又是一排排琥珀色液体的标签;再往欧洲烘焙书里翻,它还是种黄澄澄的磅蛋糕。三种东西叫同一个名…

2026/10/1 12:53:59 阅读更多 →
基于Python Flask的医院体检预约挂号系统设计与实现

基于Python Flask的医院体检预约挂号系统设计与实现

1. 项目概述:为什么一个体检挂号系统值得自己做 先说个真实的场景。三甲医院体检中心,早上七点半,窗口已经排了四五十人。有人手里捏着一张皱巴巴的预约单,有人对着护士反复问“我这个套餐含不含CT”,还有人因为当天约…

2026/10/1 12:53:59 阅读更多 →
游戏逆向方法论:构建从断点到数据流的可复用分析框架

游戏逆向方法论:构建从断点到数据流的可复用分析框架

游戏逆向这个圈子,方法论比工具稀缺得多。我见过太多人对着一个目标折腾一整晚,断点下了几十个,日志打了一屏,最后依然什么都没定位到;也见过老手面对同一个样本,十分钟内就圈定关键代码范围。区别不在手速…

2026/10/1 12:53:59 阅读更多 →
ARM 设备运行 x86-64 Windows 程序:FEX-Emu、Wine 与 DXMT 实战指南

ARM 设备运行 x86-64 Windows 程序:FEX-Emu、Wine 与 DXMT 实战指南

1. 从"Madeira"这个代号说起:一个跨架构运行环境的真实需求第一次看到"Madeira"这个名字,很多人会以为是某个旅游目的地或者某个开源项目的代号。实际上,结合 FEX-Emu、Wine、DXMT 这几个关键词来看,它指向的…

2026/10/1 12:53:59 阅读更多 →
CPS是什么?信息物理系统与客户编程软件汉化补丁解析

CPS是什么?信息物理系统与客户编程软件汉化补丁解析

CPS 这三个字母,我在过去一年里至少在两个完全不同的技术社群里反复撞见过。做工业数字化的朋友张口就是信息物理系统、数字孪生、边缘控制器;玩对讲机的老哥嘴里念叨的却是"GP88S 的 CPS r02.02 汉化补丁到底怎么装"。同一个缩写,…

2026/10/1 12:52:59 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →