IcingTomato's Archive

26 object(s)
 

【服务器维护】时隔425天的一次维护记录 - May 12, 2025

删除阿里云助手Agent

今天正好在玩树莓派的时候,心血来潮登录自己部落格博客的服务器看看。

熟练地 htop 一下,结果……

htop 惊不惊喜?意不意外?

/usr/local/share/assist-daemon/assist_daemon 很扎眼,我就知道是阿里云干的事情。

首先说结论:参阅卸载云助手Agent的文档,跟着删就行。

# 停止云助手守护进程
/usr/local/share/assist-daemon/assist_daemon --stop

# 卸载云助手守护进程
/usr/local/share/assist-daemon/assist_daemon --delete

# 删除云助手守护进程目录
rm -rf /usr/local/share/assist-daemon

# 卸载云助手Agent
sudo dpkg -r aliyun-assist # Debian/Ubuntu
sudo rpm -qa | grep aliyun_assist | xargs sudo rpm -e # CentOS/RHEL

# 删除云助手Agent目录
rm -rf /usr/local/share/aliyun-assist

阻止脚本小子偷偷撞我SSH密码

跟前年hvv一样,阿里不知道从哪里找来一些野鸡选手,当时我的博客用的是硬屎极简风,用Jekyll生成的类似Apache/Nginx默认页面,具体看。发短信告诉我80端口开了,都看到里面的文件了,很危险,需要我注意。

? 我请问呢?

现在看来,他们很喜欢扫 ssh 端口。抓不到漏洞急了吧?随便写一下就能输出报告?我那个时候高位端口都是开着的咋不扫一下?看ssh日志时候才发现有个IP是镇江的江苏科技大学的一直在扫我服务器,光扫5000以下的,有点难绷了兄弟。

使用 cat /var/log/auth.log |grep Failed 这个命令(文件可能是auth.log或者是auth.log.数字,可以进目录看看)看了一下登录失败的记录。

ssh ssh登录失败的记录

蔚为壮观……

可以看看这个Treemap,可以清晰看到IP地址和源地址以及攻击手段。

自己搓了个脚本,提取 /var/log/auth.log 登录失败的IP地址,添加到 /etc/hosts.deny 里面。

#!/bin/bash

# 脚本功能:从/var/log/auth.log和/var/log/auth.log.N提取SSH失败登录的IP地址并添加到/etc/hosts.deny

# 检查是否有root权限
if [ "$(id -u)" -ne 0 ]; then
    echo "Need root!"
    exit 1
fi

# 查找所有匹配的日志文件
log_files=(/var/log/auth.log /var/log/auth.log.*)

# 检查是否找到至少一个有效的日志文件
valid_files=0
for log_file in "${log_files[@]}"; do
    if [ -f "$log_file" ]; then
        valid_files=$((valid_files+1))
    fi
done

if [ $valid_files -eq 0 ]; then
    echo "Cannot find any auth.log files"
    exit 1
fi

# 计数器
added=0
skipped=0

# 处理每个找到的日志文件
for log_file in "${log_files[@]}"; do
    # 跳过不存在的文件
    if [ ! -f "$log_file" ]; then
        continue
    fi

    echo "Processing $log_file..."
    
    # 查找包含"port"但不包含正常连接行为的记录,提取IP地址
    grep "port" "$log_file" | grep -v -E "(Accepted password|Received disconnect|Disconnected from user)" | while read -r line; do
        # 使用正则表达式提取from/by与port之间的IP地址
        if [[ $line =~ (from|by)[[:space:]]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)[[:space:]]+port ]]; then
            ip="${BASH_REMATCH[2]}"
            
            # 检查是否已经在hosts.deny文件中
            if grep -q "sshd: $ip" /etc/hosts.deny; then
                echo "Pass $ip (exist)"
                ((skipped++))
            else
                # 将IP地址追加到hosts.deny
                echo "sshd: $ip" >> /etc/hosts.deny
                echo "Block $ip"
                ((added++))
            fi
        fi
    done
done

echo "Done! Add: $added, Exist: $skipped"

再加上定时任务,每分钟执行一次

* * * * * /root/anti_attack.sh

block_ip 尝试运行,不错,确实在自动运行

自己尝试拿手机热点登录一下,获取一个IP地址,看看能不能被封。

block_ip 可以清晰看到第一次登录成功,加了deny之后封IP成功,ssh登录失败了

定时清扫一下 buff/cache

有时候服务器运行久了,内存会被占满,导致服务器变得很卡。可以使用 free -h 命令查看一下内存的使用情况。

可以看到 buff/cache 占用的内存很大。一般可以用以下命令清理一下:

# Writing to this will cause the kernel to drop clean caches, as well as
# reclaimable slab objects like dentries and inodes.  Once dropped, their
# memory becomes free.

# To free pagecache:
        echo 1 > /proc/sys/vm/drop_caches
# To free reclaimable slab objects (includes dentries and inodes):
        echo 2 > /proc/sys/vm/drop_caches
# To free slab objects and pagecache:
        echo 3 > /proc/sys/vm/drop_caches

来源:Documentation for /proc/sys/vm/*

但是有时候运行的时候会报错 Permission denied,可以用如下命令:

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
# Or
echo 3 | sudo tee /proc/sys/vm/drop_caches

再使用 free -h 命令查看一下内存的使用情况,buff/cache已经清理掉了。

其实可以在 /etc/cron.daily 目录下,创建一个脚本 /etc/cron.daily/clear_cache.sh,内容如下:

#!/bin/sh
sync
echo 3 > /proc/sys/vm/drop_caches

然后给这个脚本加上可执行权限: chmod +x /etc/cron.daily/clear_cache.sh

这样就可以每天定时清理缓存了。不过这个脚本会清理掉所有的缓存,包括文件系统缓存和页面缓存,所以在使用时要谨慎。

转移到 Cloudflare

2020年7月27日 19:20:00

我在阿里云上创建了这台1C512M的小水管。

ECS 阿里云ECS ECS 创建时间

于2025年5月16日 12:00:00,转移到 Cloudflare。

别了,阿里云尼亚。