分享
 
 
 

帐号安全

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

本文不是讲网络安全的文章,但是也不需要读者有网络安全方面的专业知识。本文注重于你的linux服务器创建好之后的安全问题,服务器的创建过程相信你通过参考其他文章能够配置成功,但是光是能够运行是不够的,因为这时的服务器存在着安全隐患,很容易被入侵,如果是个人的服务器,那到无所谓,但是如果是一个企业或单位,那么损失可能会大大超过忽略安全而节省出来的费用。

也许有的系统管理员在配置好服务器之后,运行良好,就转而研究新的东西,这不是个好习惯。举一个例子,有很多人装好的linux,如果你用端口扫描器扫描的话,会发现许多 危险的端口都打开着,例如一台不是mail服务器的机器开着pop3端口,另外还开着finger 端口,netstat端口等等,系统管理员却一点意识都没有。一个基本的黑客可以用现成的软件 攻破这台主机,并获得root。

但是作为网络服务器,应用是第一位的,如果限制应用来保证安全,那就会失去大量的用户,所以建立合理的安全策略是非常重要的。一个好的安全策略应该在客户需求分析的基础上,由经理、工程师、系统管理员共同策划。然后在此基础上,决定投入多少的安全资金。 一般说来,用户越多,安全级别就越低,投入的安全资金就越多。好了,上面说的似乎太抽象了,我想读者还是想知道具体的东西吧。

帐号安全

我们知道,帐号在linux里面是最基本的,也是最重要的,如果你的帐号被人知道了密码,他就可以登录到你的linux主机,进行一些破坏活动,最危险的是root泄露,那么你的 计算机就不是由你自己来控制了。

口令的选择是非常重要的,一些常用的、容易被猜到的口令会给系统带来不安全的因素,所以口令的选择有如下基本规定:

选择一个至少6个字符长度的口令

口令中应该带数字或特殊字符

容易记忆,不要写在纸上

能够迅速输入,使偷看的人不容易认出

口令最好不要由单词或名字组成

在linux中,口令文件在/etc/passwd中,早期的这个文件直接存放加密后的密码,前两位是种子值,是一个随机数,后面跟的是加密的密码。为了安全,现在的linux都提供了 /etc/shadow这个影子文件,密码放在这个文件里面,并且是只有root可读的。

Linux口令加密机制源于DES,通常使用56位密钥加密的64位的文本块。传统的crypt()函数把用户口令填充到8个字符,并用每个字符的7位形成一个56位的DES key。该 Key被用来对64位的零块(00000000)进行加密。加密结果再次用该key加密,重复25次。 最终结果是一个11位的字符串,写到/etc/passwd或/etc/shadow中。为了使基于DES的加密能够更有效的抵御字典攻击,增加了种子值,在0~4095之间,用来搅乱DES算法,使得 同样的明文因种子的不同而密文不同。

上面的可能比较专业,看不懂也没有关系,下面来分析一下/etc/passwd文件,他的每个条目有7个域,分别是 名字:密码:用户id:组id:用户信息:主目录:shell 例如: ynguo:x:509:510::/home/ynguo:/bin/bash

在利用了shadow文件的情况下,密码用一个x表示,普通用户看不到任何密码信息。如果你仔细的看看这个文件,会发现一些奇怪的用户名,她们是系统的缺省账号,缺省账号是攻击者入侵的常用入口,因此一定要熟悉缺省账号,特别要注意密码域是否为空。下面简单介绍一下这些缺省账号

adm 拥有账号文件,起始目录/var/adm通常包括日志文件

bin 拥有用户命令的可执行文件

daemon 用来执行系统守护进程

games 用来玩游戏

halt 用来执行halt命令

lp 拥有打印机后台打印文件

mail 拥有与邮件相关的进程和文件

news 拥有与usenet相关的进程和文件

nobody 被NFS(网络文件系统)使用

shutdown 执行shutdown命令

sync 执行sync命令

uucp 拥有uucp工具和文件

系统最好不要提供guest账号,如果必须提供,口令应该天天变化,并且这个用户的 shell应该用rsh。不常用的账号是侵入者的最佳目标,有大量用户成员的系统必然存在账号 变动,当有用户离开,有组织的删除他们的账号很重要。用userdel命令可以删除账号,另外,禁用账号最快的方法是在/etc/passwd中或影子文件中在用户的加密口令的开始加一个*,该用户就不能再次登录。

Root在unix中是最最重要,应该尽可能的保护,下面的规则必须注意:

除非必要,避免用root登录

如果必须用root,首先用自己的普通账号登录,然后使用/bin/su - 成为root

root shell用完必须关掉

root不能随意让人知道

永远不要将当前目录(.)放在root的搜索路径中。不要把普通用户的/bin目录放在 root的搜索路径中。

调用su时一定要写上全路径/bin/su -,否则被特洛伊木马搞一把就惨了

永远不要以root运行其他用户的或不熟悉的程序

传统上,/etc/passwd文件在很大范围内是可读的,因为许多应用程序需要用他来把UID转换为用户名。例如,如果不能访问/etc/passwd,那么ls -l 命令将显示UID而不是用户名。 但是使用口令猜测程序,具有加密口令的可读/etc/passwd文件有巨大的安全危险。所以出现了影子文件/etc/shadow。

影子口令系统把口令文件分成两部分:/etc/passwd和/etc/shadow。影子口令文件保存加密的口令;/etc/passwd文件中的密码全部变成x。Shadow只能是root可读,从而保证了安全。/etc/shadow文件每一行的格式如下:

用户名:加密口令:上一次修改的时间(从1970年1月1日起的天数):口令在两次修改间的最小天数:口令修改之前向用户发出警告的天数:口令终止后账号被禁用的天数:从1970年1月1日起账号被禁用的天数:保留域。

例如:root: $1 $t4sFPHBq $JXgSGgvkgBDD/D7FVVBBm0:11037:0:99999:7:-1:-1:1075498172

bin:*:11024:0:99999:7:::

daemon:*:11024:0:99999:7::: 缺省情况下,口令更新并不开启。如果你的系统没有启动影子文件,那么运行pwconv程序。

PAM(pluggable Authentication modules)是一套共享库,他为系统管理进行用户确认提供广泛的严密控制,本身不是一个工具。他提供一个前端函数库(一个API)用来确认用户的应用程序。PAM库可以用一个单独的文件/etc/pam.conf来配置,也可以通过位于/etc/pam.d/下的一组配置文件来配置。使事情对用户容易是PAM的核心目标。PAM可以配置成提供单一的或完整的登录过程,使用户输入一条口令就能访问多种服务。例如,ftp程序传统上依靠/etc/passwd机制来确认一个希望开始进行ftp会议的用户。配置了PAM的系统把ftp确认请求发送给PAM API,后者根据pam.conf或相关文件中的设置规则来回复。系统管理员可以设置PAM使一个或多个认证机制能插入到PAM API中。PAM的优点之处在于其灵活性,系统管理员可以精心调整整个认证方案而不用担心破坏应用程序。

DESIGN GOALS(设计目标):

管理员可以选择认证方式, 从简单的密码到智能卡系统。

可以为不同的程序配置不同的认证机制.如 使telnet使用 S/Key认证.。而本机的 login 缺使用一般的 UNIX password。

支持程序的显示方式的需求。如login 需要基于终端的显示, 而dtlogin 需要 X 显示, 而`ftp 和 `telnet需要透过网络来认证。

支持为一个程序配置同时使用多种认证机制。

可是用户在使用多种认证机制时,不必为同一个密码敲入多次。

可是用户在认真时需要输入多个密码。

当底层的认证机制改变时上层软件不需要修改。

结构为system authentication提供一个 _pluggable_ model。

必须能满足现有的服务需要

OVERVIEW OF THE PAM FRAMEWORK (纵览PAM的框架)其核心实际上是一些库函数。你写的应用程序要调用它们。PAM为你提供了一套入口(the front end)。而这套函数互调用特定认证机制所定义的模块(the back end)。简单的说是这样的:你调用一个函数仅仅告诉它你要认正,这就足够了。至于用那一种机制来认证是由配置文件规定的。你只需要看一看返回值就知道认证是否成功了。对于开发应用程序的人来说只需要记住几个函数。PAM的功能被分为四个部分:

authentication(认证)

account(账号管理)

session (对话管理)

password (密码管理)。

这四个都是什么呢?

authentication(认证):包括 `pam_authenticate() 来认证用户, `pam_setcred() 来设置 刷新和销毁用户的 credentials。

Account management:包括 `pam_acct_mgmt() 来检查用的账号是否还有效.可以被用来检查用户是否超时或账号是否过期。

Session management:包括 `pam_open_session() 和 `pam_close_session() 用于对话过程的管理。例如: 可以用来纪录用户的连接时间。一次telnet过程实际上也是一个session。

Password management:`pam_chauthtok() 用来修该密码。程序通过调用 `pam_start()和 `pam_end() 来开始或结束一次PAM 事务。`pam_get_item() 和 `pam_set_item() 读写有关事务的信息。可以用`pam_strerror()来取得错误信息。

如何配置你的系统呢?

pam.conf的一个例子:

#服务名 模块类型 控制标志 模块的名字选项

#------- ----------- ------------ ----------- -------

login auth required pam_unix_auth.so nowarn

login session required pam_unix_session.so

login account required pam_unix_account.so

ftp auth required pam_skey_auth.so debug

ftp session required pam_unix_session.so

telnet session required pam_unix_session.so

login password required pam_unix_passwd.so

passwd password required pam_unix_passwd.so

OTHER auth required pam_unix_auth.so

OTHER session required pam_unix_session.so

OTHER account required pam_unix_account.so

`OTHER 被用来为没有它数指定的服务用的。选项是随着模块的参数。为一个服务是可以指定多个auth模块的.它们一次被调用来验证用户的身份.这叫做 Stacked Modules。pam.conf中的`控制标志 实际上是指明这些 Stacked module 的工作方式。它可取的值如下:

(a) `required:该模块的让正必须通过,失败者立即返回错误信息。

(b) `optional:表示可以忽略它的错误而继续下面一个模块。

(c) `sufficient:表明该模块的让正已经是足够了,下面的模块就不用调用了.立即返回成功的消息。

Password-Mapping 密码的映射多层的模块认证可能会需要多个密码。则会使用户感到厌烦。一个简单的方法是是用户使用同一个密码而透过mapping机制来加强安全性。其实是通过一个密码来产生另一个密码,使一个密码可被多个模块使用。当然要保证第一个密码是强壮的。 auth的模块多有下列选项:

(a) `use_first_pass:使用第一个模块要求输入的密码.不再向用户提示要密码。

(b) `try_first_pass:先试着使用第一个模块要求输入的密码, 不对再要求用户输入。

(c) `use_mapped_pass:使用 password-mapping 来得到密码,不再向用户提示要密码。

(d) `try_mapped_pass:先试着使用 password-mapping 来得到密码,不对再向用户提示要密码。

下面的例子可以看懂了吧:

pam.conf

login auth required pam_unix.so debug

login auth required pam_kerb.so use_mapped_pass

login auth optional pam_rsa.so use_first_pass

这种设计使你没有办法来知道执行的具体情况。当然它也是与应用程序无关的。

Notes:在linux下,也可以用/etc/pam.d中的文件来配置.这些文件的格式与pam.conf类似,只是没有服务名。其服务名就是它的文件名。

关于PAM的详细资料,请看网站http://www.kernel.org/pub/linux/libs/pam/index.html请记住,只要你的服务器是一个网络的服务器,有着大量的用户,PAM就有用武之地。

下面我提供一些账号安全工具,具体怎么用请看工具附带的文档。

1. Anlpasswd:这是一个口令预先检查工具,防止用户选择差的口令ftp://coast.cs.purdue.edu/pub/tools/unix/anlpasswd/

2. Crack:口令猜测程序,通过扫描口令文件来定位不安全的口令,并找到选择该口令的用户http://www.users.dircon.co.uk/~crypto/

3. Epasswd:可代替标准的passwd程序,支持影子口令和口令更新http://science.nas.masa.gov/Groups/Security/epasswd/index.html

4. Kerberos:物理上不安全的网络使用的网络认证协议http://web.mit.edu/kerberos/www/

5. Npasswd:代替passwd命令ftp://ftp.cc.utexas.edu/people/clyde/npasswd/doc/index.html

6. OPIE:One Time Passwords in Everythingftp://ftp.inner.net/pub/opie/

7. passwd+:口令预先检测工具ftp://ftp.dartmouth.edu/pub/security/

8. Shadow:用来代替login和passwd以使任何系统都可以使用影子口令文件ftp://ftp.std.com/src/freeunix/shadow.tar.Z

9. SRA:用来代替telnet和ftp客户服务器程序。使用Secure RPC代码来提供通过网络的加密认证,使得纯文本口令不再使用ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有