Solaris - 強化密碼的安全性
Solaris使用者帳號密碼的加密方式是很兩光的,
Solaris 10提供了四種帳號密碼加密的演算法,下面的表是四種的說明。
試別字 | 加密法 | 說明 | Man manual |
1 | crypt_bsdmd5 | 和BSD及Linux相容的MD5演算法, | crypt_bsdmd5(5) |
2a | crypt_bsdbf | 相容於BSD的Blowfish演算法, | crypt_bsdbf(5) |
md5 | crypt_sunmd5 | Sun的MD5,比BSD及Linux更為安全, | crypt_sunmd5(5) |
__unix__ | crypt_unix | Unix傳統的演算法,並不安全,密碼最長為8個字元。 | crypt_unix(5) |
Solaris預設是使用__unix__,
# useradd abc
# passwd abc
New Password: 1234567890
Re-enter new Password: 1234567890
passwd: password successfully changed for abc
# ssh abc@.
Password: 12345678
Last login: Thu Sep 7 16:38:38 2006 from c01093.ncic.cor
Could not chdir to home directory /home/abc: No such file or directory
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ id
uid=100(abc) gid=1(other)
果然是安全性很不夠,沒關係Solaris 10可以讓它變得更安全。
Solaris 10的密碼的加密演算法的相關設定是放在/etc/
# cat /etc/security/policy.conf
......
# crypt(3c) Algorithms Configuration
#
# CRYPT_ALGORITHMS_ALLOW specifies the algorithms that are allowed to
# be used for new passwords. This is enforced only in crypt_gensalt(3c).
#
CRYPT_ALGORITHMS_ALLOW=1,2a,md5
# The Solaris default is the traditional UNIX algorithm. This is not
# listed in crypt.conf(4) since it is internal to libc. The reserved
# name __unix__ is used to refer to it.
#
CRYPT_DEFAULT=__unix__
......
因為相關的設定只有二行,所以我把不相關的部份都略去了。
# cd /etc/security
# cp policy.conf policy.conf.orig
# vi policy.conf
......
#CRYPT_DEFAULT=__unix__
CRYPT_DEFAULT=1
修改完畢就立刻生效。我們立刻來做個實驗,
# passwd abc
New Password: 1234567890abcdef
Re-enter new Password: 1234567890abcdef
passwd: password successfully changed for abc
-bash-3.00# ssh abc@.
Password: 12345678
Password: 1234567890abcdef
Last login: Fri Sep 8 10:00:29 2006 from localhost
Could not chdir to home directory /home/abc: No such file or directory
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ id
uid=100(abc) gid=1(other)
$
將abc的密碼改為16個字元後,重新用abc登入系統,
在使用新的加密方式後,原本的密碼依然是舊的加密方式,只有新建的使用者或是變更密碼才會使用新的加密方式。
或許有人會問,為什麼不用crypt_sunmd5呢?
最後,別忘了將root的密碼改一下,以使用更安全的密碼哦!
本來寫到這裡就要結束了,但是又想到了二個東西也很有趣,
solaris 10新增了一項歷史密碼的功能。開啟這個功能後,
# grep HISTORY /etc/default/passwd
HISTORY=2
# su - abc
$ passwd abc
Enter existing login password:
New Password:
Re-enter new Password:
passwd: password successfully changed for abc
$ passwd abc
Enter existing login password:
New Password:
passwd: Password in history list.
Please try again
New Password:
如上面的範例所示,將HISTORY設定為2,
那歷史密碼放在那裡呢?就放在/etc/security/
另一個是當使用者登入錯誤幾次後就會被鎖住的功能,
#vi /etc/security/policy.conf
......
LOCK_AFTER_RETRIES=YES
#vi /etc/default/
......
RETRIES=3
SYSLOG_FAILED_LOGINS=3
# ssh abc@.
Password:
Password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard- interactive).
# grep abc /etc/shadow
abc:*LK*$1$wzOJK8UX$JP2AcxvJh6pXQYfLj9k1w0:13399:: ::::9
上面的範例,開啟了帳號鎖住的功能,並將次數設定為三次。
對於被鎖住的帳號可以使用passwd -u username來解開(-u 好像10才有),或者是手動的把/etc/shadow裡的*
假設你有一個同事常常打錯密碼而鎖住,
我想多數人會選2,因為好機會不是天天有的,
username::::lock_after_
帳號後接4個:,然後接著lock_after_
# vi /etc/user_attr
adm::::profiles=Log Management
lp::::profiles=Printer Management
root::::auths=solaris.*,solaris.grant;profiles=Web Console Management,All;lock_after_ retries=no
abc::::lock_after_retries=no
你可以再試看看,abc這個帳號還會不會被鎖住。
留言