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