- 論壇徽章:
- 1
|
隨著計算機的普及,企業(yè)局域網(wǎng)中的計算機越來越多。許多計算機具備用telnet、rlogin、ftp、rcmd等遠程登錄方式進入服務(wù)器的能力。而在實際工作中各聯(lián)網(wǎng)計算機之間相互遠程登錄進行業(yè)務(wù)處理的情況也是日益頻繁,如何對這些登錄計算機進行監(jiān)控呢?
問題的提出
網(wǎng)絡(luò)監(jiān)管是各種服務(wù)器管理的重中之重。如果有一款簡捷實用的Unix網(wǎng)絡(luò)監(jiān)控軟件,該軟件能迅速截獲并顯示所有遠程登錄計算機的IP地址、以太網(wǎng)地址、遠程登錄方式、遠程登錄的用戶身份、遠程登錄的具體時間以及遠程登錄的進程號,打入命令后即可全方位監(jiān)控遠程登錄計算機的各種關(guān)鍵信息,將會給網(wǎng)管人員的工作帶來極大的方便。經(jīng)過一段時間的試驗,我們用Shell語言編制了這款監(jiān)控和截獲遠程登錄計算機的全方位信息的程序,實踐效果較好。運行后,所有遠程登錄計算機的全部關(guān)鍵信息都一目了然地顯示出來。一旦發(fā)現(xiàn)有非法遠程登錄者,只須用kill命令殺掉本程序顯示的相應(yīng)的進程號即可迅速清除該非法遠程入侵者。
問題的解決
以下是該程序的具體代碼,其中netstat命令用于獲取遠程登錄計算機的IP地址,arp命令用于獲取遠程登錄計算機的以太網(wǎng)地址。
#清空原有臨時數(shù)據(jù)文件
if test -e jlog.* ;then
rm jlog.*
fi
#檢查有無遠程登錄的計算機
ps -ef|grep rlogind|grep -v grep >jlog.tmp
ps -ef|grep telnetd|grep -v grep>>jlog.tmp
ps -ef|grep ftpd|grep -v grep >>jlog.tmp
if [ -f jlog.tmp ];then
clear
echo "\33[02;24H您的電腦已被下列計算機遠程登錄: "
echo "\33[04;01HIP地址\33[04;16H以太網(wǎng)地址\33[04;32H登錄方式\t登錄用戶\t進程號\t登錄時間"
sort +4 jlog.tmp >jlog.ps
rm jlog.tmp
cat jlog.ps|grep -v ftpd >jlog.pnet
cat jlog.ps|grep ftpd >jlog.pftp
#區(qū)分遠程登錄方式
netstat -n |grep ESTABLISHED>jlog.net
if [ -f jlog.net ];then
nsum=`wc jlog.net|awk '{print $1}'`
i=0
while [ $i -lt $nsum ];do
i=`expr $i + 1`
na=`head -$i jlog.net|tail -1`
nmode=`echo $na |awk '{print $4}'|cut -f5 -d.`
if [ "$nmode" -eq 21 -o "$nmode" -eq 23 -o "$nmode" -eq 513 ];then
echo $na >>jlog.tmp
fi
done
fi
#獲取以telnet、rlogin遠程登錄的計算機的登錄關(guān)鍵信息
if [ -f jlog.pnet ];then
cat jlog.tmp|grep -v ".21 "|awk '{print $5}'|cut -f1,2,3,4 -d. >jlog.nett
who |sort +4 |grep ttyp|awk '{print $1}'>jlog.who
#獲取遠程登錄計算機的總數(shù)
tsum=`wc jlog.pnet|awk '{print $1}'`
i=0
k=4
while [ $i -lt $tsum ];do
i=`expr $i + 1`
k=`expr $k + 1`
ta=`head -$i jlog.pnet|tail -1`
#獲取遠程登錄的計算機的用戶
tuser=`head -$i jlog.who|tail -1`
#獲取遠程登錄的計算機的IP地址
tip=`tail -$i jlog.nett|head -1`
tb=`head -$i jlog.pnet|tail -1|awk '{print $8}'`
#獲取遠程登錄的計算機的登錄方式
if [ "$tb" = "telnetd" ];then
tmode="telnet"
else
tmode="rlogin"
fi
#獲取遠程登錄的計算機的登錄時間
tpro=`echo $ta|awk '{print $2}'`
#獲取遠程登錄的計算機的進程號
ttime=`echo $ta|awk '{print $5}'`
#獲取遠程登錄的計算機的以太網(wǎng)地址
teth=`arp -a|grep $tip |head -1|awk '{print $4}'`
if [ "$teth" = "" ];then
teth=" "
fi
echo "\33[$k;01H$tip\33[$k;16H$teth\33[$k;32H$tmode\t$tuser\tt$tpro\t$ttime"
done
fi
#獲取以ftp遠程登錄的計算機關(guān)鍵信息
if [ -f jlog.pftp ];then
cat jlog.tmp|grep ".21" |awk '{print $5}'|cut -f1,2,3,4 -d. >jlog.netf
#獲取以ftp遠程登錄的計算機的總數(shù)
fsum=`wc jlog.pftp|awk '{print $1}'`
i=0
l=$k
while [ $i -lt $fsum ];do
i=`expr $i + 1`
l=`expr $l + 1`
fa=`head -$i jlog.pftp|tail -1`
#獲取以ftp遠程登錄的計算機的用戶
fuser=`echo $fa|awk '{print $1}'`
#獲取以ftp遠程登錄的計算機的登錄時間
ftime=`echo $fa|awk '{print $5}'`
#獲取以ftp遠程登錄的計算機的IP地址
fip=`tail -$i jlog.netf|head -1`
#獲取以ftp登錄的計算機的登錄方式
fb=`echo $fa|awk '{print $8}'`
fmode="ftp"
#獲取以ftp登錄的計算機的進程號
fpro=`echo $fa|awk '{print $2}'`
#獲取以ftp登錄的計算機以太網(wǎng)地址
feth=`arp -a|grep $fip |head -1|awk '{print $4}'`
if [ "$feth" = "" ];then
feth=" "
fi
echo "\33[$l;01H$fip\33[$l;16H$feth\33[$l;32H$fmode\t$fuser\tt$fpro\t$ftime"
done
fi
else
echo "未發(fā)現(xiàn)遠程登錄的計算機!"
fi
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/31/showart_509081.html |
|