Linux日志2
本文內容主要是多年使用Linux過程中,個人的一些積累,這里記錄下來,與大家共同學習。文中以Ubuntu-12.10系統舉例,但同樣適用于其他主流Linux發行版。本文不涉及Intrusion Detection Systems(IDS,入侵檢測系統)知識。
常規檢查
系統版本信息
$ lsb_release -a
LSB Version: core-2.0-ia32:core-2.0-noarch:core-3.core...
Distributor ID: Ubuntu
Description: Ubuntu 12.10
Release: 12.10
Codename: quantal
系統安裝軟件包列表
$ rpm -qa #Fedora/Redhat系統適用
$ dpkg -l #Ubuntu系統適用
系統進程運行狀態
$ top
1 top - 15:34:24 up 23:44, 10 users, load average: 0.52, 0.56, 0.59
2 Tasks: 245 total, 2 running, 241 sleeping, 1 stopped, 1 zombie
3 %Cpu(s): 14.3 us, 3.4 sy, 0.0 ni, 82.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
4 KiB Mem: 3924136 total, 3220824 used, 703312 free, 296052 buffers
5 KiB Swap: 0 total, 0 used, 0 free, 1488240 cached
6
7 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8 14846 good 20 0 733m 158m 43m S 33.8 4.1 71:54.21 firefox
9 1309 root 20 0 98.6m 29m 6616 S 14.6 0.8 39:01.19 Xorg
10 ...
說明:
第1行,與命令w輸出的含義相同
第2行,進程總數245
第3行,CPU使用情況,用戶態(us)占用率14.3%,內核態占用率3.4(sy)
第4,5行,內存使用情況,物理內存4G,空閑703M,交換分區大小為0
第6,7,8行等,進程列表及實時運行狀態
系統運行級查看
$ runlevel
Redhat/Fedora系統服務管理和配置
$ chkconfig --list
Redhat/Fedora系統也可以通過ntsysv命令在TUI界面配置服務
$ ntsysv
Ubuntu系統服務管理和配置實現特殊,所以Linux通用的服務管理命令chkconfig等不支持,經初步試用發現命令update-rc.d還很初級,可能達不到預期效果。
停止ssh服務
$ sudo update-rc.d ssh disable
啟用ssh服務
$ sudo update-rc.d ssh enable
系統訪問控制(selinux),Fedora/Redhat系統Selinux狀態查詢方法如下(不適用Ubuntu,因沒有預裝selinux)。
$ sudo getenforce
帳號安全
系統用戶登陸情況檢查
$ w
15:09:17 up 23:18, 4 users, load average: 0.77, 0.59, 0.63
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
demo pts/2 192.168.1.100 15:12 1:16 0.30s 0.09s -bash
gooo tty7 :0 三15 23:18m 36:49 2.22s gnome-session --session=ubuntu
gooo pts/0 :0 三15 23:57 9.24s 9.01s /usr/bin/firefox
說明:
系統當前時間:15:09:17
系統已運行時間:23:18
系統平均負載:0.77, 0.59, 0.63 (over the last 1, 5 and 15 minutes)
已登陸用戶:4個
demo用戶通過網絡在圖形下的terminal(pts指虛擬終端)登陸,登陸時間15:12,IP地址為192.168.1.100;
gooo用戶的第一個登陸在控制臺七(即Ctrl+Alt+F5),為當前gnome圖形桌面的登陸用戶;
gooo用戶的第二個登陸在圖形下的terminal,正在運行firefox;
注意:如果發現有不明用戶登陸系統,可通過命令”pkill -kill -t TTYName”將其踢掉,如踢掉demo用戶的命令如下:
$ sudo pkill -kill -t pts/2
檢查系統中保存帳號列表的文件中是否有異常帳號。
$ cat /etc/passwd
root?0:0:root:/root:/bin/bash
daemon?1:1:daemon:/usr/sbin:/bin/sh
bin?2:2:bin:/bin:/bin/sh
sys?3:3:sys:/dev:/bin/sh
sync?4:65534:sync:/bin:/bin/sync
...
test?0:1001:cs2c,,,,:/home/test:/bin/bash
要特別注意類似test(最后一行)的帳號,這個帳號UID被設為0,意味這個用戶權限與root完全相同,而且在Ubuntu下可以直接登陸(Ubuntu下默認是不允許root登陸系統的),非常危險。
帳號歷史活動記錄
last命令顯示系統最近三次用戶登陸情況,如果不指定-n參數,默認顯示所有。
$ sudo last -n 3
用戶名 終端 來源 登錄時間 - 關閉時間(持續時間)
gooo pts/2 192.168.1.100 Thu Aug 15 15:58 - 16:07 (00:08)
gooo tty5 Thu Aug 15 15:12 - 16:09 (00:57)
gooo pts/7 :0 Thu Aug 15 15:06 still logged in
lastb命令顯示系統最近三次用戶登陸失敗的情況,如果不指定-n參數,默認顯示所有。ubuntu系統下lastb默認不記錄通過遠程ssh登陸的失敗記錄,問題還在查找。
$ sudo lastb -n 3
用戶名 終端 來源 登錄時間 - 關閉時間(持續時間)
UNKNOWN tty6 Thu Aug 15 16:04 - 16:04 (00:00)
root tty6 Thu Aug 15 16:04 - 16:04 (00:00)
aureport是一個更加強大的系統審計信息查詢工具,基于audit daemon,auditd根據配置規則記錄相關系統活動,如用戶口令修改記錄、進程運行記錄等信息,通過aureport工具可以查詢audit日志。
$ man aureport
網絡安全
服務端口開放檢查
$ sudo netstat -anpt
1 Active Internet connections (servers and established)
2 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
3 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 825/sshd
4 tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 12489/cupsd
5 tcp 1 0 192.168.1.106:45268 91.189.92.11:443 CLOSE_WAIT
6 tcp 0 0 192.168.1.106:22 192.168.1.109:42066 ESTABLISHED 24652/sshd:
7 tcp 0 0 192.168.1.106:55095 192.168.1.108:22 ESTABLISHED 25221/ssh
8 tcp 0 0 192.168.1.106:32872 122.193.23.59:80 TIME_WAIT -
9 tcp 0 0 192.168.1.106:46298 184.25.111.231:80 TIME_WAIT -
10 udp 0 0 0.0.0.0:17500 0.0.0.0:* 2579/drop
11 tcp6 0 0 ::1:631 :::* LISTEN 12489/cupsd
說明:
命令說明(A):
“-a” 顯示所有;
“-n” IP地址和端口號以數字方式顯示,默認為別名方式;
“-p” 顯示PID和進程名;
“-t” 顯示TCP協議;
“-u” 顯示UDP協議。
第3行,sshd服務(進程ID為825)開啟了tcp協議的22號端口,不限制接入IP地址;
第4行,cupsd服務開啟了tcp協議的631端口,限制僅允許本地訪問;
第5行,本機正在訪問91.189.92.11的443端口;
第6行,遠程主機192.168.1.109已經通過ssh服務遠程登陸本機(192.168.1.106);
第7行,本機已經通過ssh服務遠程登陸遠程主機192.168.1.109;
第8,9行,本機正在訪問122.193.23.59和184.25.111.231兩個網站;
第10行,未知服務(drop進程,PID2579)開啟了udp協議的17500端口,不限制接入IP地址;
第11行,cupsd服務開啟了tcp6協議(IPv6協議)的631端口,限制僅允許本地訪問;
下面是網絡鏈路安全檢查
默認網關檢查
$ route -n
網絡設備節點情況
$ ifconfig -a
實時網絡連接狀態和流量情況
$ sudo iptstate -C
ARP解析列表緩存顯示。如果192.168.1.1是網關IP,而后面的MAC地址與實際不符,那應該是被ARP欺騙了!
$ arp -a
? (192.168.1.1) at 00:23:9e:xx:xx:xx [ether] on eth0
防火墻規則情況
$ sudo iptables --list
數據安全
如果有人入侵了你的系統,修改了系統啟動腳本,還替換了一些關鍵程序來掩蓋他的行蹤,這該然后辦?關鍵是你還不確定入侵是否發生過。 RPM包完整性校驗
Redhat系列發行版(Fedora/RHEL)提供RPM包數據校驗功能,通過文件簽名值校驗安裝到系統中的軟件包是否已經被篡改,也可以掃描出非官方發布的軟件包。校驗系統中所有軟件包情況:
$ rpm -Va
校驗指定指定軟件包initscripts,掃描結果顯示:initscripts包中的文件/etc/rc.d/rc.local與初始版本內容不一致。
$ rpm -Va initscripts
S.5...... c /etc/rc.d/rc.local
校驗指定文件
$ rpm -Vf /bin/netstat
DEB包校驗
Ubuntu系統默認不支持系統已安裝包的完整性校驗(個人結論),網上查到debsums這個包支持。
$ sudo apt-get install debsums
$ debsums sysv-rc #校驗包sysv-rc
$ debsums #校驗系統中所有包
系統日志安全
通過分析日志記錄是查找系統安全隱患的重要手段,Linux系統下日志默認集中保存在目錄/var/log下,下面主要列舉幾個主要的日志文件。
用戶帳號認證日志,內容包括帳號登陸記錄、權限轉換(su/sudo)、修改口令等操作。
$ sudo vim /var/log/secure
$ sudo vim /var/log/auth.log #Ubuntu系統適用
系統啟動日志(即顯示一行行OK的那個畫面的內容)
$ sudo vim /var/log/boot.log
內核啟動初始化日志
$ sudo vim /var/log/dmesg
系統服務和核心組件日志(如networkmanager/gnome-session等)
$ sudo vim /var/log/messages
$ sudo vim /var/log/syslog #Ubuntu系統適用
Xorg圖形系統日志
$ sudo vim /var/log/Xorg.0.log
在線軟件包操作日志,內容包括install/remove/update等記錄。
$ sudo vim /var/log/yum.log #Fedora/Redhat系統適用
$ sudo vim /var/log/apt.log #Ubuntu系統適用
全文完。
總結
- 上一篇: Java 学习之网络编程案例
- 下一篇: 解压缩文件命令linux