我正在读邪恶侏儒以及它如何劫持系统。我读到的一件有趣的事情是它如何使用 crontab
Linux 植入程序还使用 crontab(类似于 Windows 任务计划程序)在目标系统上获得持久性,并将被盗的用户数据发送到远程攻击者控制的服务器。
在我的 ubuntu 桌面中,我自己没有任何自定义的 cron 作业,但是当我这样做时,service cron status
它会返回一些结果。
systemd[1]: Started Regular background program processing daemon.
cron[916]: (CRON) INFO (pidfile fd = 3)
cron[916]: (CRON) INFO (Running @reboot jobs)
CRON[19931]: pam_unix(cron:session): session opened for user root by (uid=0)
CRON[19932]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
CRON[19931]: pam_unix(cron:session): session closed for user root
我的问题是,我可以禁用 cron 作业之类的东西sudo systemctl disable cron.service
吗? cron 是 ubuntu 桌面的必需服务吗?或者我可以将其从系统中完全删除吗?
答案1
是的。但是我们的系统上有几个活动任务,这些任务也会停止。
cron 是否是 ubuntu 桌面的必要服务,或者我可以将其从系统中完全删除吗?
我认为这是必要的,但与 Linux 一样...您可以自行决定 :) 我可以建议另一种方法:为什么不标记 /etc/cron*/、/etc/crontab 和 /var/spool/cron/crontabs/ 的更改/? 这可能会少很多麻烦,因为您可以保持正常的 cron 作业处于活动状态。只需创建一个监视程序并将其放在这些目录上即可。
我的系统中 cron 的运行情况(您的系统可能有更多、相同或更少的操作)...
$ ls /etc/cron.daily/
0anacron cracklib-runtime man-db samba
apport dpkg mlocate update-notifier-common
apt-compat google-chrome passwd
bsdmainutils logrotate popularity-contest
$ ls /etc/cron.weekly/
0anacron man-db update-notifier-common
$ ls /etc/cron.monthly/
0anacron
所以一般来说,我会调查其中任何一个(比如,popularity-contest 很好,但我没有它也可以)。mlocate 可能是一个问题:它会更新locate 命令,因此可能会有用。等等。您可以手动运行其中每一个。
每个文件都会有一个解释:
rinzwind@schijfwereld:~$ more /etc/cron.monthly/0anacron
#!/bin/sh
#
# anacron's cron script
#
# This script updates anacron time stamps. It is called through run-parts
# either by anacron itself or by cron.
#
# The script is called "0anacron" to assure that it will be executed
# _before_ all other scripts.
test -x /usr/sbin/anacron || exit 0
anacron -u cron.monthly
anacron 有自己的服务:
$ systemctl list-unit-files | grep cron
anacron.service enabled
cron.service enabled
anacron.timer enabled
现在执行命令(停止和启动):
sudo systemctl stop crond.service
sudo systemctl start crond.service
sudo systemctl stop anacron.service
sudo systemctl start anacron.service
sudo systemctl stop anacron.timer
sudo systemctl start anacron.timer
(我没有对它们每一个进行测试;))
另外还有更多:用户 cron 也处于活动状态;你可以禁用它们...
sudo touch /var/spool/cron/crontabs/$USER
sudo chmod 0 /var/spool/cron/crontabs/$USER
对于系统上的每个用户(请复制文件,以便您可以恢复它们)(奇怪的是,我没有找到用户 crons 的 systemd 服务,我怀疑它是从 cron.service 处理的)。
答案2
笔记:这是针对每年运营预算达数百万美元的公司。设置需要一周时间,升级后需要一两个小时进行审核,甚至需要更多时间来整合升级后的新脚本。
在评论中提到它logrotate
每天都会被调用。这是 Ubuntu 的一个重要部分,用于将日志文件保持在较小的大小。如果您非常担心从cron
mservice 中拉取它,则必须创建自己的脚本来模仿cron
。我将此脚本称为crony
。您可以将其锁定在黑客不会想到的地方。
让我们看一下/etc/cron.daily
:
-rwxr-xr-x 1 root root 311 Feb 19 2014 0anacron*
-rwxr-xr-x 1 root root 376 Apr 4 2014 apport*
-rwxr-xr-x 1 root root 1474 Oct 31 2016 apt-compat*
-rwxr-xr-x 1 root root 314 Nov 26 2015 aptitude*
-rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils*
-rwxr-xr-x 1 root root 384 Mar 23 2014 cracklib-runtime*
-rwxr-xr-x 1 root root 1597 Nov 26 2015 dpkg*
lrwxrwxrwx 1 root root 37 Jun 4 01:43 google-chrome -> /opt/google/chrome/cron/google-chrome*
-rwxr-xr-x 1 root root 7613 Jan 17 2017 google-earth*
-rwxr-xr-x 1 root root 13944 Mar 4 17:48 google-earth-pro*
-rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate*
-rwxr-xr-x 1 root root 1293 Nov 6 2015 man-db*
-rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate*
-rwxr-xr-x 1 root root 249 Feb 16 2014 passwd*
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rwxr-xr-x 1 root root 3449 Feb 26 2016 popularity-contest*
-rwxr-xr-x 1 root root 383 Mar 7 2016 samba*
-rwxr-xr-x 1 root root 214 Apr 9 2014 update-notifier-common*
-rwxr-xr-x 1 root root 1046 May 19 2016 upstart*
我甚至不每天都使用这个脚本mlocate
。我每 15 分钟运行一次,因为每天运行对我来说不够。这个脚本popularity-contest
是有点像间谍软件crony
所以如果我要替换的话我不会用它来称呼它cron
。
我会调用我所有的crony
脚本/etc/rc.local
,但还有其他方法可以做到。
格式如下:
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Jan 05 2018 - Reload Logitech Unifying Receiver to get Mouse in Power Stats
modprobe -r hid_logitech_dj
modprobe hid_logitech_dj
# Call crony to mimick cron's duties
# daemonize job boot delay sleep interval
crony /etc/cron.daily/mlocate 1m 15m &
crony /etc/cron.daily/logrotate 30m d &
crony /mnt/e/usr/local/bin/daily-backup 5m d &
corny /usr/local/bin/eyesome-sun.sh 1m d &
exit 0
这是典型安装中已设置的条目/etc/rc.local
以及crony
其后的新条目。我的最后两个crony
条目是我的机器中的自定义脚本/etc/cron.daily
#!/bin/bash
# NAME: crony
# PATH: /usr/local/bin
# DATE: July 17, 2019
# NOTE: For Ask Ubuntu: https://askubuntu.com/questions/1159014/can-we-disable-cron-services-in-desktop
logger "$0"
sleep "$2"
while true; do
"$1"
# If if parameter 2 is "d" for 1 day interval we can't sleep for a day
# because laptop may have been suspended. Use 10 minutes to minimize resources
sleep 10m
# Check if time to process job again. If not continue
continue
done
crony
脚本需要做更多工作,但您已经了解了总体思路。对于 WSL(适用于 Linux 的 Windows 子系统),这可能是也可能不是一个好项目,在这种情况下,我可能会完成它。