Linux計劃任務與日誌的管理
linux終究按任務與日誌管理
– Linux中的計劃任務
– at計劃任務的使用
– cron計劃任務的使用
Linux服務器的日誌管理
– 日誌的種類和記錄的方式
– 實戰—自定義ssh服務的日誌存儲
– 實戰—日誌的回滾
– 實戰—搭建rsyslog遠程日誌服務器
大家平常都會有一些比如說:你每天固定幾點起牀?每天按時上班打卡、每月5號準時開工資、每年2月14你倆口子某某紀念日等這些諸如此類,這些都是定時發生的。或者說是通俗點說:例行公事;還比如說我們還會遇到一些突發事件,臨時幾點過來加個班?剛好晚上幾點聚個餐?
像上面這些情況,如果事少的話你大腦可以記住,如果事很多,像老闆經理董事長每天的工作安排,通常都是記在一些本上,或者鬧鈴提醒等。
那麼,咱們的LINUX系統和上面的情況也很類似,我們也可以通過一些設置。來讓電腦定時提醒我們該做什麼事了。或者我們提前設置好,告訴電腦你幾點做什麼幾點做什麼,這種我們就叫它定時任務。而遇到一些需要執行的事情或任務。我們也可以通過命令來告訴電腦一會臨時把這個工作給做一下
總結:在我們LINUX中,我們就是通過crontab和at這兩個東西來實現這些功能的
計劃任務的作用:是做一些週期性的任務,在生產中的主要用來定期備份數據
我們從上面的舉例中可以看到,我們一般的工作安排方式分兩種:
一種是定時性的,也就是例行。就是每隔一定的週期就要重複來做這個事情
一種是突發性的,就是這次做完了這個事,就沒有下一次了,臨時決定,只執行一次的任務
我們回到LINUX中來看at crontab這兩個命令:
at:它是一個可以處理僅執行一次就結束的指令
crontab:它是會把你指定的工作或任務,比如:腳本等,按照你設定的週期一直循環執行下去
語法格式: at 時間
服務:atd
1. 開啓atd服務
[root@centos-6-1~]# service atd start #啓動atd服務
正在啓動 atd: [確定]
[root@centos-6-1~]# echo $? #是否啓動成功
0
[root@centos-6-1~]#
[root@centos-6-1~]# service atd stop #關閉atd服務
停止 atd: [確定]
[root@centos-6-1~]# at #如果關閉atd服務at命令是無法執行的
Garbledtime
[root@centos-6-1~]#
[root@centos-6-1~]# chkconfig --list |grep atd #查看是否開機自啓動
atd 0:關閉 1:關閉 2:關閉 3:啓用 4:啓用 5:啓用 6:關閉
[root@centos-6-1~]#
[root@centos-6-1~]# chkconfig --level 345 atd on #設置345級別開機自啓動
[root@centos-6-1~]# chkconfig --list |grep atd
atd 0:關閉 1:關閉 2:關閉 3:啓用 4:啓用 5:啓用 6:關閉
[root@centos-6-1~]#
1. 在19:33分時,創建/qwer/目錄
[root@centos-6-1~]# date #查看當前時間
2017年 07月 05日星期三 19:29:33 CST
[root@centos-6-1~]#
[root@centos-6-1~]# at 19:33 ---注意:如果是上午時間,時間後面加上am(上午9:20表示9:20am)
at>mkdir /qwer/ #創建/qwer/目錄
at><EOT> #結束:ctrl+d
job 1 at2017-07-05 19:33
[root@centos-6-1~]#
[root@centos-6-1~]# date #查看當前時間
2017年 07月 05日星期三 19:35:22 CST
[root@centos-6-1~]# ll /
總用量 94
drwxr-xr-x. 2 root root 4096 6月 7 18:54 aaa
dr-xr-xr-x. 2 root root 4096 6月 7 18:02 bin
dr-xr-xr-x. 5 root root 1024 6月 7 18:04 boot
-rw-r--r--. 1 root root 2006 9月 18 2014CentOS6-Base-163.repo
drwxr-xr-x. 18 root root 3580 7月 5 17:03 dev
drwxr-xr-x. 75 root root 4096 7月 5 18:10 etc
drwxr-xr-x. 2 root root 4096 9月 23 2011 home
dr-xr-xr-x. 10 root root 4096 7月 5 18:09 lib
dr-xr-xr-x. 8 root root 12288 7月 5 18:08 lib64
drwx------. 2 root root 16384 6月 7 18:00 lost+found
drwxr-xr-x. 2 root root 4096 9月 23 2011 media
drwxr-xr-x. 2 root root 4096 9月 23 2011 mnt
drwxr-xr-x. 2 root root 4096 9月 23 2011 opt
dr-xr-xr-x.105 root root 0 7月 5 18:24 proc
drwxr-xr-x. 2 root root 4096 7月 5 19:33 qwer #已經創建成功
dr-xr-x---. 2 root root 4096 7月 5 19:34 root
dr-xr-xr-x. 2 root root 4096 7月 5 18:08 sbin
drwxr-xr-x. 7 root root 0 7月 5 18:24 selinux
drwxr-xr-x. 2 root root 4096 9月 23 2011 srv
drwxr-xr-x 13 root root 0 7月 5 18:24 sys
drwxrwxrwt. 3 root root 4096 7月 5 19:34 tmp
drwxr-xr-x. 13 root root 4096 6月 7 18:01 usr
drwxr-xr-x. 18 root root 4096 6月 7 18:03 var
[root@centos-6-1~]#
1. 在19:34時在當前目錄下創建aaa文件
[root@centos-6-1~]# at 19:34
at>
at>
at>
at>touch aaa
at><EOT>
job 2 at2017-07-05 19:34
[root@centos-6-1~]# date
2017年 07月 05日星期三 19:32:58 CST
[root@centos-6-1~]#
[root@centos-6-1~]# ll
總用量 24
-rw-r--r--.1 root root 0 7月 5 19:34 aaa #創建成功
-rw-------.1 root root 955 6月 7 18:05 anaconda-ks.cfg
-rw-r--r--.1 root root 13368 6月 7 18:05 install.log
-rw-r--r--.1 root root 3482 6月 7 18:03 install.log.syslog
[root@centos-6-1~]#
這個查看,只能看到還沒有執行的。如果這個任務已經開始執行或者執行完成了,是看不到
at -l 查看計劃任務
atq 查看計劃任務
1. 在19:44將abclinuxtouch寫入到aaa文件中
[root@centos-6-1~]# at 19:44 #在19:44創建定時任務
at> echo"abclinuxtouch" >> aaa #將abclinuxtouch 寫入到aaa
at><EOT>
job 4 at2017-07-05 19:44
[root@centos-6-1~]# date
2017年 07月 05日星期三 19:43:33 CST
[root@centos-6-1~]# atq #查看計劃任務
4 2017-07-05 19:44 a root
[root@centos-6-1~]# at -l #查看計劃任務
4 2017-07-05 19:44 a root
[root@centos-6-1~]# date
2017年 07月 05日星期三 19:43:51 CST
[root@centos-6-1~]# cat aaa
abclinuxtouch
[root@centos-6-1~]#
任務的格式:
任務編號 | 執行的時間 | 隊列 | 執行者 |
3 | Fri Oct 28 20:55:00 2016 | a | root |
[root@xuegod72 ~]# at 20:00 2016-10-1 在某天
[root@xuegod72 ~]# at now +10min 在 10分鐘後執行
[root@xuegod72 ~]# at 17:00 tomorrow 明天下午5點執行
[root@xuegod72~]# at 6:00 pm +3 days 在3天以後的下午6點執行
對於系統來說 :計劃任務 就是在某個特定的時刻,執行一個腳本文件
創建成功的at計劃任務會在/var/spool/at/目錄下成生一個可執行的腳本文件
[root@centos-6-1~]# at now + 1min #1分鐘後執行
at>mkdir -r /abc/aaa/bbb/ccc #創建遞歸目錄
at><EOT>
job 11 at2017-07-05 21:13
[root@centos-6-1~]# atq #查看所有at計劃任務
11 2017-07-05 21:13 a root
[root@centos-6-1~]# date
2017年 07月 05日星期三 21:12:49 CST
[root@centos-6-1~]# cd /var/spool/at/ #進入at任務的存放位置
[root@centos-6-1at]# ls
a0000b017d4819 spool #a0000b017d4819文件就是剛剛新建的at任務
[root@centos-6-1at]#
1. 查看at計劃任務的所執行的命令
[root@centos-6-1at]# at now + 1min
at>mkdir -r /abc/adsfsadfqwe #創建/abc/adsfsadfqwe目錄
at><EOT>
job 12 at2017-07-05 21:16
You havenew mail in /var/spool/mail/root
[root@centos-6-1at]#
[root@centos-6-1at]# cd /var/spool/at/
[root@centos-6-1at]# ls
a0000c017d481c spool
[root@centos-6-1at]# tail -5 a0000c017d481c #查看計劃任務的執行命令
${SHELL:-/bin/sh}<< 'marcinDELIMITER59f0e5ed'
mkdir -r/abc/adsfsadfqwe #執行的命令
marcinDELIMITER59f0e5ed
[root@centos-6-1at]#
1. 刪除當前at計劃任務編號爲6,9,5的任務
[root@centos-6-1~]# atq #查看所有計劃任務
6 2017-07-06 20:00 a root
9 2017-07-06 21:00 a root
5 2017-07-06 21:00 a root
[root@centos-6-1~]# atr
atrm atrun
[root@centos-6-1~]# atrm 5 #刪除編號爲5的任務
[root@centos-6-1~]# atrm 6 #刪除編號爲6的任務
[root@centos-6-1~]# atrm 9 #刪除編號爲9的任務
[root@centos-6-1~]#
[root@centos-6-1~]# ls
aaa anaconda-ks.cfg install.log install.log.syslog
[root@centos-6-1~]#
[root@centos-6-1~]#
[root@centos-6-1~]# atq
[root@centos-6-1~]#
總結:at計劃任務執行一次,下次就不能再次執行
介紹
crond命令定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作
cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。
linux任務調度的工作主要分爲以下兩類:
系統執行的工作:系統週期性所要執行的工作,如更新whatis數據庫 updatedb數據庫,日誌定期切割,收集系統狀態信息,/tmp定期清理
個人執行的工作:某個用戶定期要做的工作,由每個用戶自行設置
1. 啓動crond服務
[root@centos-6-1~]# service crond start
正在啓動 crond: [確定]
[root@centos-6-1~]# chkconfig --list | grep crond
crond 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
[root@centos-6-1~]#
cron的參數:
crontab -u #指定某個用戶的cron服務
crontab -l #列出從容服務的詳細內容
crontab -r #刪除cron服務
crontab -e #編輯cron服務
例如:
crontab -u root -l #查看root自己的cron計劃任務
crontab -u san -r #root想刪除san的cron計劃任務
一行對應一個任務
分 | 小時 | 日 | 月 | 星期 | 命令 |
0-59 | 0-23 | 1-31 | 1-12 | 0-6 | command |
特殊符號的含義:
* | 代表取值範圍內的數字 | (任意) |
/ | 代表"每" | */10 |
- | 代表從某個數字到某個數字 | 8-17 |
, | 分開幾個離散的數字 | 6,10-13,20 |
我們可用crontab -e命令來編輯計劃任務
編輯的是/var/spool/cron下對應用戶的cron文件
crontab的計劃任務內容保存在目錄/var/spool/cron下面
也可以直接在/etc/crontab中添加計劃任務
cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次/etc/crontab因此我們配置這個文件也能運用cron服務做一些事情。
用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務
1. 創建一個計劃任務每分鐘輸出Linuxtouch到aaa文件裏
[root@centos-6-1~]# crontab -e #創建crond計劃任務
no crontabfor root - using an empty one
crontab:installing new crontab
[root@centos-6-1~]# echo $?
0
[root@centos-6-1~]# crontab -l
*/1 * * * * echo "linuxtouch666" >> aaa
[root@centos-6-1~]#
[root@centos-6-1~]# cat aaa #計劃任務執行成功
linuxtouch666
linuxtouch666
[root@centos-6-1~]#
1. 編輯/etc/crontab 配置文件(說明)
SHELL=/bin/bash #變量的值指定shell環境(此處默認爲 bash shell)
PATH=/sbin:/bin:/usr/sbin:/usr/bin#PATH 變量定義用來執行命令的程序路徑;
– MAILTO=root //如果出現錯誤,或者有數據輸出,數據作爲郵件發給這個賬號
[root@centos-6-1~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# Fordetails see man 4 crontabs
# Exampleof job definition:
#.---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) ORjan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
~
~
"/etc/crontab"16L, 457C
對於系統級別的計劃任務,需要執行的命令和腳本都放在這裏:
/etc/cron.* 按兩次tab
[root@xuegod72~]# ls /etc/cron
[root@centos-6-1~]# ls /etc/cron
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/crontab cron.weekly/
[root@centos-6-1~]# ls /etc/cron
目錄作用解釋:
cron.d/ #是系統自動定期需要做的任務,但是又不是按小時,按天,按星期,按月來執行的,那麼就放在這個目錄下面。
cron.deny #控制用戶是否能做計劃任務的文件;
cron.monthly/ #每月執行的腳本;
cron.weekly/ #每週執行的腳本;
cron.daily/ #每天執行的腳本;
cron.hourly/ #每小時執行的腳本;
crontab #主配置文件也可添加任務;
每天晚上21:30重啓Apache服務
– 30 21 * * * /etc/init.d/httpdrestart
每月1、10、22日的4 : 45重啓apache
– 45 4 1,10,22 * */etc/init.d/httpd restart
每月1到10日的4 : 45重啓apache
– 45 4 1-10 * * /etc/init.d/httpdrestart
每隔兩天的上午8點到11點的第3和第15分鐘執行apache
– 3,15 8-11 */2 * */etc/init.d/httpd restart
晚上11點到早上7點之間,每隔一小時重啓apache
* 11-7/1 * * */etc/init.d/httpd restart
週一到週五每天晚上 21:15 寄一封信給root@linuxtouch:
– 15 21 * * 5 mail -s “hi”root@linuxtouch < /etc/fstab
案例要求:
1. 每天2:00 備份/etc/目錄到/var/back下面
2. 將備份命令寫到一個腳本中
3. 每天的備份文件名要求格式:2017-10-10_etc.tar.gz
4. 在執行計劃任務時,不要在屏幕輸出任何信息
5. 存放備份內容的目錄要求只保留3天的內容
[root@centos-6-1~]# crontab -l #列出所有計劃任務
*/1 * * * * echo "linuxtouch666" >> aaa
*/1 * * * * /etc/init.d/httpd restart
2 * * * * sh backup.sh > /dev/null #這個是剛剛寫入的
[root@centos-6-1~]#
[root@centos-6-1~]# cat backup.sh #腳本內容
#!/bin/bash
tar czf/var/back/`date +%F`_etc.tar.gz /etc
#find/var/back -mtime +3 -exec rm -rf {} \;
#find/var/back -mtime +3 -delete
find/var/back -mtime +3 | xargs rm -rf
[root@centos-6-1~]#
目錄/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly 這些目錄下面的定時任務由進程anacron執行。這個進程會去檢查在宕機時沒有執行的定時任務。然後去執行一下
系統日誌文件概述:
/var/log目錄保管由rsyslog維護的,裏面存放的一些特定於系統和服務的日誌文件
[root@centos-6-1~]# service rsyslog restart #重啓rsyslog服務
關閉系統日誌記錄器: [確定]
啓動系統日誌記錄器: [確定]
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]#
日誌文件 | 用途 |
/var/log/message | 大多數系統日誌消息記錄在此處。有也例外的:如與身份驗證,電子郵件處理相關的定期作業任務等 |
/var/log/secure | 安全和身份驗證相關的消息和錯誤的日誌文件 |
/var/log/maillog | 與郵件服務器相關的消息日誌文件 |
/var/log/cron | 與定期執行任務相關的日誌文件 |
/var/log/boot.log | 與系統啓動相關的消息記錄 |
/var/log/dmesg | 與系統啓動相關的消息記錄last |
/var/log/httpd/access.log |
例子:查找登錄失敗的機器並且統計登錄失敗的次數
[root@centos-6-1~]#
[root@centos-6-1~]# grep 'Fail' /var/log/secure | awk '{print $11}'|uniq -c|sort -k1 -n
3 192.168.0.23
4 192.168.31.134
[root@centos-6-1~]#
如果不明白uniq和sort的使用方法請看下方
sort 的工作原理
sort將文件的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。
[root@centos-6-1~]# cat sort.txt #普通查看sort.txt文件
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:Systemmessage bus:/:/sbin/nologin
vcsa:x:69:69:virtualconsole memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
mysql:x:27:27:MySQLServer:/var/lib/mysql:/bin/bash
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]# sort sort.txt
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:Systemmessage bus:/:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mysql:x:27:27:MySQLServer:/var/lib/mysql:/bin/bash
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
saslauth:x:499:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
vcsa:x:69:69:virtualconsole memory owner:/dev:/sbin/nologin
[root@centos-6-1~]#
sort的-u選項
註釋:
它的作用很簡單,就是在輸出行中去除重複行。
[root@centos-6-1~]# cat abc
asdf
asdf
adsf
adsf
asdf
adsf
adsf
qwer
qewr
qwer
qewr
qwer
qewr
qwer
qwer
qewr
qwer
ewqr
qewr
qewr
[root@centos-6-1~]# sort -u abc #過濾掉重複的行
adsf
asdf
ewqr
qewr
qwer
[root@centos-6-1~]#
[root@centos-6-1~]# sort -r -n qwer #r表示降序,n表示按數字進行排序
11
666
78
76
66
66
66
23
9
9
09
8
7
6
6
6
6
6
6
5
5
4
3
2
2
1
1
[root@centos-6-1~]#
[root@centos-6-1~]# sort -n -r qwer > qwer #對於sort命令重定向是不可以的
[root@centos-6-1~]# cat qwer
[root@centos-6-1~]#
[root@centos-6-1~]# cat abc
11
10
9
8
7
6
5
4
3
2
1
[root@centos-6-1~]# sort -n abc -o abc #加上-o參數即可
[root@centos-6-1~]# cat abc
1
2
3
4
5
6
7
8
9
10
11
[root@centos-6-1~]#
sort 的-t選項和-k選項
[root@centos-6-1~]# sort -n -k 2 -t : shuiguo
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
[root@centos-6-1~]# cat shuiguo
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[root@centos-6-1~]#
這個文件有三列,列與列之間用冒號隔開了,第一列表示水果類型,第二列表示水果數量,第三列表示水果價格。那麼我想以水果數量來排序,也就是以第二列來排序,如何利用sort實現?幸好,sort提供了-t選項,後面可以設定間隔符。
-r:相當於a以什麼爲分隔符
-k:表示以第幾個:分割的數字進行排序
-n:以數字盡行排序
-r:倒序
其他的sort常用選項
-f:會將小寫字母都轉換爲大寫字母來進行比較,亦即忽略大小寫
-c:會檢查文件是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,最後返回1
-C:會檢查文件是否已排好序,如果亂序,不輸出內容,僅返回1
-M:會以月份來排序,比如JAN小於FEB等等
-b:會忽略每一行前面的所有空白部分,從第一個可見字符開始比較。
uniq的工作原理
文字描述:
uniq 是LINUX命令,uniq 命令刪除文件中的重複行。
用途:
報告或刪除文件中重複的行。
語法:
uniq -c | -d | -u -s Characters +Characters ]
參數:
-c 在輸出行前面加上每行在輸入文件中出現的次數。
-d 僅顯示重複行。
-u 僅顯示不重複的行。
示例:
1. 刪除名爲abc文件中的重複行並將其保留到一個名爲qwer的文件中
[root@centos-6-1~]# cat abc #查看abc文件內容
1
2
3
4
5
6
7
8
9
10
11
666
666
666
666
666
666
[root@centos-6-1~]#
[root@centos-6-1~]# uniq abc qwer #只顯示不重複的行
[root@centos-6-1~]# cat qwer
1
2
3
4
5
6
7
8
9
10
11
666
[root@centos-6-1~]#
1. 顯示文件abc中不重複的行。
[root@centos-6-1~]# uniq -u abc #顯示不重複的行
1
2
3
4
5
6
7
8
9
10
11
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]# cat abc
1
2
3
4
5
6
7
8
9
10
11
666
666
666
666
666
666
[root@centos-6-1~]#
1. 顯示abc文件中的所有內容每行重複的次數
[root@centos-6-1~]# cat abc
qwer
qwer
qwer
1
2
3
4
5
6
7
8
9
10
11
666
666
666
666
666
666
[root@centos-6-1~]# uniq -c abc #查看abc文件內容重複行的次數
3 qwer
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
6 666
[root@centos-6-1~]#
日誌對於安全來說,非常重要,他記錄了系統每天發生的各種各樣的事情,你可以通過他來檢查錯誤發生的原因,或者受到***時***者留下的痕跡。
日誌主要的功能有:審計和監測。他還可以實時的監測系統狀態,監測和追蹤侵入者等等
那麼日誌存放的位置在哪裏呢?
我們的 /var/log 是存放日誌的位置
[root@centos-6-1~]# ls /var/log/ #所有日誌文件
anaconda.ifcfg.log btmp dracut.log messages-20170628 spooler-20170628
anaconda.log btmp-20170705 httpd messages-20170705 spooler-20170705
anaconda.program.log ConsoleKit lastlog mysqld.log tallylog
anaconda.storage.log cron maillog secure wtmp
anaconda.syslog cron-20170613 maillog-20170613 secure-20170613 yum.log
anaconda.xlog cron-20170628 maillog-20170628 secure-20170628
anaconda.yum.log cron-20170705 maillog-20170705 secure-20170705
audit dmesg messages spooler
boot.log dmesg.old messages-20170613 spooler-20170613
[root@centos-6-1~]#
常用的日誌文件如下:
btmp 記錄denglu失敗的信息
lastlog 記錄最近幾次成功登錄的事件和最後一次不成功的登錄
messages 從syslog中記錄信息(有的鏈接到syslog文件)
utmp 記錄當前登錄的每個用戶
wtmp 系統登錄的情況:登入登出
登陸信息的查看
我們也可以通過last 命令à查看登錄日誌內容
哪個用戶在哪個時間通過哪種方式登錄系統的情況
清空日誌文件
[root@centos-6-1~]# last #查看登錄信息
root pts/4 192.168.0.23 Thu Jul 6 13:59 still logged in
root pts/3 192.168.0.23 Thu Jul 6 13:55 still logged in
root pts/2 192.168.0.23 Thu Jul 6 12:47 still logged in
root tty1 Thu Jul 6 12:46 - 12:47 (00:00)
root pts/1 192.168.31.134 Thu Jul 6 12:14 - 14:51 (02:37)
root pts/0 192.168.31.134 Thu Jul 6 12:07 - 14:51 (02:43)
reboot system boot 2.6.32-642.el6.x Thu Jul 6 11:42- 15:52 (04:10)
root pts/1 192.168.0.23 Wed Jul 5 19:31 - down (03:25)
root pts/0 192.168.0.23 Wed Jul 5 17:11 - down (05:45)
root tty1 Wed Jul 5 17:10 - down (05:46)
reboot system boot 2.6.32-642.el6.x Wed Jul 5 17:03- 22:56 (05:53)
root pts/1 192.168.31.134 Wed Jul 5 16:57 - 16:57 (00:00)
root pts/0 192.168.31.134 Wed Jul 5 16:18 - 16:57 (00:39)
root tty1 Wed Jul 5 16:07 - down (00:55)
reboot system boot 2.6.32-642.el6.x Wed Jul 5 15:43- 17:03 (01:20)
root tty1 Thu Jun 29 23:16 -down (00:00)
reboot system boot 2.6.32-642.el6.x Thu Jun 29 15:20 - 23:17 (07:56)
root pts/0 192.168.0.23 Wed Jun 28 21:15 - down (02:44)
root tty1 Wed Jun 28 21:13 -down (02:45)
reboot system boot 2.6.32-642.el6.x Wed Jun 28 19:53 - 23:59 (04:05)
root pts/0 192.168.0.23 Tue Jun 13 17:28 - down (01:13)
root tty1 Tue Jun 13 17:23 -down (01:19)
reboot system boot 2.6.32-642.el6.x Tue Jun 13 17:14 - 18:42 (01:28)
root pts/2 192.168.0.23 Tue Jun 13 16:58 - down (00:05)
root pts/1 192.168.0.23 Tue Jun 13 16:58 - down (00:05)
root pts/0 192.168.0.23 Tue Jun 13 16:58 - down (00:05)
root tty1 Tue Jun 13 16:56 -down (00:07)
reboot system boot 2.6.32-642.el6.x Tue Jun 13 16:55 - 17:04 (00:08)
root tty1 Sat Jun 10 19:35 -crash (2+21:20)
reboot system boot 2.6.32-642.el6.x Sat Jun 10 19:34 - 17:04 (2+21:29)
root tty1 Wed Jun 7 23:18 - down (01:09)
reboot system boot 2.6.32-642.el6.x Wed Jun 7 21:10- 00:28 (03:17)
root pts/0 192.168.31.134 Wed Jun 7 18:51 - down (00:21)
root tty1 Wed Jun 7 18:43 - down (00:28)
root tty1 Wed Jun 7 18:43 - 18:43 (00:00)
reboot system boot 2.6.32-642.el6.x Wed Jun 7 18:41- 19:12 (00:30)
root tty1 Wed Jun 7 18:34 - down (00:01)
reboot system boot 2.6.32-642.el6.x Wed Jun 7 18:32- 18:35 (00:03)
root tty1 Wed Jun 7 18:30 - down (00:00)
reboot system boot 2.6.32-642.el6.x Wed Jun 7 18:29- 18:31 (00:01)
root tty1 Wed Jun 7 18:06 - down (00:13)
reboot system boot 2.6.32-642.el6.x Wed Jun 7 18:06- 18:20 (00:14)
wtmp beginsWed Jun 7 18:06:04 2017
[root@centos-6-1~]# >/var/log/wtmp 清空登錄信息日誌內容
[root@centos-6-1~]# last
wtmp beginsThu Jul 6 15:53:18 2017
[root@centos-6-1~]#
/var/log/lastlog 最後登錄信息
[root@centos-6-1~]# cat /var/log/lastlog
]Ypts/0192.168.0.23 #最後是192.168.0.23主機ssh的這臺主機登入到系統的
[root@centos-6-1~]#
[root@centos-6-1~]#
lastlog記錄所有的用戶什麼時候登錄過系統
[root@centos-6-1~]# lastlog
用戶名 端口 來自 最後登陸時間
root pts/0 192.168.0.23 四 7月 6 15:59:22 +08002017
bin **從未登錄過**
daemon **從未登錄過**
adm **從未登錄過**
lp **從未登錄過**
sync **從未登錄過**
shutdown **從未登錄過**
halt **從未登錄過**
mail **從未登錄過**
uucp **從未登錄過**
operator **從未登錄過**
games **從未登錄過**
gopher **從未登錄過**
ftp **從未登錄過**
nobody **從未登錄過**
dbus **從未登錄過**
vcsa **從未登錄過**
saslauth **從未登錄過**
postfix **從未登錄過**
sshd **從未登錄過**
apache **從未登錄過**
mysql **從未登錄過**
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]#
lastlog 和 last的區別:
last 查看IP
lastlog查看後門的賬號
/var/log/btmp 用戶登錄系統的錯誤信息
[root@centos-6-1~]# lastb
dsafasdfssh:notty 192.168.0.23 Thu Jul 6 16:04 - 16:04 (00:00)
dsafasdfssh:notty 192.168.0.23 Thu Jul 6 16:04 - 16:04 (00:00)
dsafasdfssh:notty 192.168.0.23 Thu Jul 6 16:04 - 16:04 (00:00)
dsafasdfssh:notty 192.168.0.23 Thu Jul 6 16:04 - 16:04 (00:00)
dsafasdfssh:notty 192.168.0.23 Thu Jul 6 16:04 - 16:04 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 15:59 - 15:59 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 15:59 - 15:59 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 15:59 - 15:59 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 15:59 - 15:59 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 12:47 - 12:47 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 12:47 - 12:47 (00:00)
root ssh:notty 192.168.0.23 Thu Jul 6 12:47 - 12:47 (00:00)
root tty1 Thu Jul 6 12:46 - 12:46 (00:00)
root ssh:notty 192.168.31.134 Thu Jul 6 12:07 - 12:07 (00:00)
root ssh:notty 192.168.31.134 Thu Jul 6 12:07 - 12:07 (00:00)
root ssh:notty 192.168.31.134 Thu Jul 6 12:07 - 12:07 (00:00)
root ssh:notty 192.168.31.134 Thu Jul 6 12:07 - 12:07 (00:00)
root tty1 Wed Jul 5 17:10 - 17:10 (00:00)
btmp beginsWed Jul 5 17:10:18 2017
[root@centos-6-1~]#
[root@centos-6-1~]#
[root@centos-6-1~]# du -sh /var/log/btmp
#如果說你發現你的btmp文件變得很大,說明有很大的可能是有人在暴力破解你的主機
8.0K /var/log/btmp
You havenew mail in /var/spool/mail/root
[root@centos-6-1~]#
[root@centos-6-1log]# ll -h /var/log/btmp
-rw-------.1 root utmp 7.5K 7月 6 16:04/var/log/btmp
[root@centos-6-1log]#
日誌的種類:
分類 | 級別 |
Daemon | 後臺進程相關 |
kern | 內核產生的信息 |
lpr | 打印系統產生的 |
authpriv | 安全認證 |
cron | 定時相關 |
郵件相關 | |
syslog | 日誌服務本身的 |
news | 新聞系統 |
local0~7 | 自定義的日誌設備 |
local0 —> local 7 | 8個系統保留的類,供其它的程序使用 /或者是用戶自定義 |
日誌的級別: 輕—>重 7-0
編碼 | 優先級 | 嚴重性 |
7 | debug | 調試級別的信息,日誌信息最多 |
6 | info | 正常的信息,一般信息的,最常用的 |
5 | notice | 注意,正常但重要的事件 |
4 | warning | 警告 |
3 | err | 錯誤,阻止某個模塊或程序的功能不能正常使用 |
2 | crit | 關鍵的錯誤,已經影響了整個系統或軟件不能正常工作的信息 |
1 | alert | 警報,需要立刻修改的信息 |
0 | emerg | 緊急,內核崩潰等嚴重信息 |
舊版本 rhel5
服務名稱 syslog
配置文件 /etc/syslog.conf
rhel6-7
服務名稱 rsyslog
配置文件 /etc/rsyslog.conf
我們來查看一下日誌的配置文件信息:
編輯配置文件 vim /etc/rsyslog.conf
$ModLoadimuxsock # provides support for local system logging (e.g. via logger command)
$ModLoadimklog # provides kernel loggingsupport (previously done by rklogd)
#$ModLoadimmark # provides --MARK-- messagecapability
# ProvidesUDP syslog reception
#$ModLoadimudp
#$UDPServerRun514
# ProvidesTCP syslog reception
#$ModLoadimtcp
#$InputTCPServerRun514
MODULES 日誌的模塊
所有的類別級別是info以上除了mail,authpriv,cron (產生的日誌太多,不易於查看)
$ModLoad imuxsock | imuxsock是模塊名,支持本地系統日誌的模塊 |
$ModLoad imklog | imklog是模塊名, 支持內核日誌的模塊 |
$ModLoad immark | immark是模塊名,支持日誌標記 |
$ModLoadimudp | #imupd是模塊名,支持udp協議 |
#$UDPServerRun514 | 允許514端口接收使用UDP和TCP協議轉發過來的日誌 |
#$ModLoadimtcp | #imtcp是模塊名,支持tcp協議 |
#$InputTCPServerRun514 | |
內核類型的所有級別日誌 | 存放到 |
#kern.* | /dev/console |
*.info;mail.none;authpriv.none;cron.none | /var/log/messages |
類別.級別
注:
“- ”號: 郵件的信息比較多,現將數據存儲到內存,達到一定大小,全部寫到硬盤.有利於減少I/O進程的開銷,數據存儲在內存,如果關機不當數據消失
authpriv.* | 認證的信息—>存放—> | /var/log/secure |
mail.* | 郵件相關的信息—> 存放—> | -/var/log/maillog |
cron.* | 計劃任務相關的信息—>存放—> | /var/log/cron |
local7.* | 開機時顯示的信息—>存放—> | /var/log/boot.log |
. info 高於info級別的信息全部記錄到某個文件
.=級別 僅記錄等於某個級別的日誌
例: .=info 只記錄info級別的日誌
.! 級別 除了某個級別意外,記錄所有的級別信息
例: .!err 除了err外記錄所有
.none 指的是排除某個類別
編輯rsyslog配置文件
輸入 local 0 .* /var/log/sshd.log #日誌的保存路徑
# Save bootmessages also to boot.log
local7.* /var/log/boot.log
local0.* /var/log/sshd.log#添加此行
# ### beginforwarding rule ###
# Thestatement between the begin ... end define a SINGLE forwarding
# rule.They belong together, do NOT split them. If you create multiple
#forwarding rules, duplicate the whole block!
定義ssh服務的日誌級別
編輯sshd服務的主配置文件
[root@xuegod72 log]#vim/etc/ssh/sshd_config
#SyslogFacilityAUTH
SyslogFacilityAUTHPRIV 修改爲 SyslogFacility local0
#LogLevelINFO
生效配置文件
先重啓rsyslog服務(生效配置),再重啓sshd服務.生成日誌,查看一下有沒有對應的日誌產生
[root@centos-6-1cron]# service rsyslog restart
關閉系統日誌記錄器: [確定]
啓動系統日誌記錄器: [確定]
[root@centos-6-1cron]# service sshd restart
停止 sshd: [確定]
正在啓動 sshd: [確定]
[root@centos-6-1cron]# cd /var/log/
[root@centos-6-1log]# ls
anaconda.ifcfg.log btmp dracut.log messages-20170628 spooler-20170628
anaconda.log btmp-20170705 httpd messages-20170705 spooler-20170705
anaconda.program.log ConsoleKit lastlog mysqld.log sshd.log
anaconda.storage.log cron maillog secure tallylog
anaconda.syslog cron-20170613 maillog-20170613 secure-20170613 wtmp
anaconda.xlog cron-20170628 maillog-20170628 secure-20170628 yum.log
anaconda.yum.log cron-20170705 maillog-20170705 secure-20170705
audit dmesg messages spooler
boot.log dmesg.old messages-20170613 spooler-20170613
[root@centos-6-1log]# cat sshd.log
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on 0.0.0.0 port 22.
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
[root@centos-6-1log]#
Jul 6 16:48:56 centos-6-1 sshd[15148]:Server listening on 0.0.0.0 port 22.
上面對就的信息:
時間 主機 服務 進程ID 相關的信息
防止日誌被刪除
[root@centos-6-1log]# chattr +a /var/log/sshd.log
[root@centos-6-1log]# lsattr sshd.log
-----a-------e-sshd.log
[root@centos-6-1log]# rm -rf sshd.log
rm: 無法刪除"sshd.log": 不允許的操作
[root@centos-6-1log]# cat sshd.log
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on 0.0.0.0 port 22.
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
[root@centos-6-1log]
在linux下的日誌會定期進行滾動增加,我們可以在線對正在進行回滾的日誌進行指定大小的切割(動態),如果這個日誌是靜態的。比如沒有應用向裏面寫內容。那麼我們也可以用split工具進行切割;其中Logrotate支持按時間和大小來自動切分,以防止日誌內容將包含/var/log的文件系統填滿。
logrotate配置文件主要有:
/etc/logrotate.conf以及/etc/logrotate.d/ 這個子目錄下的明細配置文件。
logrotate的執行由crond服務實現。在/etc/cron.daily目錄中,有個文件logrotate,它實際上是個shellscript,用來啓動logrotate
[[email protected]]# cat logrotate
#!/bin/sh
/usr/sbin/logrotate/etc/logrotate.conf
EXITVALUE=$?
if [$EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERTexited abnormally with [$EXITVALUE]"
fi
exit 0
[[email protected]]#
logrotate程序每天由cron在指定的時間(/etc/crontab)啓動
日誌是很大的,如果讓日誌無限制的記錄下去 是一件很可怕的事情,日積月累就有幾百兆佔用磁盤的空間,
如果你要找出某一條可用信息—>海底撈針
日誌切割:
當日志達到某個特定的大小,我們將日誌分類,之前的日誌保留一個備份,再產生的日誌創建一個同名的文件保存新的日誌.
編輯配置文件
說明:(全局參數)
weekly | 每週執行回滾,或者說每週執行一次日誌回滾 |
rotate | 表示日誌切分後歷史文件最多保存離現在最近的多少份 |
create | 指定新創建的文件的權限與所屬主與羣組 |
dateext | 使用日期爲後綴的回滾文件 #可以去/var/log目錄下看看 |
[[email protected]]# vi /etc/logrotate.conf
# see"man logrotate" for details
# rotatelog files weekly
weekly
# keep 4weeks worth of backlogs
rotate 4
# createnew (empty) log files after rotating old ones
create
# use dateas a suffix of the rotated file
dateext
單獨配置信息
# nopackages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp{ #指定的日誌文件
missingok #如果文件丟失不報錯
monthly #每月輪換一次
create 0664 root utmp #設置btmp這個日誌文件的權限,屬主,屬組
minsize 1M #文件超過1M進行回滾,所以大家要知道它不一定第月都會進行分割,要看這個文件大小來定
rotate 1 #日誌進行分割後,只保留一份歷史數據如btmp-20160101
}
/var/log/btmp{
missingok
monthly
create 0600 root utmp
rotate 1
}
其它參數說明:
monthly: 日誌文件將按月輪循。其它可用值爲‘daily’,‘weekly’或者‘yearly’。
rotate 5: 一次將存儲5個歸檔日誌。對於第六個歸檔,時間最久的歸檔將被刪除。
compress: 在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。
delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循週期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
missingok: 在日誌輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
notifempty: 如果日誌文件爲空,輪循不會進行。
create 644 root root: 以指定的權限創建全新的日誌文件,同時logrotate也會重命名原始日誌文件。
postrotate/endscript: 在所有其它指令完成後,postrotate和endscript裏面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。
實戰配置-日誌回滾
在ssh日誌的基礎上
編輯配置文件
[[email protected]]# cat sshd #查看編輯完後的文件內容
/var/log/sshd.log{
missingok
weekly
create 0600root root
minsize 1M
rotate 3
}
[[email protected]]# pwd #查看當前所在目錄
/etc/logrotate.d
[[email protected]]#
[[email protected]]# service rsyslog restart #重啓日誌服務
關閉系統日誌記錄器: [確定]
啓動系統日誌記錄器: [確定]
[[email protected]]#
[[email protected]]# logrotate -d /etc/logrotate.d/sshd #預演,不實際輪循
readingconfig file /etc/logrotate.d/sshd
reading configinfo for /var/log/sshd.log
Handling 1logs
rotatingpattern: /var/log/sshd.log weekly (3rotations)
empty logfiles are rotated, only log files >= 1048576 bytes are rotated, old logs areremoved
consideringlog /var/log/sshd.log
log does not need rotating
You havenew mail in /var/spool/mail/root
[[email protected]]# echo $?
0
[[email protected]]#
[[email protected]]# logrotate -vf /etc/logrotate.d/sshd #強制輪循,也就是說即使輪循條件沒有滿足,也可以通過加-f強制讓logrotate輪循日誌文件
readingconfig file /etc/logrotate.d/sshd
readingconfig info for /var/log/sshd.log
Handling 1logs
rotatingpattern: /var/log/sshd.log forced fromcommand line (3 rotations)
empty logfiles are rotated, only log files >= 1048576 bytes are rotated, old logs areremoved
consideringlog /var/log/sshd.log
log needs rotating
rotatinglog /var/log/sshd.log, log->rotateCount is 3
dateextsuffix '-20170706'
globpattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming/var/log/sshd.log.3 to /var/log/sshd.log.4 (rotatecount 3, logstart 1, i 3),
old log/var/log/sshd.log.3 does not exist
renaming/var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 3, logstart 1, i 2),
old log/var/log/sshd.log.2 does not exist
renaming/var/log/sshd.log.1 to /var/log/sshd.log.2 (rotatecount 3, logstart 1, i 1),
old log/var/log/sshd.log.1 does not exist
renaming/var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 3, logstart 1, i 0),
old log/var/log/sshd.log.0 does not exist
log/var/log/sshd.log.4 doesn't exist -- won't try to dispose of it
error:error opening /var/log/sshd.log: 不允許的操作
set defaultcreate context
[[email protected]]# echo $? #提示報錯上一個返回值有問題,需要排查
1
[[email protected]]#
[[email protected]]# cha
chacl chage chainsaw chattr
[[email protected]]# lsattr /var/log/sshd.log #添加了不能增刪改查的權限
-----a-------e-/var/log/sshd.log
You havenew mail in /var/spool/mail/root
[[email protected]]# chattr -a /var/log/sshd.log #去掉-a就可以了
[root@centos-6-1log]# lsattr /etc/logrotate.d/sshd #可以讀寫此文件了
-------------e-/etc/logrotate.d/sshd
[root@centos-6-1log]#
[[email protected]]# logrotate -vf /etc/logrotate.d/sshd ##強制輪循,也就是說即使輪循條件沒有滿足,也可以通過加-f強制讓logrotate輪循日誌文件
readingconfig file /etc/logrotate.d/sshd
readingconfig info for /var/log/sshd.log
Handling 1logs
rotatingpattern: /var/log/sshd.log forced fromcommand line (3 rotations)
empty logfiles are rotated, only log files >= 1048576 bytes are rotated, old logs areremoved
consideringlog /var/log/sshd.log
log needs rotating
rotatinglog /var/log/sshd.log, log->rotateCount is 3
dateextsuffix '-20170706'
globpattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming/var/log/sshd.log.3 to /var/log/sshd.log.4 (rotatecount 3, logstart 1, i 3),
old log/var/log/sshd.log.3 does not exist
renaming/var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 3, logstart 1, i 2),
old log/var/log/sshd.log.2 does not exist
renaming/var/log/sshd.log.1 to /var/log/sshd.log.2 (rotatecount 3, logstart 1, i 1),
old log/var/log/sshd.log.1 does not exist
renaming/var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 3, logstart 1, i 0),
old log/var/log/sshd.log.0 does not exist
log/var/log/sshd.log.4 doesn't exist -- won't try to dispose of it
fscreatecontext set to unconfined_u:object_r:var_log_t:s0
renaming/var/log/sshd.log to /var/log/sshd.log.1
creatingnew /var/log/sshd.log mode = 0600 uid = 0 gid = 0
set defaultcreate context
[[email protected]]# echo $?
0
[[email protected]]#
[root@centos-6-1log]# ls
anaconda.ifcfg.log boot.log dmesg maillog-20170705 secure-20170628 #sshd.log.2
anaconda.log btmp dmesg.old messages secure-20170705 tallylog
anaconda.program.log btmp-20170705 dracut.log messages-20170613 spooler wtmp
anaconda.storage.log ConsoleKit httpd messages-20170628 spooler-20170613 yum.log
anaconda.syslog cron lastlog messages-20170705 spooler-20170628
anaconda.xlog cron-20170613 maillog mysqld.log spooler-20170705
anaconda.yum.log cron-20170628 maillog-20170613 secure #sshd.log
audit cron-20170705 maillog-20170628 secure-20170613 #sshd.log.1
[root@centos-6-1log]#
再次查看日誌文件大小,已經爲0
[root@centos-6-1log]# du -sh sshd.log
0 sshd.log
[root@centos-6-1log]# du -sh sshd.log.1
0 sshd.log.1
[root@centos-6-1log]# du -sh sshd.log.2
4.0K sshd.log.2
[root@centos-6-1log]# cat sshd.log.2
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on 0.0.0.0 port 22.
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
[root@centos-6-1log]#
logrotate日誌查看
[root@centos-6-1log]# cd /var/lib/
[root@centos-6-1lib]# ls
alternatives dav dhclient logrotate.status mysql polkit-1 random-seed rsyslog udev
authconfig dbus games misc plymouth postfix rpm stateless yum
[root@centos-6-1lib]# vim logrotate.status
[root@centos-6-1lib]# cat !$
catlogrotate.status
logrotatestate -- version 2
"/var/log/ConsoleKit/history"2017-7-5
"/var/log/yum.log"2017-6-10
"/var/log/sshd.log"2017-7-6
"/var/log/dracut.log"2017-6-10
"/var/log/httpd/error_log"2017-7-6
"/var/log/wtmp"2017-6-10
"/var/log/spooler"2017-7-5
"/var/log/btmp"2017-7-5
"/var/log/maillog"2017-7-5
"/var/log/secure"2017-7-5
"/var/log/messages"2017-7-5
"/var/log/cron"2017-7-5
"/var/log/httpd/access_log"2017-7-6
[root@centos-6-1lib]#
需要兩臺Linux主機
192.168.0.17 centos6-1 server
192.168.0.24 centos6-2 client
service端配置
1.編輯/etc/rsyslog.conf
UDP—>速度快—>不保證數據的完整
TCP—>可靠.完整
使用TCP的方式,修改配置文件把#去掉
# ProvidesTCP syslog reception
$ModLoadimtcp
$InputTCPServerRun514
2.重啓rsyslog服務
[root@centos-6-1~]# service rsyslog restart
關閉系統日誌記錄器: [確定]
啓動系統日誌記錄器: [確定]
[root@centos-6-1~]# netstat -anptu | grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 28570/rsyslogd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 15148/sshd
tcp 0 0 :::514 :::* LISTEN 28570/rsyslogd
tcp 0 0 :::22 :::* LISTEN 15148/sshd
[root@centos-6-1~]#
1.修改配置文件/etc/rsyslog.conf修改最後如下三行
*. * 所有類別和級別的日誌
@@192.168.0.17:514 服務端的IP:端口
#*.*@@remote-host:514
*.* @@192.168.0.17:514
# ### endof the forwarding rule ###
2.重啓rsyslog服務
[root@centos-6-2~]# service rsyslog restart
關閉系統日誌記錄器: [確定]
啓動系統日誌記錄器: [確定]
[root@centos-6-2~]#
服務端驗證:
服務端配置:
[root@centos-6-1~]# service iptables stop
iptables:將鏈設置爲政策 ACCEPT:filter [確定]
iptables:清除防火牆規則: [確定]
iptables:正在卸載模塊: [確定]
[root@centos-6-1~]# setenforce 0
[root@centos-6-1~]# getenforce
Permissive
[root@centos-6-1~]# getenforce
Permissive
[root@centos-6-1~]#
[root@centos-6-1~]# tail -f /var/log/messages
Jul 6 16:48:56 centos-6-1 sshd[15148]: Serverlistening on :: port 22.
Jul 6 17:59:25 centos-6-1 kernel: Kernel logging(proc) stopped.
Jul 6 17:59:25 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="15116" x-info="http://www.rsyslog.com"] exiting onsignal 15.
Jul 6 17:59:25 centos-6-1 kernel: imklog 5.8.10,log source = /proc/kmsg started.
Jul 6 17:59:25 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="17848" x-info="http://www.rsyslog.com"] start
Jul 6 22:43:41 centos-6-1 kernel: Kernel logging(proc) stopped.
Jul 6 22:43:41 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="17848" x-info="http://www.rsyslog.com"] exiting onsignal 15.
Jul 6 22:43:42 centos-6-1 kernel: imklog 5.8.10,log source = /proc/kmsg started.
Jul 6 22:43:42 centos-6-1 rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10" x-pid="28570"x-info="http://www.rsyslog.com"] start
Jul 6 22:54:41 centos-6-1 dbus: avc: received setenforce notice (enforcing=0)
Jul 7 00:31:01 centos-6-2 root: hello,centos6-1 iam centos6-2
Jul 7 00:35:13 centos-6-2 root: hello,centos6-1 iam centos6-2 #同步成功
客戶端配置:
[root@centos-6-2~]# service iptables stop
iptables:將鏈設置爲政策 ACCEPT:filter [確定]
iptables:清除防火牆規則: [確定]
iptables:正在卸載模塊: [確定]
[root@centos-6-2~]# logger -p info "hello,centos6-1i am centos6-2"
[root@centos-6-2~]# date
2017年 07月 07日星期五 00:35:15 CST
[root@centos-6-2~]#