Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92145934
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 22:29:18

  出处:Unix爱好者家园unix-cd.com   
随着计算机的普及,企业局域网中的计算机越来越多。许多计算机具备用telnet、rlogin、ftp、rcmd等远程登录方式进入服务器的能力。而在实际工作中各联网计算机之间相互远程登录进行业务处理的情况也是日益频繁,如何对这些登录计算机进行监控呢? 
问题的提出 

网络监管是各种服务器管理的重中之重。如果有一款简捷实用的Unix网络监控软件,该软件能迅速截获并显示所有远程登录计算机的IP地址、以太网地址、远程登录方式、远程登录的用户身份、远程登录的具体时间以及远程登录的进程号,打入命令后即可全方位监控远程登录计算机的各种关键信息,将会给网管人员的工作带来极大的方便。经过一段时间的试验,我们用Shell语言编制了这款监控和截获远程登录计算机的全方位信息的程序,实践效果较好。运行后,所有远程登录计算机的全部关键信息都一目了然地显示出来。一旦发现有非法远程登录者,只须用kill命令杀掉本程序显示的相应的进程号即可迅速清除该非法远程入侵者。 

问题的解决 

以下是该程序的具体代码,其中netstat命令用于获取远程登录计算机的IP地址,arp命令用于获取远程登录计算机的以太网地址。 
rm jlog.* 
#检查有无远程登录的计算机 
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 
echo “您的电脑已被下列计算机远程登录: ” 
echo “IP地址 以太网地址 登录方式 登录用户 进程号 登录时间” 
sort +4 jlog.tmp >jlog.ps 
rm jlog.tmp 
cat jlog.ps|grep -v ftpd >jlog.pnet 
cat jlog.ps|grep ftpd >jlog.pftp 
#区分远程登录方式 
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远程登录的计算机的登录关键信息 
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 
#获取远程登录计算机的总数 
tsum=丶wc jlog.pnet|awk ‘{print $1};'丶 
i=0 
while [ $i -lt $tsum ] 
do 
i=丶expr $i + 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}'丶 
#获取远程登录的计算机的以太网地址 
teth=丶arp -a|grep $tip |head -1|awk ‘{print $4}'丶 
if [“$teth” = “” ] 
then 
teth=“ ” 
fi 
echo “$tip $teth $tmode $tuser $tpro $ttime” 
done 
fi 
#获取以ftp远程登录的计算机关键信息 
if [ -f jlog.pftp ] 
then 
cat jlog.tmp|grep “.21” |awk ‘{print $5}'|cut -f1,2,3,4 -d. >jlog.netf 
#获取以ftp远程登录的计算机的总数 
fsum=丶wc jlog.pftp|awk ‘{print $1}'丶 
i=0 
while [ $i -lt $fsum ] 
do 
i=丶expr $i + 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登录的计算机以太网地址 
feth=丶arp -a|grep $fip |head -1|awk ‘{print $4}'丶 
if [“$feth” = “” ] 
then 
feth=“ ” 
fi 
echo “$fip $feth $fmode $fuser $fpro $ftime” 
done 
fi 
else 
echo “未发现远程登录的计算机!” 
fi 
阅读(193) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~