QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 586|回复: 0

转:在LinuxShell程序中进行身份验证

[复制链接]
发表于 2005-3-17 20:14:08 | 显示全部楼层 |阅读模式
来源 enet硅谷动力

一.缘起   

  Linux系统管理员常常碰到的头痛问题是,在确定系统没有被入侵的前提下,不知道哪个人不小心运行了某个特定用途的Shell程序,把系统搞得一塌糊涂。而且,系统记录显示该人使用的是公用帐号(root或者admin),你无法知道这个人在现实生活中具体对应的是哪一人。   

  二.开场  

  针对以上问题,解决方案有二:其一,追查时间和ip,根据时间和ip,可以追查到该人是从哪里出来的。这套解决方案只能确定以某人为首的一群可疑人。if大家都是通过代理连服务器的话,那除了one by one查log之外更无良策了。其二,在Shell程序中通过身份验证记录log,明确责任。   

  三.求解  

  本文利用Qmail作者D. J. Bernstein大师编写的checkpassword工具进行身份验证。  

  1. 下载:

  http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz  

  2. 安装:

  tar xvfz checkpassword-0.90.tar.gz

  cd checkpassword-0.90

  make

  make setup check  

  3. 如果可执行文件checkpassword没有在/bin下出现的话,goto 1   

  再加上下面这段程序就大功告成了:   

  --------------------------------

  #!/bin/sh

  #

  # Filename: auth.sh

  # Author: hutuworm

  # @Copyleft 2003 hutuworm.org

  #

  function auth_failed () {

  echo "你耍我啊?"

  exit 1

  }

  echo "※※※※※※※※※※※"

  echo "※猪圈重地 闲人莫入※"

  echo "※※※※※※※※※※※"

  printf "请输入帐号:"

  read ACCOUNT

  if [ $ACCOUNT = 'admin' -o $ACCOUNT = 'root' ]

  then

  echo "本圈不欢迎admin&root!"

  exit 1

  fi

  printf "请输入密码:"

  stty -echo

  read PASSWORD

  stty echo

  echo ""

  printf "$ACCOUNT\0$PASSWORD\0Y123456\0"   /bin/checkpassword logger "$ACCOUNT used auth.sh" 3<&0    auth_failed

  echo "欢迎光临糊涂馋寺附属斋堂之猪圈! "

  --------------------------------  

  四.验收   

  $ chmod +x auth.sh

  $

  $ ./auth.sh

  ※※※※※※※※※※※

  ※猪圈重地 闲人莫入※

  ※※※※※※※※※※※

  请输入帐号:hutuworm

  请输入密码:

  你耍我啊?

  $

  $ ./auth.sh

  ※※※※※※※※※※※

  ※猪圈重地 闲人莫入※

  ※※※※※※※※※※※

  请输入帐号:admin

  请输入密码:

  本圈不欢迎admin&root!

  $

  $ ./auth.sh

  ※※※※※※※※※※※

  ※猪圈重地 闲人莫入※

  ※※※※※※※※※※※

  请输入帐号:hutuworm

  请输入密码:

  欢迎光临糊涂馋寺附属斋堂之猪圈!

  $

  $ tail -1 /var/log/messages

  May 5 13:51:45 hutuworm.org 5月 5 13:51:45 logger: hutuworm used auth.sh
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 08:03 , Processed in 0.042256 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表