免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1729 | 回复: 0
打印 上一主题 下一主题

SCO监控和截获远程计算机的登录信息 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-26 19:28 |只看该作者 |倒序浏览

随着计算机的普及,企业局域网中的计算机越来越多。许多计算机具备用telnet、rlogin、ftp、rcmd等远程登录方式进入服务器的能力。而在实际工作中各联网计算机之间相互远程登录进行业务处理的情况也是日益频繁,如何对这些登录计算机进行监控呢?
问题的提出
网络监管是各种服务器管理的重中之重。如果有一款简捷实用的Unix网络监控软件,该软件能迅速截获并显示所有远程登录计算机的IP地址、以太网地址、远程登录方式、远程登录的用户身份、远程登录的具体时间以及远程登录的进程号,打入命令后即可全方位监控远程登录计算机的各种关键信息,将会给网管人员的工作带来极大的方便。经过一段时间的试验,我们用Shell语言编制了这款监控和截获远程登录计算机的全方位信息的程序,实践效果较好。运行后,所有远程登录计算机的全部关键信息都一目了然地显示出来。一旦发现有非法远程登录者,只须用kill命令杀掉本程序显示的相应的进程号即可迅速清除该非法远程入侵者。
问题的解决
以下是该程序的具体代码,其中netstat命令用于获取远程登录计算机的IP地址,arp命令用于获取远程登录计算机的以太网地址。
#清空原有临时数据文件
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以太网地址\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
        #区分远程登录方式
        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
                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}'`
                        #获取远程登录的计算机的以太网地址
                        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远程登录的计算机关键信息
        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
                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登录的计算机以太网地址
                        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 "未发现远程登录的计算机!"
fi


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31/showart_509081.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP