【Linux】(12)计划任务:来看看如何防止黑客利用计划任务窃取信息以及背后的原理
目錄
一、計(jì)劃任務(wù)
1.1 【導(dǎo)入】游戲服務(wù)器資源分析
????????1.2 為什么需要計(jì)劃任務(wù)
????????1.3 Linux里的計(jì)劃任務(wù)
????????1.4 創(chuàng)建計(jì)劃任務(wù)
????????1.4.1 cron命令格式
?????????1.4.2 時(shí)間數(shù)值的表示方法
????????1.4.3 實(shí)例+具體操作
????????1.4.4 普通用戶創(chuàng)建計(jì)劃任務(wù)
????????1.4.5 練習(xí)
????????1.5 同一時(shí)間可以做多個(gè)計(jì)劃任務(wù)嗎
????????1.6 如何判斷計(jì)劃任務(wù)是否執(zhí)行
? ? ? ? 1.6.1 直接看效果
????????1.6.2 看日志文件
????????1.7 前臺、后臺
????????1.8 【黑客可能利用】計(jì)劃任務(wù)的順風(fēng)車
????????1.8.1 操作系統(tǒng)的后臺工作開展需要的計(jì)劃任務(wù)存放在哪里
????????1.9 anacron服務(wù)
二、思考
????????2.1 每個(gè)用戶都有自己的計(jì)劃任務(wù)
????????2.2 這個(gè)用戶沒有登錄是否計(jì)劃任務(wù)也會執(zhí)行?
????????2.3 root用戶是否可以去管理其他用戶的執(zhí)行計(jì)劃
????????2.4 🖤黑客是否會利用計(jì)劃任務(wù),如何排查?
?????????2.5 計(jì)劃任務(wù)里腳本盡量使用絕對路徑
三、練習(xí)(最后來鞏固以下所學(xué)吧)
????????3.1 練習(xí)1
?????????3.2 練習(xí)2
????????3.3 思考題
四、【補(bǔ)充】隨機(jī)數(shù)
一、計(jì)劃任務(wù)
按照計(jì)劃準(zhǔn)時(shí)準(zhǔn)點(diǎn)去執(zhí)行任務(wù)
任何腳本都可以配合計(jì)劃任務(wù)來執(zhí)行,做到定時(shí)完成某些事情
1.1 【導(dǎo)入】游戲服務(wù)器資源分析
????????1.2 為什么需要計(jì)劃任務(wù)
可以自動執(zhí)行,不需要人干預(yù),解放了人力,提高工作效率
????????1.3 Linux里的計(jì)劃任務(wù)
????????crond進(jìn)程:負(fù)責(zé)Linux里執(zhí)行計(jì)劃任務(wù)的程序,在內(nèi)存里一直運(yùn)行的程序(守護(hù)進(jìn)程)。不要關(guān)閉
????????每隔一分鐘去檢查Linux系統(tǒng)里的計(jì)劃任務(wù),最短時(shí)間間隔:一分鐘
使用crontab命令調(diào)用crond進(jìn)程,設(shè)置按固定周期(如每天、每周等)重復(fù)執(zhí)行預(yù)先計(jì)劃好的任務(wù)。
#查看crond進(jìn)程是否存在 [root@localhost ~]# ps aux|grep crond root 698 0.0 0.1 126384 1672 ? Ss 15:46 0:00 /usr/sbin/crond -n root 1857 0.0 0.0 112824 988 pts/0 R+ 16:58 0:00 grep --color=auto crond #重啟 [root@localhost ~]# service crond restart Redirecting to /bin/systemctl restart crond.service #停止 [root@localhost ~]# service crond stop #在centos7中真正執(zhí)行的命令 Redirecting to /bin/systemctl stop crond.service #啟動 [root@localhost ~]# service crond start Redirecting to /bin/systemctl start crond.service【注】systemctl stop crond和service crond stop時(shí)等價(jià)的
????????1.4 創(chuàng)建計(jì)劃任務(wù)
(Linux系統(tǒng)里可以定制很多計(jì)劃任務(wù),一行一個(gè)計(jì)劃任務(wù))
crontab是創(chuàng)建計(jì)劃任務(wù)的命令
crontab -e 編輯計(jì)劃任務(wù)
crontab -l 查看計(jì)劃任務(wù)
????????1.4.1 cron命令格式
【格式如下:15行】
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root# For details see man 4 crontabs# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed[root@localhost ~]#????????*? ??表示任意時(shí)間
?????????1.4.2 時(shí)間數(shù)值的表示方法
????????【翻譯時(shí)間從右到左】
===示例
0 17 * * 1-5 ==》周一到周五每天17:00
30 8 * * 1,3,5 ==》周一、三、五的8:30
0 8-18 * * * ==》每天8點(diǎn)到18點(diǎn)整
0 12 */3 * * ==》每隔3天的12點(diǎn)整
===
????????1.4.3 實(shí)例+具體操作
【題目】
每天23:00備份一次,使用計(jì)劃任務(wù)執(zhí)行
備份腳本:/root/lianxi/backup_log.sh
【步驟】
[root@localhost lianxi]# crontab -e
第一步:按i進(jìn)入計(jì)劃任務(wù)的編輯模式,輸入以下內(nèi)容
0 23 * * * /root/lianxi/backup_log.sh
第二步:按Esc,輸入:wq 退出并且保存
[root@localhost lianxi]# crontab -l 查看計(jì)劃任務(wù)
0 23 * * * bash /root/lianxi/backup_log.sh
????????1.4.4 普通用戶創(chuàng)建計(jì)劃任務(wù)
1. lihua用戶自己創(chuàng)建計(jì)劃任務(wù)
[root@localhost cron]# su - lihua 上一次登錄:三 3月 16 21:55:16 CST 2022pts/0 上 [lihua@localhost ~]$ crontab -e2. root用戶幫助lihua用戶創(chuàng)建計(jì)劃任務(wù)
[root@localhost cron]# crontab -e -u lihua????????1.4.5 練習(xí)
????????需求分析
????????【答案】
時(shí)間格式==》*/1 * * * * bash /root/lianxi/sanchuang/create_dir.sh 或 * * * * * bash /root/lianxi/sanchuang/create_dir.sh
[root@localhost sanchuang]# vim create_dir.sh [root@localhost sanchuang]# cat create_dir.sh #!/bin/bash#獲得當(dāng)前時(shí)間 ctime=$(date +%Y%m%d%H%M%S)#新建文件夾 mkdir -p /root/lianxi/sanchuang/lihua_$ctime[root@localhost sanchuang]# crontab -e no crontab for root - using an empty one crontab: installing new crontab [root@localhost sanchuang]# crontab -l */1 * * * * bash /root/lianxi/sanchuang/create_dir.sh????????1.5 同一時(shí)間可以做多個(gè)計(jì)劃任務(wù)嗎
答:可以,方法一:一行一個(gè)計(jì)劃任務(wù),時(shí)間點(diǎn)相同。方法二:都寫到一個(gè)腳本中,直接做一個(gè)計(jì)劃任務(wù)。
????????建議:最好不要同時(shí)做很多事情,會在一個(gè)時(shí)間點(diǎn)消耗服務(wù)器的cpu、內(nèi)存、磁盤、帶寬等資源。會給服務(wù)器造成很大壓力。
????????1.6 如何判斷計(jì)劃任務(wù)是否執(zhí)行
【注:希望某個(gè)計(jì)劃任務(wù)不執(zhí)行時(shí),可以加#注釋掉】
[root@localhost sanchuang]# ls create_dir.sh lihua_20220316200601 lihua_20220316200901 lihua_20220316200401 lihua_20220316200702 lihua_20220316201001 lihua_20220316200501 lihua_20220316200801 lihua_20220316201101 [root@localhost sanchuang]# crontab -e crontab: installing new crontab [root@localhost sanchuang]# rm -rf lihua* [root@localhost sanchuang]# ls create_dir.sh [root@localhost sanchuang]# date 2022年 03月 16日 星期三 20:12:40 CST[root@localhost sanchuang]# date 2022年 03月 16日 星期三 20:14:27 CST [root@localhost sanchuang]# ls create_dir.sh [root@localhost sanchuang]# crontab -l #*/1 * * * * bash /root/lianxi/sanchuang/create_dir.sh? ? ? ? 1.6.1 直接看效果
????????1.6.2 看日志文件
日志:程序會記錄發(fā)生的事情到文件里
crontab的日志:記錄哪些計(jì)劃任務(wù)的生成、執(zhí)行、修改等操作 ==》/var/log/cron
CROND[22491] CROND時(shí)進(jìn)程 [22491]時(shí)crond的進(jìn)程好 pid號
CMD表示執(zhí)行命令command
192表示用戶,前面表示時(shí)間
[root@localhost log]# tail -f cronMar 16 20:18:01 192 crontab[2357]: (root) LIST (root) 查看 Mar 16 20:18:13 192 crontab[2358]: (root) BEGIN EDIT (root) 編輯 Mar 16 20:18:21 192 crontab[2358]: (root) REPLACE (root) 修改 Mar 16 20:18:21 192 crontab[2358]: (root) END EDIT (root) 結(jié)束編輯 Mar 16 20:19:01 192 crond[702]: (root) RELOAD (/var/spool/cron/root) 加載計(jì)劃任務(wù)開始執(zhí)行 Mar 16 20:19:01 192 CROND[2363]: (root) CMD (bash /root/lianxi/sanchuang/create_dir.sh) 腳本的執(zhí)行輸出效果????????1.7 前臺、后臺
計(jì)劃任務(wù)是在后臺執(zhí)行的,人看不到
前臺:我們看得到的界面
后臺:Linux系統(tǒng)的背后執(zhí)行,我們看不到,但是有進(jìn)程可以看到,只是無法看到界面
在Linux中命令后面接一個(gè)&符號,就是將這條命令放到后臺執(zhí)行
jobs:查看后臺運(yùn)行的有哪些程序
fg 1:將后臺編號為1的程序調(diào)到前臺執(zhí)行
[root@localhost lianxi]# vim create_dir_v2.sh & [1] 12406 [root@localhost lianxi]# jobs [1]+ 已停止 vim create_dir_v2.sh [root@localhost lianxi]# fg 1 vim create_dir_v2.sh????????1.8 【黑客可能利用】計(jì)劃任務(wù)的順風(fēng)車
Linux系統(tǒng)本身也有一些任務(wù)需要定時(shí)完成。例如:日志文件的輪轉(zhuǎn)(每隔一段時(shí)間產(chǎn)生一個(gè)新的日志文件)。updatedb:(locate)每天自動更新一次
????????1.8.1 操作系統(tǒng)的后臺工作開展需要的計(jì)劃任務(wù)存放在哪里
????????/var/spool/cron 是存放用戶的計(jì)劃任務(wù),Linux系統(tǒng)的后臺工作開展需要的計(jì)劃任務(wù)存放在哪里?
/etc下這些文件夾可以存放Linux系統(tǒng)的計(jì)劃任務(wù)
cron.daily/ ==》存放每天需要執(zhí)行的任務(wù)。若是安裝了mlocate,該目錄下會再加一個(gè)mlocate
cron.hourly/ ==》存放每小時(shí)需要執(zhí)行的任務(wù)
cron.weekly/ ==》存放每周需要執(zhí)行的任務(wù)
cron.monthly/ ==》存放每月需要執(zhí)行的任務(wù)
cron.deny ==》存放拒絕執(zhí)行的用戶的計(jì)劃任務(wù)的用戶名
[root@localhost lianxi]# cd /etc/cron. cron.d/ cron.deny cron.monthly/ cron.daily/ cron.hourly/ cron.weekly/ [root@localhost lianxi]# cd /etc/cron.daily/ [root@localhost cron.daily]# ls logrotate man-db.cron [root@localhost cron.daily]#????????1.9 anacron服務(wù)
二、思考
【注】本點(diǎn)下計(jì)劃任務(wù)示例中使用的為命令,但后續(xù)檢驗(yàn)發(fā)現(xiàn),會出現(xiàn)問題,需要自行換為執(zhí)行腳本
【補(bǔ)充】$USER 用戶名
[root@localhost cron]# echo $USER root????????2.1 每個(gè)用戶都有自己的計(jì)劃任務(wù)
[root@localhost lianxi]# useradd lihua [root@localhost lianxi]# su - lihua [lihua@localhost ~]$ crontab -e no crontab for lihua - using an empty one crontab: installing new crontab [lihua@localhost ~]$ crontab -l */1 * * * * /usr/bin/mkdir -p /home/lihua/$(date +%F_%H%M%S).lihua [root@localhost lianxi]# useradd xiaohong [root@localhost lianxi]# su - xiaohong [xiaohong@localhost ~]$ crontab -e no crontab for xiaohong - using an empty one crontab: installing new crontab [xiaohong@localhost ~]$ crontab -l */1 * * * * /usr/bin/mkdir -p /home/xiaohong/$(date +%F_%H%M%S).xiaohong????????2.2 這個(gè)用戶沒有登錄是否計(jì)劃任務(wù)也會執(zhí)行?
答:會執(zhí)行
計(jì)劃任務(wù)的存放位置:
????????每個(gè)用戶對應(yīng)一個(gè)計(jì)劃任務(wù)的文件
????????Linux中一切皆文件
crond這個(gè)進(jìn)程每隔一分鐘就到/var/spool/cron文件夾下加載所有的文件,執(zhí)行里面的計(jì)劃任務(wù)
[root@localhost log]# cd /var/spool/cron 存放任務(wù)的文件夾,和用戶名對應(yīng) [root@localhost cron]# ls lihua root xiaohong [root@localhost cron]# cat lihua */1 * * * * /usr/bin/mkdir -p /home/lihua/$(date +%F_%H%M%S).lihua [root@localhost cron]# cat xiaohong */1 * * * * /usr/bin/mkdir -p /home/xiaohong/$(date +%F_%H%M%S).xiaohong????????2.3 root用戶是否可以去管理其他用戶的執(zhí)行計(jì)劃
默認(rèn)情況下,只有root用戶可以查看其他用戶的計(jì)劃任務(wù),其他用戶只能看自己的計(jì)劃任務(wù)
????????2.4 🖤黑客是否會利用計(jì)劃任務(wù),如何排查?
1. 到/var/spool/cron目錄下查看是否右可疑的計(jì)劃任務(wù)文件;
2. 還要查看root用戶本身的計(jì)劃任務(wù),是否有可疑的腳本執(zhí)行
3. 還要注意查看系統(tǒng)的計(jì)劃任務(wù),防止黑客坐計(jì)劃任務(wù)順風(fēng)車
?????????2.5 計(jì)劃任務(wù)里腳本盡量使用絕對路徑
PATH變量的問題,建議使用命令的絕對路徑,防止找不到
【兩個(gè)PATH變量的值不一樣,計(jì)劃任務(wù)里的要少一些】
[root@localhost cron]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost cron]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin三、練習(xí)(最后來鞏固以下所學(xué)吧)
????????3.1 練習(xí)1
[root@localhost ~]# crontab -e crontab: installing new crontab [root@localhost ~]# crontab -l50 7 * * * bash /root/lianxi/mkdir_file.sh 50 22 * * * bash /root/lianxi/create_file.sh 0 12 */5 * * rm -rf /backup_tmp/* 30 7 * * 6 service sshd restart 30 17 * * 1,3,5 bash /root/lianxi/abc.sh 0 23 * * * bash /lianxi/backup_pwd_boot_log.sh?【注意:變量用花括號括起來,防止造成歧義】
?????????3.2 練習(xí)2
[root@localhost ~]# useradd liangluyao [root@localhost ~]# crontab -u liangluyao -e no crontab for liangluyao - using an empty one crontab: installing new crontab [root@localhost ~]# crontab -u liangluyao -l 55 23 * * 7 bash /root/lianxi/backup_pwd.sh #檢查是否成功為用戶liangluyao創(chuàng)建計(jì)劃任務(wù) [root@localhost ~]# cd /var/spool/cron [root@localhost cron]# ls liangluyao lihua root xiaohong [root@localhost cron]# cat liangluyao 55 23 * * 7 bash /root/lianxi/backup_pwd.sh [root@localhost lianxi]# vim backup_pwd.sh [root@localhost lianxi]# cat backup_pwd.sh #!/bin/bash#使用cp命令的絕對路徑,避免覆蓋之前的內(nèi)容時(shí)需要確認(rèn) /usr/bin/cp /etc/passwd ~liangluyao/$(date +%F)_pwd.txt [root@localhost lianxi]# /usr/bin/cp /etc/passwd ~liangluyao/$(date +%F)_pwd.txt [root@localhost lianxi]# ls ~liangluyao 2022-03-17_pwd.txt?【后三行】目的:檢驗(yàn)改腳本命令是否有錯(cuò)
????????3.3 思考題
?【查看】
[root@localhost ~]# cd /var/spool/cron [root@localhost cron]# ls liangluyao lihua root xiaohong四、【補(bǔ)充】隨機(jī)數(shù)
(()) 雙圓括號是shell里的數(shù)學(xué)運(yùn)算使用,雙圓括號里可以不接$符號引用變量
% 取余
[root@localhost lianxi]# ((8%5)) [root@localhost lianxi]# echo $((8%5)) 3 #得到隨機(jī)數(shù) [root@localhost lianxi]# echo $RANDOM 3945 [root@localhost lianxi]# echo $RANDOM 19030 #得到10以內(nèi)的隨機(jī)數(shù) [root@localhost lianxi]# echo $((RANDOM%10)) 6 #得到3以內(nèi)的隨機(jī)數(shù) [root@localhost lianxi]# echo $((RANDOM%3)) 1 [root@localhost lianxi]# echo $((RANDOM%3)) 1 [root@localhost lianxi]# mkdir lihua$RANDOM [root@localhost lianxi]# ls lihua20922總結(jié)
以上是生活随笔為你收集整理的【Linux】(12)计划任务:来看看如何防止黑客利用计划任务窃取信息以及背后的原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络安全之暴露面、攻击面、脆弱性
- 下一篇: 浪潮之巅--微软