Linux服务器安全加固实操:从SSH到防火墙的零基础配置清单

Linux服务器安全加固的核心思路是减少暴露面、限制登录来源、及时修补漏洞。
对于刚上手的用户,不需要一次做完所有高级配置,先把下面这几项基础项改好,就能挡掉大部分自动化扫描和弱口令尝试。

操作前需要确认的环境信息

开始前先登录服务器,确认系统版本和当前登录方式,避免改完配置把自己关在门外。

cat /etc/os-release
whoami
ss -tlnp | grep :22

如果输出显示 sshd 监听在 0.0.0.0:22,说明所有IP都能尝试SSH连接。
随后所有修改建议在本地保留一个已登录的SSH窗口,不要关闭,方便出错时回滚。

SSH服务加固:改端口、禁root、限重试

SSH是服务器最常见的入口,先从这里下手。

编辑配置文件:

sudo vi /etc/ssh/sshd_config

找到并修改以下参数,没有的就手动添加:

Port 22022
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication yes

说明:

  • Port 22022:把默认22端口改成其他端口,降低被批量扫描的概率。改完记得在防火墙放行新端口。
  • PermitRootLogin no:禁止root用户直接SSH登录,先用普通用户登录再 su 或 sudo。
  • MaxAuthTries 3:密码尝试超过3次断开连接。
  • PasswordAuthentication yes:如果已经配置好密钥登录,可以改为 no,完全禁用密码。

改完后检查语法并重启服务:

sudo sshd -t
sudo systemctl restart sshd

验证方式:不要关闭当前窗口,另开一个终端用新端口连接:

ssh -p 22022 你的用户名@服务器IP

能登录说明配置生效。
如果连不上,回到原窗口把端口改回22,检查防火墙是否放行。

防火墙只放行必要端口

以 firewalld 为例(CentOS 7+、Rocky Linux 常见):

sudo firewall-cmd --permanent --add-port=22022/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

如果系统用的是 ufw(Ubuntu/Debian 常见):

sudo ufw allow 22022/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

放行规则只保留业务需要的端口,数据库端口如3306、6379不要对公网开放,需要时通过内网IP或SSH隧道访问。

用户权限与sudo管理

日常操作不要直接用root。
创建一个普通用户并加入sudo组:

sudo useradd -m -s /bin/bash deploy
sudo passwd deploy
sudo usermod -aG wheel deploy   # CentOS/Rocky
# 或
sudo usermod -aG sudo deploy    # Ubuntu/Debian

验证sudo权限:

su - deploy
sudo whoami

输出 root 说明sudo配置正常。
之后用 deploy 用户登录,需要提权时加 sudo。

同时检查是否有异常账户:

awk -F: '$3>=1000 && $3<65534 {print $1}' /etc/passwd

除自己创建的用户外,出现不认识的账户要排查来源。

自动安全更新与日志检查

及时打补丁能减少已知漏洞被利用的风险。
CentOS/Rocky 可安装 dnf-automatic:

sudo dnf install -y dnf-automatic
sudo vi /etc/dnf/automatic.conf

将 apply_updates 改为 yes,然后启用:

sudo systemctl enable --now dnf-automatic.timer

Ubuntu/Debian 使用:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

日志方面,定期查看登录失败记录:

sudo grep 'Failed password' /var/log/secure      # CentOS/Rocky
sudo grep 'Failed password' /var/log/auth.log    # Ubuntu/Debian

如果同一IP频繁出现失败记录,可以考虑用 fail2ban 自动封禁,但那是进阶项,先把基础加固做完。

容易踩坑的地方

  • 改SSH端口前没放行防火墙:重启sshd后新端口连不上,旧端口又关了,只能通过VNC或救援模式进去改。
  • 禁用root登录后没有普通用户可sudo:直接把自己锁在外面。改 PermitRootLogin no 之前,先确认普通用户能sudo。
  • 自动更新在业务高峰期重启服务:生产环境建议先了解更新策略,必要时只下载不自动安装,或设置维护窗口。
  • 只改配置不验证:每次修改后都要用新连接测试,不要只看配置文件内容。

加固后怎么确认生效

完成上述步骤后,逐项检查:

ss -tlnp | grep sshd
sudo firewall-cmd --list-all    # 或 sudo ufw status
sudo grep -E 'PermitRootLogin|Port|MaxAuthTries' /etc/ssh/sshd_config

再用另一台机器尝试用root和旧端口连接,应该被拒绝。
如果都能按预期拒绝,说明基础加固已经生效。
后续可以再考虑密钥登录、fail2ban、入侵检测等更细的配置。

常见疑问

改SSH端口后宝塔面板还能用吗?

宝塔面板的SSH管理功能依赖SSH服务,只要sshd正常运行,端口变化不影响面板本身。
但面板的“终端”功能如果走SSH连接,需要在面板设置里同步修改端口。

禁用密码登录后忘记密钥怎么办?

如果已经禁用密码且丢失密钥,需要通过云服务商的VNC控制台或救援模式进入系统,重新启用密码登录或添加新密钥。
建议在禁用密码前先确认密钥登录可用。

自动更新会不会导致服务器自动重启?

默认配置下 dnf-automatic 和 unattended-upgrades 通常只更新软件包,不自动重启。
涉及内核更新时,重启需要手动执行或配置维护窗口,具体行为取决于配置文件中的 reboot 相关选项。

防火墙放行了端口但服务还是连不上?

先确认服务本身监听在 0.0.0.0 而不是 127.0.0.1,再检查云服务商的安全组是否放行,最后确认SELinux状态(getenforce)。
这三层都可能拦截连接。

安全加固不是一次性的任务,建议每隔一段时间复查SSH配置、防火墙规则和登录日志。
先把本文的基础项做完,再根据业务需要逐步增加防护措施。

分享到:
上一篇
Linux网络延迟排查:从ping到tcpdump的完整定位思路
下一篇
Linux单用户模式重置密码:CentOS与Ubuntu实操步骤
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意