用戶在登錄時, 驗證完passwd後, 根據shell的不同, 系統首先執行/etc下的某個文件. sh,ksh是profile, csh是csh.cshrc, bash是bashrc. 在這時對用戶登陸地點加以驗證, 可防止某些可能的intruder. 下面是我用在西門子RM600並行機上的/etc/profile的一段程序。
....
....
# check for authenication
if [ -r /etc/checkfrom.awk ]; then
VALID=`finger | awk -f /etc/checkfrom.awk`
if [ "$VALID" != "WELCOME" ]; then
echo "Intruder, GET AWAY FROM HERE!!!"
exit
fi
fi
.....
......
/etc/checkfrom.awk是一個awk程序, 內容如下:
BEGIN {site["aft01"]=1;
site["aft02"]=1;
site["aft03"]=1;
site["aft04"]=1;
site["aft05"]=1;
site["rs6000"]=1;
}
$1==ENVIRON["LOGNAME"] {
if ($NF !~ /[0-9]+:[0-9]+/){
i = NF - 3
if("/dev/"$i == ENVIRON["TTY"]){
if(ENVIRON["TTY"] != "/dev/console"){
if($NF in site)print "WELCOME"
else print "GETAWAY"
}
else print "WELCOME"
exit 0
}
}
else{
i = NF - 2
if("/dev/"$i == ENVIRON["TTY"]){
print "WELCOME"
exit 0
}
}
}
注: 請注意你的機器上的finger顯示的格式, 我機器上的格式如下:
$ finger
lsad% finger
Login Name TTY Idle When Where
tiger Wang Shuhu console Mon 00:41
lsad%
上面的awk程序是針對這種格式編寫的, 僅供參考。