深入解析:Linux 安全加固:SSH 安全、sudo 权限、防火墙、入侵检测实战(企业级安全指南)

前言

你的服务器是否经历过:

  • SSH 被暴力破解,日志中全是 Failed password
  • 普通用户误操作,执行了 rm -rf /
  • 黑客提权成功,在系统中植入后门?
  • 未知进程监听端口,怀疑已被入侵?

在云时代,Linux 服务器是黑客的首要目标。一个未加固的系统,可能在上线几分钟内就被扫描并攻击。

据 Verizon《2024 数据泄露调查报告》,83% 的云服务器入侵源于配置不当和弱密码

本文将带你从 SSH 安全、sudo 权限控制、防火墙策略、日志监控到入侵检测,系统性地完成一次企业级 Linux 安全加固,打造“铜墙铁壁”般的服务器防线。


一、安全加固核心原则

在动手前,牢记三大安全原则:

  1. 最小权限原则:用户/服务只拥有完成任务所需的最小权限
  2. 纵深防御(Defense in Depth):多层防护,即使一层被突破,仍有后备
  3. 持续监控与审计:及时发现异常行为

二、SSH 安全:第一道防线

SSH 是远程管理的入口,也是攻击最频繁的端口(默认 22)。

✅ 1. 禁用 root 登录

编辑 /etc/ssh/sshd_config

# 禁止 root 直接登录
PermitRootLogin no
# 推荐使用普通用户 + sudo

✅ 2. 禁用密码登录,改用密钥认证

# 禁用密码
PasswordAuthentication no
# 启用公钥认证
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

✅ 配置流程:

# 本地生成密钥对
ssh-keygen -t rsa -b 4096 -C "admin@company.com"
# 将公钥上传到服务器
ssh-copy-id user@server_ip
# 重启 SSH 服务
sudo systemctl restart sshd

优势:免密登录 + 防暴力破解


✅ 3. 修改默认端口(可选)

# 改为非常用端口,减少扫描
Port 22222

⚠️ 注意:需同步更新防火墙规则。


✅ 4. 限制登录用户和来源 IP

# 只允许特定用户登录
AllowUsers alice bob
# 限制来源 IP(配合防火墙更佳)
AllowUsers alice@192.168.1.100

✅ 5. 设置登录超时与失败锁定

# 登录超时
LoginGraceTime 60
# 最大尝试次数
MaxAuthTries 3
# 空闲断开
ClientAliveInterval 300
ClientAliveCountMax 2

✅ 6. 重启并验证

sudo systemctl restart sshd
# 新开终端测试,避免锁死!

三、sudo 权限精细化管理

sudo 允许普通用户执行特权命令,但必须严格控制。

✅ 1. 查看当前 sudo 配置

sudo cat /etc/sudoers
# 或使用 visudo(推荐)
sudo visudo

✅ 2. 为用户分配最小权限

# 允许 alice 重启 nginx,无需密码
alice ALL=(root) NOPASSWD: /usr/sbin/service nginx restart
# 允许 devops 组执行所有命令(谨慎!)
%devops ALL=(ALL:ALL) ALL

✅ 3. 禁用 shell 转义

# 防止通过 sudo su 获取 root shell
Defaults !shell_escape

✅ 4. 记录 sudo 操作日志

# 默认记录在 /var/log/auth.log 或 /var/log/secure
# 可配置集中日志系统(如 ELK)

四、防火墙配置:网络层防护

✅ 1. firewalld(CentOS/RHEL 7+)

# 启动并开机自启
sudo systemctl enable firewalld --now
# 查看状态
sudo firewall-cmd --state
# 添加 SSH 端口(如果改了)
sudo firewall-cmd --permanent --add-port=22222/tcp
# 开放 HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载
sudo firewall-cmd --reload

✅ 2. ufw(Ubuntu 简化防火墙)

# 安装
sudo apt install ufw
# 允许 SSH
sudo ufw allow OpenSSH
# 或指定端口
sudo ufw allow 22222/tcp
# 启用
sudo ufw enable

✅ 3. iptables(传统,灵活但复杂)

# 允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH
sudo iptables -A INPUT -p tcp --dport 22222 -j ACCEPT
# 默认拒绝
sudo iptables -P INPUT DROP

建议:生产环境优先使用 firewalldufw


五、fail2ban:自动封禁暴力破解

fail2ban 能监控日志,自动封禁频繁失败的 IP。

✅ 1. 安装

# Ubuntu/Debian
sudo apt install fail2ban
# CentOS/RHEL
sudo yum install fail2ban

✅ 2. 配置 SSH 防护

创建 /etc/fail2ban/jail.local

[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
  • maxretry=3:10分钟内失败3次即封禁
  • bantime=3600:封禁1小时

✅ 3. 启动服务

sudo systemctl enable fail2ban --now
sudo systemctl status fail2ban

✅ 4. 查看封禁状态

sudo fail2ban-client status sshd

️ 六、入侵检测与安全审计

✅ 1. 检查异常登录

# 查看最近登录
last
# 查看失败登录
sudo grep "Failed password" /var/log/auth.log | tail -20
# 查看所有用户
cat /etc/passwd

✅ 2. 检查监听端口

ss -tuln
# 或
netstat -tuln

查找未知端口(如 6667、12345 等)

✅ 3. 检查计划任务

# 所有用户的 crontab
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l 2>/dev/null; done
# 系统级任务
ls /etc/cron.d/

✅ 4. 检查启动项

systemctl list-unit-files --type=service | grep enabled

✅ 5. 使用 rkhunter 检测后门

# 安装
sudo apt install rkhunter
# 扫描
sudo rkhunter --check
# 更新特征库
sudo rkhunter --update

七、安全加固检查清单(建议收藏)

项目是否完成备注
✅ 禁用 root SSH 登录PermitRootLogin no
✅ 启用 SSH 密钥认证PasswordAuthentication no
✅ 修改 SSH 默认端口可选
✅ 配置防火墙firewalld / ufw
✅ 安装 fail2ban防暴力破解
✅ 配置 sudo 权限最小权限原则
✅ 禁用不必要的服务systemctl disable xxx
✅ 定期更新系统apt upgrade / yum update
✅ 备份重要数据3-2-1 原则
✅ 监控关键日志auth.log, secure

写在最后

安全不是“一劳永逸”的任务,而是持续的过程。一次彻底的加固,能极大降低被入侵的风险。

记住

  • SSH 是生命线,必须加固
  • 最小权限 + 日志审计 = 安全基石
  • fail2ban 是自动化防御利器
  • 定期检查 = 防患于未然

不要等到数据被加密、服务器被挖矿才后悔——从今天开始,为你的 Linux 服务器穿上“防弹衣”


如需获取更多关于 Linux 内核调优、企业级服务部署、自动化运维与容器安全 等深度实战内容,请持续关注本专栏 《Linux企业级运维实战》 系列文章。

posted on 2025-11-07 17:23  wgwyanfs  阅读(78)  评论(0)    收藏  举报

导航