ubuntu服务器安全策略需分阶段落地,核心是“能执行、可验证、不锁死”,涵盖登录认证、防火墙最小化、系统自动防护及持续验证四阶段。

Ubuntu 服务器安全策略落地不是堆砌配置,而是分阶段、有重点地把关键控制点真正生效。核心在于“能执行、可验证、不锁死”,尤其要避开新手常踩的配置即失联、重启即失效、规则冲突等坑。
一、登录与身份认证必须先稳住
这是所有安全动作的前提——你得能进得去,又不让别人随便进。
- 创建非root管理用户并加sudo组:
adduser admin && usermod -aG sudo admin,立刻退出root会话,用新用户重登 - 禁用密码登录,只留密钥:编辑
/etc/ssh/sshd_config,确认以下四行已设置且未被注释:PermitRootLogin noPasswordAuthentication noPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys - 改SSH端口(如2222)后,必须同步更新UFW规则,再测试新端口连接成功,最后才重启sshd:
sudo systemctl restart ssh - 启用登录失败锁定:在
/etc/pam.d/sshd中添加auth [default=die] pam_tally2.so deny=5 unlock_time=600 even_deny_root,防止暴力试探
二、防火墙和端口暴露要最小化
默认拒绝所有入站,只放行真正需要的端口和服务,且尽可能限制来源IP。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 启用UFW并设默认策略:
sudo ufw default deny incoming && sudo ufw default allow outgoing - 按需开放端口,避免写
ufw allow ssh这种模糊指令;明确指定协议和端口,例如:sudo ufw allow proto tcp from 203.123.45.0/24 to any port 2222sudo ufw allow 80,443/tcp - 用
sudo ss -tulpn | grep LISTEN检查当前监听服务,停掉不用的(如avahi-daemon、cups-browsed),再用sudo systemctl disable --now avahi-daemon彻底卸载
三、系统自身防护要自动+可审计
人会疏忽,但自动化机制不会。让系统自己守好补丁、密码、日志这三道门。
- 开启无人值守安全更新:
sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades,确保Origin-Pattern里勾选security - 强制密码复杂度:安装
libpam-cracklib,修改/etc/pam.d/common-password,加入password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 remember=5 - 设置密码有效期:在
/etc/login.defs中调整PASS_MAX_DAYS 90PASS_MIN_DAYS 7PASS_WARN_AGE 7
再对现有用户生效:sudo chage --maxdays 90 --mindays 7 --warndays 7 admin - 启用fail2ban监控SSH和vsftpd等服务:
sudo apt install fail2ban && sudo systemctl enable fail2ban,默认规则已足够应对常见爆破
四、验证与持续维护不能少
配完不是结束,而是开始。每次变更后都要快速验证,每月做一次轻量巡检。
- 变更后必做三件事:
换终端重连SSH、sudo ufw status verbose看规则是否加载、sudo journalctl -u ssh --since "1 hour ago"查有无拒绝记录 - 每月运行:
sudo apt list --upgradable(看有无滞留更新)sudo needrestart -r a(查哪些服务该重启)sudo lastb -n 10(查最近失败登录) - 日志集中查看:
sudo tail -f /var/log/auth.log盯SSH行为,sudo grep 'Ban' /var/log/fail2ban.log看封禁效果










