在CentOS7中,系統的日志消息由兩個服務負責處理:system-journald和rsyslog。
(1).常見的日志及作用
/var/log目錄里存放了一些特定於系統和服務的日志文件,由rsyslog維護。下面介紹一些改目錄下的常用日志文件及其總用
| 日志文件 | 作用 |
| /var/log/message | 大多數系統日志消息記錄都在此處。但不包括與身份驗證,電子郵件處理相關的定期作業任務等 |
| /var/log/secure | 安全和身份驗證相關的信息以及登錄失敗的日志文件。主要ssh遠程連接產生的日志。 |
| /var/log/maillog | 與郵件相關的信息日志文件 |
| /var/log/cron | 與定期執行任務相關的日志文件 |
| /var/log/boot.log | 與系統啟動相關的信息記錄 |
| /var/log/dmesg | 與系統啟動相關的信息記錄 |
| /var/log/wtmp | 是一個二進制文件,記錄每個用戶的登錄次數和持續時間等信息,可以用last命令查看其中內容 |
| /var/log/btmp | 與/var/log/wtmp類似,但記錄的是錯誤登錄系統的日志,使用lastb命令查看其中內容。如果此文件大於1M,就需要注意是否有人在暴力破解 |
1)實例1:查看哪個IP地址經常暴力破解系統用戶密碼
首先,我們先用遠程連接軟件SCRT連接並輸錯密碼,再使用ssh命令嘗試連接並輸錯三次密碼,模擬暴力破解。
[root@xuexi ~]# ssh root@192.168.1.6 The authenticity of host '192.168.1.6 (192.168.1.6)' can't be established. ECDSA key fingerprint is SHA256:r8TKDXZGzdWkjGnXtfb/YGwCTYViIh9PvJxjrkA4hXU. ECDSA key fingerprint is MD5:99:ea:1a:2c:c3:81:de:6c:95:b2:86:c1:d0:7e:60:96. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.6' (ECDSA) to the list of known hosts. root@192.168.1.6's password: Permission denied, please try again. root@192.168.1.6's password: Permission denied, please try again. root@192.168.1.6's password: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
之后,我們就可以使用vim查看/var/log/secure文件了,此處演示就直接使用tail查看最后幾行。
[root@xuexi ~]# tail /var/log/secure Apr 14 21:43:32 xuexi sshd[65782]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root" Apr 14 21:43:35 xuexi sshd[65782]: Failed password for root from 192.168.1.6 port 42396 ssh2 Apr 14 21:43:38 xuexi unix_chkpwd[65785]: password check failed for user (root) Apr 14 21:43:38 xuexi sshd[65782]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root" Apr 14 21:43:39 xuexi sshd[65782]: Failed password for root from 192.168.1.6 port 42396 ssh2 Apr 14 21:43:43 xuexi unix_chkpwd[65786]: password check failed for user (root) Apr 14 21:43:43 xuexi sshd[65782]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root" Apr 14 21:43:45 xuexi sshd[65782]: Failed password for root from 192.168.1.6 port 42396 ssh2 Apr 14 21:43:45 xuexi sshd[65782]: Connection closed by 192.168.1.6 port 42396 [preauth] Apr 14 21:43:45 xuexi sshd[65782]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=xuexi user=root
這里可以注意下第二行、第五行、第八行。這三行都是時間+主機名+服務+錯誤信息的格式。通過這個格式(或者說是規律)可以過濾出我們想要的信息。
[root@xuexi ~]# grep Failed /var/log/secure | awk '{print $11}' | uniq
192.168.1.4
192.168.1.6
[root@xuexi ~]# grep Failed /var/log/secure | awk '{print $11}' | uniq -c
2 192.168.1.4
3 192.168.1.6
說明:awk '{print $11}',以空格作為分隔符,打印第11列的數據。uniq命令用於報告或忽略文件中的重復行,-c選項表示顯示該行重復出現的次數。
2)使用last命令查看/var/log/wtmp的文件內容
可以直接使用last命令查看
[root@xuexi ~]# last xf pts/0 :0 Sun Apr 14 21:33 still logged in xf :0 :0 Sun Apr 14 13:56 still logged in reboot system boot 3.10.0-957.10.1. Sun Apr 14 13:55 - 23:11 (09:15) reboot system boot 3.10.0-957.10.1. Sun Apr 14 13:53 - 23:11 (09:17) xf :0 :0 Sun Apr 14 13:49 - crash (00:03) reboot system boot 3.10.0-957.10.1. Sun Apr 14 13:47 - 23:11 (09:23) xf pts/0 :0 Tue Apr 9 21:47 - 22:33 (00:46) xf pts/0 :0 Tue Apr 9 21:21 - 21:45 (00:23) xf :0 :0 Tue Apr 9 21:21 - 22:33 (01:12) reboot system boot 3.10.0-957.10.1. Tue Apr 9 21:19 - 22:33 (01:14) xf :0 :0 Fri Apr 5 22:27 - 22:29 (00:01) reboot system boot 3.10.0-957.10.1. Fri Apr 5 22:26 - 22:29 (00:02) root pts/0 :0 Fri Apr 5 22:03 - 22:25 (00:22) root :0 :0 Fri Apr 5 22:02 - down (00:23) reboot system boot 3.10.0-862.el7.x Fri Apr 5 22:01 - 22:26 (00:24) reboot system boot 3.10.0-862.el7.x Fri Apr 5 22:00 - 22:26 (00:25) root :0 :0 Fri Apr 5 21:56 - 22:00 (00:03) root tty2 Tue Dec 11 21:48 - 21:48 (00:00) xf pts/0 :0 Tue Dec 11 21:42 - 21:55 (115+00:13) xf :0 :0 Tue Dec 11 21:41 - 21:56 (115+00:14) reboot system boot 3.10.0-862.el7.x Tue Dec 11 21:18 - 22:00 (115+00:41) xf pts/0 :0 Tue Dec 11 21:04 - 21:18 (00:14) xf :0 :0 Tue Dec 11 21:00 - down (00:18) reboot system boot 3.10.0-862.el7.x Tue Dec 11 20:50 - 21:18 (00:27) xf :0 :0 Mon Dec 10 22:06 - 22:07 (00:00) reboot system boot 3.10.0-862.el7.x Mon Dec 10 22:05 - 21:18 (23:13) xf pts/0 :0 Mon Dec 10 21:34 - 22:04 (00:29) xf :0 :0 Mon Dec 10 21:34 - crash (00:30) reboot system boot 3.10.0-862.el7.x Mon Dec 10 21:33 - 21:18 (23:44) xf pts/0 :0 Mon Dec 10 20:59 - 21:33 (00:34) xf pts/0 :0 Mon Dec 10 20:55 - 20:59 (00:03) xf :0 :0 Mon Dec 10 20:54 - 21:33 (00:38) reboot system boot 3.10.0-862.el7.x Mon Dec 10 20:52 - 21:33 (00:40) xf :0 :0 Sun Dec 9 15:54 - 16:09 (00:15) reboot system boot 3.10.0-862.el7.x Sun Dec 9 15:49 - 16:09 (00:20) wtmp begins Sun Dec 9 15:49:03 2018
也可使用last -f /var/log/wtmp命令查看
[root@xuexi ~]# last -f /var/log/wtmp xf pts/0 :0 Sun Apr 14 21:33 still logged in xf :0 :0 Sun Apr 14 13:56 still logged in reboot system boot 3.10.0-957.10.1. Sun Apr 14 13:55 - 23:11 (09:16) reboot system boot 3.10.0-957.10.1. Sun Apr 14 13:53 - 23:11 (09:18) xf :0 :0 Sun Apr 14 13:49 - crash (00:03) reboot system boot 3.10.0-957.10.1. Sun Apr 14 13:47 - 23:11 (09:24) xf pts/0 :0 Tue Apr 9 21:47 - 22:33 (00:46) xf pts/0 :0 Tue Apr 9 21:21 - 21:45 (00:23) xf :0 :0 Tue Apr 9 21:21 - 22:33 (01:12) reboot system boot 3.10.0-957.10.1. Tue Apr 9 21:19 - 22:33 (01:14) xf :0 :0 Fri Apr 5 22:27 - 22:29 (00:01) reboot system boot 3.10.0-957.10.1. Fri Apr 5 22:26 - 22:29 (00:02) root pts/0 :0 Fri Apr 5 22:03 - 22:25 (00:22) root :0 :0 Fri Apr 5 22:02 - down (00:23) reboot system boot 3.10.0-862.el7.x Fri Apr 5 22:01 - 22:26 (00:24) reboot system boot 3.10.0-862.el7.x Fri Apr 5 22:00 - 22:26 (00:25) root :0 :0 Fri Apr 5 21:56 - 22:00 (00:03) root tty2 Tue Dec 11 21:48 - 21:48 (00:00) xf pts/0 :0 Tue Dec 11 21:42 - 21:55 (115+00:13) xf :0 :0 Tue Dec 11 21:41 - 21:56 (115+00:14) reboot system boot 3.10.0-862.el7.x Tue Dec 11 21:18 - 22:00 (115+00:41) xf pts/0 :0 Tue Dec 11 21:04 - 21:18 (00:14) xf :0 :0 Tue Dec 11 21:00 - down (00:18) reboot system boot 3.10.0-862.el7.x Tue Dec 11 20:50 - 21:18 (00:27) xf :0 :0 Mon Dec 10 22:06 - 22:07 (00:00) reboot system boot 3.10.0-862.el7.x Mon Dec 10 22:05 - 21:18 (23:13) xf pts/0 :0 Mon Dec 10 21:34 - 22:04 (00:29) xf :0 :0 Mon Dec 10 21:34 - crash (00:30) reboot system boot 3.10.0-862.el7.x Mon Dec 10 21:33 - 21:18 (23:44) xf pts/0 :0 Mon Dec 10 20:59 - 21:33 (00:34) xf pts/0 :0 Mon Dec 10 20:55 - 20:59 (00:03) xf :0 :0 Mon Dec 10 20:54 - 21:33 (00:38) reboot system boot 3.10.0-862.el7.x Mon Dec 10 20:52 - 21:33 (00:40) xf :0 :0 Sun Dec 9 15:54 - 16:09 (00:15) reboot system boot 3.10.0-862.el7.x Sun Dec 9 15:49 - 16:09 (00:20) wtmp begins Sun Dec 9 15:49:03 2018
3)使用lastb查看/var/log/btmp文件
[root@xuexi ~]# lastb
root ssh:notty xuexi Sun Apr 14 21:43 - 21:43 (00:00)
root ssh:notty xuexi Sun Apr 14 21:43 - 21:43 (00:00)
root ssh:notty xuexi Sun Apr 14 21:43 - 21:43 (00:00)
root ssh:notty pc Sun Apr 14 21:41 - 21:41 (00:00)
root ssh:notty pc Sun Apr 14 21:41 - 21:41 (00:00)
btmp begins Sun Apr 14 21:41:08 2019
[root@xuexi ~]# lastb | uniq -c
3 root ssh:notty xuexi Sun Apr 14 21:43 - 21:43 (00:00)
2 root ssh:notty pc Sun Apr 14 21:41 - 21:41 (00:00)
1
1 btmp begins Sun Apr 14 21:41:08 2019
發現問題后,使用命令將其IP地址加入規則,阻止其繼續暴力破解。
CentOS6使用如下命令,臨時添加到防火牆規則中。如果想永久添加,需要在之后追加一條命令service iptables save
iptables -A INPUT -i eth0 -s 192.168.128.137 -j DROP //-A INPUT是追加到INPUT鏈中,-j DROP是拋棄所有包
而CentOS7使用如下命令:
[root@xuexi ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.128.137" drop' success [root@xuexi ~]# firewall-cmd --reload success
4)清空/var/log/btmp文件
方法一
[root@xuexi ~]# > /var/log/btmp
方法二
[root@xuexi ~]# rm -rf /var/log/btmp [root@xuexi ~]# touch /var/log/btmp [root@xuexi ~]# systemctl restart rsyslog.service //必須重啟
(2).rsyslog日志服務
1)日志的分類和級別
分類:
| 分類 | 說明 |
| daemon | 后台進程相關的信息 |
| kern | 內核產生的信息 |
| lpr | 打印系統產生的信息 |
| authpriv | 安全認證信息 |
| cron | 定時計划任務相關的信息 |
| 郵件相關的信息 | |
| syslog | 日志服務本身的信息 |
| news | 新聞系統(過時) |
| local0~local7 | 8個系統保留的類,供其他程序使用或用戶自定義 |
級別:(編碼越小,級別越高)
| 編碼 | 優先級 | 嚴重性 |
| 7 | debug | 信息對開發人員調試應用程序有用,在操作過程中沒用 |
| 6 | info | 正常的操作信息,可以收集報告,測量吞吐量等 |
| 5 | notice | 注意,正常但重要的事件 |
| 4 | warning | 警告,如果不采取措施,將會發生錯誤,例如文件系統已使用90% |
| 3 | err | 錯誤,阻止某個模塊或程序的功能不能正常使用 |
| 2 | crit | 關鍵錯誤,已經影響到整個系統或軟件不能正常工作 |
| 1 | alert | 警報,需要立即修改 |
| 0 | emerg | 緊急,內核崩潰等嚴重信息 |
2)rsyslog日志服務
在rhel5服務名叫syslog,配置文件為/etc/syslog.conf。到了rhel6/rhel7時,服務名叫rsyslog,配置文件是/etc/rsyslog.conf。
我們查看一下/etc/syslog.conf配置文件
[root@xuexi ~]# grep -vE "^$|^#" /etc/rsyslog.conf $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
這里涉及一個最重要的日志輸入規則:分類.級別 存放的絕對路徑。其中級別還有單獨規則,如果.級別則是指記錄高於等於某個級別的日志(嚴重性高於等於,編碼低於等於);如果.=級別則是指記錄等於某個級別的日志;如果.!級別則是指除某個級別外全部記錄;如果.none則是指排除某個類別。
現在我們再回頭看上面的配置信息:
//所有高於等於info級別的信息,除了郵件,除了安全認證,除了定時計划任務,都存放到/var/log/message *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
注意:-/var/log/maillog這里的減號是由於以前的郵件比較多,先將數據存儲到內存中,達到一定大小再全部寫入硬盤,減少I/O的消耗。如果關機不當,數據會消失。
除了上面的配置信息外,還需要注意兩個配置信息,如下:
#$UDPServerRun 514 //去掉注釋就是允許514端口接收使用UDP協議轉發過來的日志 #$InputTCPServerRun 514 //去掉注釋就只允許514端口接收使用TCP協議轉發過來的日志
3)自定義日志類型和存儲位置
這里需要用到local0~local7的自定義分類。我們以sshd為例。
首先我們需要使用vim打開sshd服務的配置文件,進行修改配置
[root@xuexi ~]# vim /etc/ssh/sshd_config
然后找到如下位置,將其更改為我們需要的分類local0
#SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO
修改后,如下所示
#SyslogFacility AUTH SyslogFacility local0 #SyslogFacility AUTHPRIV #LogLevel INFO
保存並退出。
接着我們需要使用vim打開rsyslog服務的配置文件,進行修改配置
[root@xuexi ~]# vim /etc/rsyslog.conf
在最后添加一行
local0.* /var/log/sshd.log
保存並退出。
最后重啟sshd和rsyslog兩個服務
[root@xuexi ~]# systemctl restart sshd [root@xuexi ~]# systemctl restart rsyslog.service
注意:如果SELinux開着,請手動創建/var/log/sshd.log文件。
