导读:本期聚焦于苹果创作的《Ubuntu安全加固怎么做?新手必看的服务器防护入门指南》,敬请观看详情。把Ubuntu系统直接暴露在公网上,如果没有做任何安全加固,被扫描和入侵只是时间问题。本文从账号权限、SSH登录、防火墙、自动更新等几个最关键的方向入手,带你一步步完成一台Ubuntu服务器的安全基线配置。文中包含ufw防火墙规则编写、禁用root远程登录、改用密钥认证、配置fail2ban防暴力破解、开启unattended-upgrades自动安全补丁等实操命令,每一步都附带了原理解释和常见坑点提醒,适合刚接触Linux运维的读者照着操作,快速把系统安全水平提升到合格线以上。

刚装好的Ubuntu系统默认配置偏向易用性,很多安全选项并没有打开。如果这台机器要对外提供服务,或者哪怕只是放在内网长期运行,都应该先做一轮基础的安全加固。安全加固听起来像是很专业的工作,其实对新手来说,掌握几个核心方向就能挡住绝大多数自动化扫描和脚本小子的攻击。本文以Ubuntu Server为例,从账号、SSH、防火墙、自动更新四个方面,手把手演示一遍加固流程。

Ubuntu安全加固怎么做?新手必看的服务器防护入门指南

一、先把账号和权限的基础打好

安全的第一道防线永远是账号体系。Ubuntu默认禁用了root账号的密码登录,这是好事,但仍有一些细节需要检查。首先要确认系统里有没有密码为空或者长期不用的账号,可以用下面的命令快速排查:

# 查看所有可登录用户
cat /etc/passwd | grep -v nologin | grep -v false

# 检查是否有空密码账号(正常应该没有输出)
sudo awk -F: '($2==""){print $1}' /etc/shadow

如果发现有空密码账号,必须立刻设置密码或者锁定它:sudo passwd -l 用户名可以锁定账号,锁定后的账号无法再通过密码登录。对于日常操作,建议坚持使用普通用户加sudo的方式,而不是长时间挂着root会话,这样即使误操作或者账号被盗,破坏范围也有限。

其次要注意sudo权限的分配。检查/etc/sudoers时不要直接编辑这个文件,正确做法是用sudo visudo,它会做语法校验,避免你写错一个字符把整个sudo搞挂。原则上是需要什么授权什么,比如只允许某个用户重启服务,就只给那一条命令的权限,而不是简单粗暴地给ALL。

密码策略也值得顺手配一下。安装libpam-pwquality后可以强制要求密码长度和复杂度,编辑/etc/security/pwquality.conf,设置minlen = 12minclass = 3,要求至少十二位且包含三类字符。同时可以用chage -M 90 用户名设置密码九十天过期,不过对于使用密钥登录的场景,这个策略的优先级可以放低。

二、SSH是攻击者最爱的入口,重点加固

公网服务器的日志里,/var/log/auth.log几乎每天都会堆积大量失败登录记录,全都是针对SSH的暴力破解。加固SSH主要从三件事入手:改端口、禁root、上密钥。

第一步先在本地生成密钥对,然后把公钥传到服务器:

# 本地机器执行,生成ed25519密钥(比RSA更短更安全)
ssh-keygen -t ed25519 -C "my-server-key"

# 把公钥上传到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@服务器IP

确认密钥登录成功之后,再修改SSH配置文件/etc/ssh/sshd_config,关键几项如下:

Port 2222                      # 改掉默认22端口,减少大部分扫描噪音
PermitRootLogin no             # 彻底禁止root远程登录
PasswordAuthentication no      # 禁止密码登录,只允许密钥
PubkeyAuthentication yes
MaxAuthTries 3                 # 限制认证尝试次数
ClientAliveInterval 300        # 空闲会话超时
ClientAliveCountMax 2

改完之后一定要先执行sudo sshd -t做语法检查,确认无误再重启服务。这里有个新手常踩的坑:改配置前务必保留一个已经登录的SSH会话不要断开,新开一个终端去测试新配置能否登录。一旦配置写错把自己锁在门外,就只能靠控制台 rescue 模式救回来了。另外,如果你的Ubuntu版本较新,配置可能拆分在/etc/ssh/sshd_config.d/目录下的文件里,后写的配置会覆盖主文件,检查时要留意。

光靠改端口只能减少噪音,真正防暴力破解建议装fail2ban。它的工作原理是监控日志,发现同一IP在短时间内认证失败次数过多,就自动调用防火墙把它封禁一段时间:

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑jail.local,加入:
# [sshd]
# enabled = true
# maxretry = 5
# bantime = 3600
sudo systemctl enable --now fail2ban
# 查看封禁情况
sudo fail2ban-client status sshd

三、用UFW配置防火墙,最小化开放端口

Ubuntu自带的防火墙管理工具UFW(Uncomplicated Firewall)是iptables的前端,命令简单直观。加固的核心原则是最小权限:只放行确实需要的端口,其他一律拒绝。

sudo ufw default deny incoming     # 默认拒绝所有入站
sudo ufw default allow outgoing    # 默认允许所有出站

# 放行SSH(注意如果你改了端口,这里要写新端口)
sudo ufw allow 2222/tcp

# 放行Web服务
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 限定某些管理端口只允许内网访问
sudo ufw allow from 192.168.1.0/24 to any port 5432

# 最后启用
sudo ufw enable
sudo ufw status verbose

操作顺序很重要:一定要先放行SSH端口再执行ufw enable,否则启用防火墙的瞬间你的远程连接就会被掐断。UFW默认规则已经处理好IPv6,不需要额外配置。如果服务器前面有云厂商的安全组,建议两层都配,安全组做粗粒度的网络隔离,UFW做主机层面的精细控制,比如限制某个端口只对特定IP开放。

对于更复杂的场景,UFW还支持应用配置文件,安装Nginx后执行sudo ufw app list能看到Nginx Full之类的预置规则,直接sudo ufw allow 'Nginx Full'即可,比手动记端口方便得多。

四、让安全补丁自动安装,别裸奔等更新

很多入侵事件利用的都是早已公开漏洞的旧版本软件,受害者只要及时打补丁本可以完全避免。但人总是懒的,服务器一多就更顾不过来,所以让安全更新自动化是性价比最高的加固措施之一。

Ubuntu提供了unattended-upgrades组件,配置好后它会每天自动检查并安装安全仓库的补丁:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

配置文件在/etc/apt/apt.conf.d/50unattended-upgrades里,默认只启用安全更新,这个默认值是合理的。可以按需调整邮件通知、是否自动移除无用依赖等选项。日志位于/var/log/unattended-upgrades/,定期瞄一眼确认它在正常工作。

需要提醒的是,自动更新只装安全补丁,不会大版本升级软件,这对生产环境是相对安全的策略。但涉及内核更新时仍需重启才生效,可以用checkrestart或者needs-restarting类工具检查哪些进程还在用旧库文件,安排维护窗口统一重启。

最后,加固不是一次性动作。建议每隔一段时间用lynis这类审计工具跑一遍系统体检,它会输出一份安全评分和改进建议清单,非常适合作为复盘清单。把账号、SSH、防火墙、补丁这几件事做扎实,你的Ubuntu服务器就已经超过互联网上一大半的机器了,剩下的就是保持关注、持续迭代。

Ubuntu安全加固防火墙配置SSH安全修改时间:2026-09-15 12:58:40

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260915/57283.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。