Ubuntu服务器防攻击+防病毒手册

本文是一套完整的Ubuntu服务器安全防护方案,构建了系统、网络、杀毒、监控、运维全方位防护体系。通过系统补丁自动更新、账号权限及SSH加固、内核参数优化,夯实系统底层安全。依托UFW防火墙、Fail2Ban拦截暴力破解,筑牢网络边界防线。搭配ClamAV杀毒、Rootkit检测工具,查杀病毒木马与后门。同时启用AppArmor权限管控、auditd日志审计,实时监控服务器异常行为。配套自动化巡检、定时备份与入侵应急流程,形成常态化安全运维机制,可有效抵御爆破、漏洞利用、病毒入侵等各类服务器攻击。

总览分层防护体系

  1. 系统基础加固(打补丁、账号、SSH、内核参数)

  2. 网络边界防护(UFW 防火墙 + Fail2Ban 防暴力破解)

  3. 病毒 / 木马 / 后门查杀(ClamAV 杀毒 + Rootkit 检测)

  4. 进程强制访问控制(AppArmor)

  5. 日志审计、入侵监控、自动告警

  6. 定期巡检、备份、应急处置

前置说明:火绒无免费 Linux 个人版,Ubuntu 服务器杀毒统一使用开源免费 ClamAV;企业商用可采购火绒 Linux 企业终端。


一、第一道防线:系统底层加固,防漏洞入侵

1. 杜绝漏洞利用攻击,自动安全更新

sudo apt update && sudo apt install -y unattended-upgrades
# 启用自动安全补丁更新
sudo dpkg-reconfigure -plow unattended-upgrades
# 选择 Yes 开启自动更新
# 查看更新配置
cat /etc/apt/apt.conf.d/50unattended-upgrades
# 查看更新日志
tail -f /var/log/unattended-upgrades/unattended-upgrades.log

2. 防止暴力登录、提权,账号权限加固

(1)新建普通 sudo 用户,禁止 root 远程登录

# 创建登录用户(替换deploy为你的用户名)
sudo adduser deploy
# 赋予sudo权限
sudo usermod -aG sudo deploy

(2)清理危险账号

# 查看空密码账号
awk -F: '($2==""){print $1}' /etc/shadow
# 删除无用测试账号
sudo userdel -r test
# 锁定长期不用账号
sudo usermod -L olduser

(3)强制高强度密码策略

sudo apt install libpam-cracklib
sudo nano /etc/pam.d/common-password
# 修改此行,开启复杂度校验
password    required    pam_cracklib.so retry=3 minlen=10 difok=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

参数说明:10 位密码,必须包含大小写、数字、特殊符号,3 次输错锁定。

3. 抵御 90% 扫描爆破,SSH 全维度加固

sudo nano /etc/ssh/sshd_config
# 修改/新增以下配置
Port 36742                  # 修改高位端口(10000-65535,云安全组同步放行)
PermitRootLogin no          # 禁止root远程登录
PasswordAuthentication no    # 关闭密码登录,仅允许密钥
PubkeyAuthentication yes
MaxAuthTries 3               # 最多3次认证失败
AllowUsers deploy            # 仅允许deploy用户登录
X11Forwarding no             # 关闭X11转发,减少攻击面
PermitEmptyPasswords no
# 重启ssh服务
sudo systemctl restart ssh

操作提醒:先放行新端口防火墙,再重启 ssh,避免锁服务器!

4. 内核安全参数 (sysctl) 防溢出、CC 攻击

sudo nano /etc/sysctl.conf
# 复制全部配置
# 1. 防SYN洪水、CC攻击
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 2048
# 2. 禁止IP转发(非网关服务器)
net.ipv4.ip_forward = 0
# 3. 防止地址欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 4. 关闭ICMP重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 5. 限制核心内存防护,抵御内核提权
kernel.randomize_va_space = 2
# 生效配置
sudo sysctl -p

5. 卸载无用服务,缩小攻击面

# 查看开机自启服务
systemctl list-unit-files --type=service --state=enabled
# 关闭无用服务示例
sudo systemctl disable --now avahi-daemon cups rpcbind
# 删除不必要软件
sudo apt remove -y telnet rsh xinetd vsftpd
sudo apt autoremove -y

二、网络防护:UFW 防火墙 + Fail2Ban 自动封禁

1. 默认拒绝所有入站,最小开放端口,UFW 防火墙

# 安装防火墙
sudo apt install ufw
# 默认策略:入站全部拒绝,出站全部允许
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 放行SSH自定义端口(替换36742为你ssh端口)
sudo ufw allow 36742/tcp
# 放行Web服务
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 数据库仅允许内网IP访问(示例MySQL)
sudo ufw allow from 192.168.1.0/24 to any port 3306

# 启用防火墙
sudo ufw enable
# 查看规则
sudo ufw status verbose

2. Fail2Ban 自动拦截暴力破解 - SSH/Nginx/MySQL

安装

sudo apt install fail2ban

推荐全局模板配置

# 新建本地配置,不修改默认jail.conf
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

核心配置:

[DEFAULT]
# 白名单本地/内网,避免误封
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
banaction = ufw
# 封禁动作:封禁+邮件告警
action = %(action_mwl)s
# 10分钟内失败3次,封禁12小时
findtime = 600
maxretry = 3
bantime = 43200

# SSH防护
[sshd]
enabled = true
port = 36742
logpath = /var/log/auth.log
filter = sshd

# Nginx网站爆破防护(可选)
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log

启动与常用命令

sudo systemctl enable --now fail2ban
# 查看封禁列表
sudo fail2ban-client status sshd
# 手动解封IP
sudo fail2ban-client set sshd unbanip 1.2.3.4
# 查看攻击IPTOP10
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -10

三、核心杀毒模块:防病毒、木马、Rootkit

方案 1:ClamAV 开源免费杀毒(生产首选)

完整安装

sudo apt update
sudo apt install -y clamav clamav-daemon clamav-freshclam
# 停止更新服务,初始化病毒库
sudo systemctl stop clamav-freshclam
sudo freshclam
# 开机自启
sudo systemctl enable --now clamav-freshclam
sudo systemctl enable --now clamav-daemon

扫描命令

# 全盘递归扫描,删除病毒
sudo clamscan -r --remove /
# 仅扫描网站目录,输出日志
sudo clamscan -r /var/www/html -l /var/log/clamav/www_scan.log
# 实时守护扫描(文件写入自动检测)
clamdscan /home

定时自动扫描 + 邮件告警

  1. 新建扫描脚本 /root/clam_scan.sh
#!/bin/bash
SCAN_LOG="/var/log/clamav/daily_scan.log"
DATE=$(date +%Y-%m-%d)
# 更新病毒库
freshclam >> $SCAN_LOG
# 全盘扫描
clamscan -r / --remove >> $SCAN_LOG
# 检测病毒数量
INFECT=$(grep -i "Infected files: [1-9]" $SCAN_LOG)
if [ -n "$INFECT" ];then
    echo "$DATE 服务器检测到恶意文件,请立即处理" | mail -s "服务器病毒告警" your@shturl.
fi
  1. 授权并加入定时任务
sudo chmod +x /root/clam_scan.sh
# 每天凌晨3点自动扫描
sudo crontab -e
0 3 * * * /root/clam_scan.sh

方案 2:查杀挖矿木马、提权后门:Rootkit 后门检测

# 工具1 chkrootkit
sudo apt install chkrootkit
sudo chkrootkit
# 工具2 rkhunter
sudo apt install rkhunter
sudo rkhunter --update
sudo rkhunter --check

方案 3:付费商用杀毒备选

  1. Sophos Linux AntiVirus:免费单节点企业杀毒

  2. 火绒企业 Linux 终端:付费,需部署火绒控制中心,支持统一管控


四、防程序漏洞提权:进程强制访问控制 AppArmor

Ubuntu 默认预装,限制进程权限,即使网站被入侵也无法篡改系统文件

# 查看状态
sudo aa-status
# 启用强制模式(生产推荐)
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
# 查看日志
dmesg | grep apparmor

常用配置文件路径:/etc/apparmor.d/


五、发现异常攻击行为,日志审计与入侵监控

1. 完整日志留存

sudo apt install auditd
sudo systemctl enable --now auditd
# 监控关键目录篡改(/etc /root /var/www)
sudo auditctl -w /etc -p rwxa -k etc_change
sudo auditctl -w /root -p rwxa -k root_modify
# 查看审计日志
ausearch -k etc_change -ts today

2. 关键安全日志查看命令

# 登录记录(成功/失败)
last
grep "Failed password" /var/log/auth.log
# 防火墙拦截日志
grep UFW /var/log/syslog
# Nginx访问攻击日志
grep -i 403 /var/log/nginx/access.log
# ClamAV病毒日志
tail -f /var/log/clamav/clamd.log

六、长效防护:配套安全运维规范

1. 勒索病毒兜底:数据备份

  • 系统 + 数据库每日定时异地备份

  • 备份文件设置只读权限,避免病毒加密

2. 一键自查:定期安全巡检脚本

#!/bin/bash
echo "=====Ubuntu安全巡检报告===="
echo "1. SSH配置"
grep -E "^(PermitRootLogin|PasswordAuthentication|Port)" /etc/ssh/sshd_config
echo -e "n2. 防火墙开放端口"
sudo ufw status
echo -e "n3. Fail2Ban封禁IP"
sudo fail2ban-client status sshd
echo -e "n4. 近期暴力破解TOP10"
grep "Failed password" /var/log/auth.log 2>/dev/null | awk '{print $11}' | sort | uniq -c | sort -rn | head -10
echo -e "n5. Rootkit检测结果"
chkrootkit | grep INFECTED
echo -e "n6. 病毒库版本"
clamdscan --version

3. 服务器被入侵:应急处置流程

  1. 防火墙临时阻断所有入站:sudo ufw default deny incoming

  2. 全盘 ClamAV+Rkhunter 查杀

  3. 查看审计日志溯源攻击 IP 与操作

  4. 重置所有账号密码、更换 SSH 密钥

  5. 清理定时任务恶意脚本:crontab -l、/etc/cron.*

  6. 修复漏洞,升级系统内核


七、新服务器上线标准流程:完整安全加固执行顺序

  1. 创建普通 sudo 用户,禁用 root 远程登录

  2. 修改 SSH 端口,关闭密码登录,上传密钥认证

  3. 安装 UFW 防火墙,仅开放必要端口

  4. 安装 Fail2Ban,配置 SSH / 网站防爆破

  5. 开启自动系统安全更新 unattended-upgrades

  6. 配置 sysctl 内核防攻击参数

  7. 安装 ClamAV 杀毒,配置每日全盘扫描

  8. 安装 chkrootkit/rkhunter 后门检测

  9. 启用 auditd 审计日志 + AppArmor 强制访问控制

  10. 配置定时备份、每周安全巡检

更多推荐