Ubuntu 24.04生产服务器安全加固操作手册

SSH访问控制硬化

生产服务器暴露在公网,SSH是攻击者最常探测的入口。默认配置下,root密码登录开启、端口22全暴露,暴力破解脚本24小时不停扫描。加固SSH是服务器安全的第一道防线。

修改/etc/ssh/sshd_config:

# 禁用root密码登录
PermitRootLogin prohibit-password

# 禁用密码认证,仅允许密钥
PasswordAuthentication no
KbdInteractiveAuthentication no

# 修改默认端口(增加扫描成本)
Port 2222

# 限制登录尝试
MaxAuthTries 3

# 空闲超时断开
ClientAliveInterval 300
ClientAliveCountMax 2

# 限制可登录用户
AllowUsers deploy admin

重启SSH前,先在另一个终端保持连接,确认新配置可正常登录再关闭旧连接。防止配置错误锁死自己。

密钥管理方面,ed25519比RSA更安全更短:

ssh-keygen -t ed25519 -C "deploy@prod-01" -f ~/.ssh/deploy_ed25519

将公钥部署到服务器~/.ssh/authorized_keys,权限设为600,目录700。

防火墙配置:ufw白名单策略

Ubuntu 24.04默认安装ufw。安全加固的核心原则——默认拒绝,仅放行必要端口:

# 重置规则
ufw --force reset

# 默认策略
ufw default deny incoming
ufw default allow outgoing

# 放行SSH(如果改了端口记得对应)
ufw allow 2222/tcp

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

# 限制SSH连接频率(防暴力破解)
ufw limit 2222/tcp

# 启用
ufw --force enable

ufw limit规则会在30秒内超过6次连接时自动封禁来源IP,这是SSH暴力破解的克星。

对于需要内网互通的服务,按IP段放行:

# 仅允许内网访问数据库端口
ufw allow from 10.0.0.0/8 to any port 3306
ufw allow from 10.0.0.0/8 to any port 6379

fail2ban:自动封禁暴力破解IP

ufw limit只能做简单频率限制,fail2ban提供更智能的检测逻辑,能解析日志识别失败模式:

apt install -y fail2ban

cat > /etc/fail2ban/jail.local << 'FAIL2BANEOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 7200
FAIL2BANEOF

systemctl enable fail2ban
systemctl start fail2ban

查看封禁状态:

fail2ban-client status sshd

解封误封IP:

fail2ban-client set sshd unbanip 1.2.3.4

内核参数加固

/etc/sysctl.conf中添加安全相关内核参数:

# 禁止IP转发(非路由器场景)
net.ipv4.ip_forward = 0

# 禁止源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 启用反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 禁止ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# SYN flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048

# 禁止SACK(减少TCP侧信道风险)
net.ipv4.tcp_sack = 0

执行sysctl -p生效。

自动安全更新与日志审计

安装unattended-upgrades自动打安全补丁:

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

配置/etc/apt/apt.conf.d/50unattended-upgrades,确认仅自动安装安全更新:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};

日志审计方面,安装auditd监控系统关键调用:

apt install -y auditd

# 监控/etc/passwd修改
auditctl -w /etc/passwd -p wa -k passwd_changes

# 监控sudo使用
auditctl -w /usr/bin/sudo -p x -k sudo_usage

# 监控SSH配置修改
auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config

查看审计日志:

ausearch -k passwd_changes | ausearch -i

用户权限最小化

生产环境禁止多人共享root。为每个运维人员创建独立账号,按需赋予sudo权限:

# 创建用户
useradd -m -s /bin/bash deploy

# 配置sudo权限(仅允许特定命令)
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php*-fpm

定期清理无用账号和过期密钥。检查当前系统中的空密码账号:

awk -F: '($2 == "" || $2 == "!") {print $1}' /etc/shadow

入侵检测:rkhunter与ClamAV

# 安装rootkit检测
apt install -y rkhunter
rkhunter --update
rkhunter --check --skip-keypress

# 安装杀毒
apt install -y clamav
freshclam
clamscan -r --bell -i /home

将扫描加入cron,每周执行一次:

0 3 * * 0 rkhunter --check --skip-keypress --report-warnings-only >> /var/log/rkhunter.log
0 4 * * 0 clamscan -r -i /home >> /var/log/clamav.log

服务器安全加固没有终点,每个新暴露的端口、每新增一个用户账号、每次apt upgrade都是检查窗口。上述操作清单执行完毕后,建议用Lynis做一次全面审计:

apt install -y lynis
lynis audit system

Lynis会输出一份评分报告和具体修复建议,比逐条对照CIS Benchmark高效得多。服务器运维的日常就是反复检查、持续收敛攻击面。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/ubuntu2404-sheng-chan-fu-wu-qi-an-quan-jia-gu-cao-zuo-shou/

(0)
小编小编
上一篇 5小时前
下一篇 5小时前

相关推荐