前置准备
本文适配CentOS 7+/Ubuntu 18.0+所有主流Linux发行版,所有功能使用系统自带组件实现,你只需要提前获取服务器root用户权限,所有命令可直接复制执行,零额外配置成本。
一、每日自动清理过期日志
系统长期运行会产生大量过期日志,极易占满磁盘空间导致服务宕机,通过定时任务自动清理7天前的无用日志,配置步骤如下:
实操步骤
```
cat > /etc/cron.daily/clean_logs << 'EOF'
!/bin/sh
清理/var/log目录下7天前的日志文件
find /var/log -type f -mtime +7 -name ".log" -delete
find /var/log -type f -mtime +7 -name ".gz" -delete
限制系统日志大小不超过100M
journalctl --vacuum-size=100M
EOF
```
```
chmod +x /etc/cron.daily/clean_logs
```
系统默认会每日自动执行该任务,无需手动操作,永久解决日志占盘问题。
二、每日磁盘使用率自动告警
提前收到磁盘容量告警能避免服务因磁盘满宕机,配置步骤如下:
实操步骤
- 1. 先安装邮件工具,CentOS执行:
yum install -y mailx;Ubuntu执行:apt install -y mailutils
- 2. 执行以下命令生成检查脚本,注意替换脚本中的邮箱地址为你自己的收信邮箱:
```
cat > /opt/disk_check.sh << 'EOF'
!/bin/bash
磁盘告警阈值:使用率超过80%触发告警
THRESHOLD=80
替换为你的收信邮箱
ALERT_EMAIL="your@example.com"
USED=$(df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//g')
if [ $USED -gt $THRESHOLD ];then
echo "警告:服务器根分区磁盘使用率已达${USED}%,请及时清理" | mail -s "【服务器告警】磁盘容量不足" $ALERT_EMAIL
fi
EOF
```
```
chmod +x /opt/disk_check.sh
crontab -e << EOF
$(crontab -l)
0 9 /bin/bash /opt/disk_check.sh
EOF
```
以上配置表示每日早上9点自动检查一次磁盘使用率,超出阈值自动发邮件通知,阈值可根据需求修改。
三、每周自动备份核心系统配置
误改配置或系统故障后,完整备份能让你10分钟内恢复服务,配置步骤如下:
实操步骤
- 1. 生成备份脚本,可自行添加需要备份的自定义目录:
```
cat > /opt/config_backup.sh << 'EOF'
!/bin/bash
备份文件存放目录
BACKUP_DIR=/backup/system_config
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
备份核心系统配置,可自行追加自定义路径
tar -zcf $BACKUP_DIR/system_config_$DATE.tar.gz /etc /root/.ssh /var/spool/cron
自动删除30天前的旧备份,节省存储空间
find $BACKUP_DIR -type f -mtime +30 -name ".tar.gz" -delete
EOF
```
```
chmod +x /opt/config_backup.sh
crontab -e << EOF
$(crontab -l)
0 2 0 /bin/bash /opt/config_backup.sh
EOF
```
以上配置表示每周日凌晨2点自动备份,自动清理过期备份,不需要手动维护。
四、每周自动更新安全补丁

及时安装安全补丁可以避免大部分已知漏洞入侵,配置步骤如下:
实操步骤
CentOS系统执行以下命令添加定时任务:
```
crontab -e << EOF
$(crontab -l)
0 3 0 yum update -y --security && reboot
EOF
```
Ubuntu系统执行以下命令添加定时任务:
```
crontab -e << EOF
$(crontab -l)
0 3 0 apt update && apt upgrade -y --only-upgrade && reboot
EOF
```
如果你的服务器不允许自动重启,删除命令末尾的&& reboot即可,后续手动安排重启时间。
五、每日异常登录检查告警
及时发现暴力破解攻击,避免服务器被入侵控制,配置步骤如下:
实操步骤
```
cat > /opt/login_check.sh << 'EOF'
!/bin/bash
ALERT_EMAIL="your@example.com"
统计最近一天登录失败总次数,超过10次触发告警
FAIL_COUNT=$(lastb | grep -v "reboot" | grep -v "^$" | awk '{print $3}' | grep -v 0.0.0.0 | awk '{sum+=$1}END{print sum}')
if [ $FAIL_COUNT -gt 10 ];then
echo "最近一天服务器共出现${FAIL_COUNT}次失败登录,疑似暴力破解攻击" | mail -s "【服务器告警】登录异常" $ALERT_EMAIL
fi
EOF
```
```
chmod +x /opt/login_check.sh
crontab -e << EOF
$(crontab -l)
0 10 /bin/bash /opt/login_check.sh
EOF
```
配置完成后每日10点自动检查,触发告警会及时通知你处理可疑IP。
配置验证
所有配置完成后,执行以下命令即可验证所有定时任务是否生效:
```
crontab -l
```
如果能看到你刚才添加的所有任务,说明配置成功,后续所有日常运维工作都会自动执行,你只需要关注告警邮件即可。