ccidnet????

出版日期:2000-12-18 总期号:982 本年期号:94

本期导读
要闻综合
电脑工作室
渠道与市场
产品与应用
软件与服务
InfoCD
SendMail用户管理的安全策略

阿波

  SCO UNIX作为微机上的UNIX操作系统,从安装到使用都比较简单,应用SCO UNIX系统在投资方面也相对小一点,但功能和性能方面是比较完善的,因此可将它作为邮件服务器。SCO UNIX系统可以管理6万个用户,所以它适合用作6万用户以内的SendMail邮件系统服务器。SendMail系统无需增加任何其他软、硬件,是比较理想的邮件管理系统。

  在服务器上完全安装SCO OpenServer 5.0.4,系统本身自带了SendMail软件,安装完Sendmail后要根据系统要求做详细配置。

  客户端可以是Win 95/98/2000,用系统自带的Outlook收、发邮件,或编制CGI程序,通过浏览器收发邮件。


  ■SendMail邮件系统的工作原理


  SCO UNIX OpenServer 5 的E-mail协议支持SMTP和POP3,通过邮件传输代理MTA(Mail Transport Agent)包括MMDF 和SendMail实用程序实现邮件的发送和接收。SendMail根据电子邮件的地址,为邮件选择一条适当的邮件传输程序的路由。SendMail接收来自一个用户程序的邮件,解释这个邮件的地址,将其重新改写成适合于狭义传输程序的格式,从而将邮件传送到用户的邮件程序或转发到另外一个系统。


  ■编制SHELL程序管理SendMail邮件用户


  1.增加用户

  #add euser

  if [ "$#" -eq 1 ]

  then

  useradd -g mail -d /usr/email -s /bin/passwd ${1}

  passwd ${1}

  # nulfile是一个0字节的空文件,将其复制作为用户的初始邮箱

  cp /usr/spool/mail/nulfile /usr/spool/mail/${1}

  cd /usr/spool/mail

  chgrp mail ${1}

  chown ${1} ${1}

  echo "Added a user ${1} sucessful ";exit

  else

  echo "Error,input user name!";exit

  fi

  用useradd -g mail -d /usr/email -s /bin/passwd ${1}命令增加用户时,用户可用远程登录方式修改自己的口令(但只能做此操作),修改完口令后应该立即断开和服务器的连接。这种方法最适用于邮件用户,既满足了用户需求,又不会对系统安全造成威胁。

  2.删除用户

  #deleuser

  #删除邮件用户

  if [ "$#" -eq 1 ]

  then

  userdel ${1}

  rm -r /usr/spool/mail/${1}

  echo "Deleted a user ${1} sucessful ";exit

  else

  echo "Error,has no user! ";exit

  fi

  这种方法在管理大用户数的SCO UNIX或其它UNIX操作系统时特别实用,可进行成批用户的删除操作。


  ■安全管理措施


  要想更改UNIX用户的口令,系统管理员可在root 用户下用passwd命令来实现,但对于一般用户来说,是不能这样做的。也许有人要说,普通用户通过telnet登录服务器后,再用passwd命令来更改自己的密码,不是很简单的事吗?确实简单,但普通用户登录服务器后,如果对其在服务器上的操作权限不加限制,其后果是严重的。举一个例子,普通用户获取passwd文件后,就可以用一些解密软件破译密码,达到“非法”访问服务器之目的,这个大家都很清楚,黑客的进入就是采用此类方法。

  如何让普通用户能够更改自己的口令而不影响系统安全性呢?方法是有的,本文列举两种。

  方法一:让普通用户拥有telnet登录权限,即在/etc目录下的配置文件inetd.conf中,保留telnet操作权限,使得普通用户能够通过telnet登录服务器:

  # inetd.conf

  ......

  telnet stream tcp nowait

  NOLUID /etc/telnetd telnetd

  shell stream tcp nowait

  NOLUID /etc/rshd rshd

   login stream tcp nowait

  NOLUID /etc/rlogind rlogind

   ......

  另一方面,使得用户仅能够在服务器上做更换口令的操作,操作完毕后,立即和服务器挂断,这就要将用户对应的.profile文件做如下配置:

  进入/usr/email目录,将.profile文件做如下修改:

  # .profile

  ......

  echo "Here is the way to change your password"

  echo "Input your old password,then use the new one instead,ok?"

  passwd

  echo "You have done,will be disconnect to server "

  exit

  这样,用户通过telnet登录后,运行passwd,更改口令成功后,立即结束和服务器的连接,达到了维护系统安全的目的。

  方法二:建立一shell程序/bin/mail.sh,将/etc/passwd中的/bin/sh改成/bin/mail.sh,mail.sh编写方法如下:

  echo "\n Select\n\n"

  echo "1-Change pd\n"

  echo "0-Return\n\n"

  echo "Select:\c"

  read key

  if (test $key = "1" 1>/dev/null 2>/dev/null)

  then

  passwd

  fi

  exit

  这种方法也能够保证用户在使用telnet修改密码后立即退出连接,从而保证了系统的安全性。

  为了日常管理的方便,一般选择系统在低安全模式下运行UNIX,黑客利用不法工具将passwd文件更改,使部分用户改变安全模式,生成“非法”的shadow文件,使系统用户的安全一致性受到破坏,无法用telnet登录自己的账户。解决此问题的方法是,重新启动系统到单用户方式,将系统设置在低安全模式下进行,然后可以随便更改安全模式,系统便恢复正常工作。


  ■邮件用户的安全恢复方法


  如果系统瘫痪或更换服务器,SCO UNIX(以5.0.4版为例)系统(包括SendMail)需要重新安装。要让以前的邮件用户平滑地过渡到新系统上来,关键要做下边几步操作:

  SCO UNIX系统安装完成后,要将备份出的用户文件passwd拷贝到 /etc目录下,重新生成用户。

  在 /usr/spool/mail目录下,建立各邮件用户的邮箱,实际上就是建立初始化的空邮箱,方法如下:

  在 /usr/spool/mail目录下建立大小为0字节的文件(这里取名为nulfile);

  从passwd文件中,将邮件用户信息制作成文本文件(可用Excel实现,以下几步用同样的方法实现,非常简便),例如该文件取名为mailusers,内容是:

  user1

  user2

  ......

  usern

  编辑mailusers文件生成build_mbox文件,并将其属性设为可执行(#chmod 755 build_mbox),在/usr/spool/mail下执行build_mbox,邮件用户的邮箱就生成了。build_mbox的内容如下:

  cp nulfile user1

  cp nulfile user2

  ......

  cp nulfile usern

  最后,将这些邮箱都归宿到mail组,即在当前目录下,执行:

  chgrp mail 

  编辑mailusers文件,生成chown_musers(即将mailusers另存为chown_musers), 将其属性设为可执行,在/usr/spool/mail下执行chown_musers,使用户的邮箱和用户本身宿主一样。chown_musers文件如下:

  chown user1 user1

  chown user2 user2

  ......

  chown usern usern

  重新启动SCO UNIX系统,用户完全恢复到了系统中,该SendMail邮件系统就能正常运行了。