万千英语族 英语爱好者的家园
在线英语广播
在线英语词典
在线杀毒查毒
英语社区
万千英语族  翻译文化  阅读写作  听力口语  学习方法  听歌学英语  趣味英语  好贴无限  数字生存
当前位置: 英语频道 > 数字生存 > Web Construction > 正文阅读字体:

Linux系统管理与优化--第三章 系统安全概要(二)


www.iselong.com 作者:Gerhard Mourani
23. 特殊的帐号

24. 防止任何人都可以用su命令成为root

25. 资源限制

26. 更好地控制mount上的文件系统

27. 把rpm程序转移到一个安全的地方,并改变默认的访问许可

28. 登录shell

29. “/etc/lilo.conf”文件

30. 使Control-Alt-Delete关机键无效

31. 创建所有重要的日志文件的硬拷贝

32. 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可

33. “/etc/rc.d/rc.local”文件

34. 带“s”位的程序

35. 异常和隐含文件

36. 查找所有SUID/SGID位有效的文件

37. 查找任何人都有写权限的文件和目录

38. 查找没有主人的文件

39. 查找“.rhosts”文件

40. 系统已经被黑客控制

23. 特殊的帐号

禁止操作系统中不必要的预置帐号(每次升级或安装完都要检查一下)。Linux系统中就提供这样一些你可能不需要的预置帐号。如果确实不需要这些帐号,就把它们删掉。系统中有越多的帐号,就越容易受到攻击。

我们假定你已经在系统中使用shadow口令。如果不是这样,最好在系统中加上shadow口令的支持,因为这样系统会更安全。如果你是按照上一章介绍的方法安装服务器,那么在“安全验证配置”这一步就已经选上“Enable Shaow Passwords”这个选项了。

在系统中删除一个用户可以用这个命令:

[root@deep]# userdel username

在系统中删除一个组可以用这个命令:

[root@deep]# groupdel username

第一步 用下面的命令删除一些不必要的用户:

[root@deep]# userdel adm
[root@deep]# userdel lp
[root@deep]# userdel sync
[root@deep]# userdel shutdown
[root@deep]# userdel halt
[root@deep]# userdel news
[root@deep]# userdel uucp
[root@deep]# userdel operator
[root@deep]# userdel games (如果不用X Window服务器,可以删除这个用户)
[root@deep]# userdel gopher
[root@deep]# userdel ftp (如果没安装匿名ftp服务器,可以删除这个用户)

第二步 输入下面的命令删除一些不必要的组:

[root@deep]# groupdel adm
[root@deep]# groupdel lp
[root@deep]# groupdel news
[root@deep]# groupdel uucp
[root@deep]# groupdel games (delete this group if you don’t use X Window Server).
[root@deep]# groupdel dip
[root@deep]# groupdel pppusers
[root@deep]# groupdel popusers (delete this group if you don’t use pop server for email).
[root@deep]# groupdel slipusers

第三步 在系统中加入必要的用户:

在系统中添加用户,用这个命令:

[root@deep]# useradd username

给系统中的用户添加或改变口令,用这个命令:

[root@deep]# passwd username

例如:

[root@deep]# useradd admin
[root@deep]# passwd admin

这些命令的输出是这样的:

Changing password for user admin
New UNIX password: somepasswd
passwd: all authentication tokens updated successfully

第四步 “不许改变”位可以用来保护文件使其不被意外地删除或重写,也可以防止有些人创建这个文件的符号连接。删除“/etc/passwd”、“/etc/shadow”、“/etc/group”或“/etc/gshadow”都是黑客的攻击方法。

给口令文件和组文件设置不可改变位,可以用下面的命令:

[root@deep]# chattr +i /etc/passwd
[root@deep]# chattr +i /etc/shadow
[root@deep]# chattr +i /etc/group
[root@deep]# chattr +i /etc/gshadow

注意:如果将来要在口令或组文件中增加或删除用户,就必须先清除这些文件的不可改变位,否则就不能做任何改变。如果没有清除这些文件的不可改变位,安装那些会自动在口令文件和组文件中加入新用户的rpm软件包的时候,在安装过程中就会出现出错的提示。

24. 防止任何人都可以用su命令成为root

如果不想任何人都可以用“su”命令成为root或只让某些用户有权使用“su”命令,那么在“/etc/pam.d/su”文件中加入下面两行。我建议尽量限制用户通过“su”命令成为root。

第一步

编辑su文件(vi /etc/pam.d/su)在文件的头部加入下面两行:

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel

加入这两行之后,“/etc/pam.d/su”文件变为:

#%PAM-1.0
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow use_authtok nullok
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_xauth.so

这两行的意思是只有“wheel”组的成员才能用su命令成为root。注意,“wheel”组是系统中用于这个目的的特殊帐号。不能用别的组名。把这节介绍的方法和《22. “/etc/securetty”文件》中介绍的方法结合起来,可以更好地加强系统的安全性。

第二步

我们在“/etc/pam.d/su”配置文件中定义了“wheel”组,现在介绍一下怎样让一些用户可以用“su”命令成为“root”。下面是一个例子,让admin用户成为“wheel”组的成员,这样就可以用“su”命令成为“root”:

[root@deep]# usermod -G10 admin

“G”是表示用户所在的其它组。“10”是“wheel”组的ID值,“admin”是我们加到“wheel”组的用户。用同样的命令可以让其他的用户可以用su命令成为root。

25. 资源限制

限制用户对系统资源的使用,可以避免拒绝服务(如:创建很多进程、消耗系统的内存,等等)这种攻击方式。这些限制必须在用户登录之前设定。例如,可以用下面的方法对系统中用户加以。

第一步

编辑limits.conf文件(vi /etc/security/limits.conf),加入或改变下面这些行:

* hard core 0
* hard rss 5000
* hard nproc 20

这些行的的意思是:“core 0”表示禁止创建core文件;“nproc 20”把最多进程数限制到20;“rss 5000”表示除了root之外,其他用户都最多只能用5M内存。上面这些都只对登录到系统中的用户有效。通过上面这些限制,就能更好地控制系统中的用户对进程、core文件和内存的使用情况。星号“*”表示的是所有登录到系统中的用户。

第二步

必须编辑“/etc/pam.d/login”文件,在文件末尾加入下面这一行:

session required /lib/security/pam_limits.so

加入这一行后“/etc/pam.d/login”文件是这样的:

#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok use_authtok md5 shadow
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so
#session optional /lib/security/pam_console.so

26. 更好地控制mount上的文件系统

可以用一些选项,如:noexec、nodev和nosuid,更好地控制mount上的文件系统,如:“/home”和“/tmp”。这些都在“/etc/fstab”文件中设定。fstab文件包含了各个文件系统的描述信息。如果想知道在这个文件中可以设定哪些选项,请用man命令查看关于mount的帮助。

编辑fstab文件(vi /etc/fstab),并根据需要把这两行:

/dev/sda11 /tmp ext2 defaults 1 2
/dev/sda6 /home ext2 defaults 1 2

改变成:

/dev/sda11 /tmp ext2 nosuid,nodev,noexec 1 2
/dev/sda6 /home ext2 nosuid,nodev 1 2

“nodev”表示不允许在这个文件系统上有字符或特殊的块设备。“nosuid”表示不允许设定文件的suid(set-user-identifier)和sgid(set-group-identifier)许可位。“noexec”表示不允许文件系统上有任何可执行的二进制文件。

注意:上面的例子中,“/dev/sda11”mount到“/tmp”目录上,而“/dev/sd6”mount到“/home”目录上。当然这和你的实际情况会有所不同,这些取决于你是怎么分区的以及用什么样的硬盘,例如:IDE硬盘是hda、hdb,等等,而SCSI硬盘是sda、sdb,等等。

27. 把rpm程序转移到一个安全的地方,并改变默认的访问许可

一旦在Linux服务器上用rpm命令安装完所有需要的软件,最好把rpm程序转移到一个安全的地方,如:软盘或其它你认为安全的地方。因为如果有人入侵了你的服务器,他就不能用rpm命令安装那些有害的软件。当然,如果将来要用rpm安装新的软件,你就要把rpm程序拷回原来的目录。

把rpm程序移到软盘上,用下面的命令:

[root@deep]# mount /dev/fd0 /mnt/floppy/
[root@deep]# mv /bin/rpm /mnt/floppy/
[root@deep]# umount /mnt/floppy

注意:千万不要把rpm程序从系统中卸载掉,否则以后就不能重新安装它,因为安装rpm程序或其它软件包本身就要用rpm命令。

还有一点要注意的是,把rpm命令的访问许可从默认的755改成700。这样非root用户就不能使用rpm命令了。特别是考虑到万一在安装完新软件之后忘了把rpm程序移到一个安全的地方,这样做就更有必要了。

改变“/bin/rpm”默认的访问权限,用下面这个命令:

[root@deep]# chmod 700 /bin/rpm

28. 登录shell

为了方便重复输入很长的命令,bash shell可以在“~/.bash_history”文件(“~/”是家目录,每个用户都是不一样的)中存500个曾经输入过的命令。每一个有自己帐号的用户,在自己的家目录中,都会有“.bash_history”文件。可能会有这种情况,用户在不该输入口令的地方输入了口令,而输入的口令会在“.bash_history”文件中保存下来。而且“.bash_history”文件越大这种可能性也越大。

在“/etc/profile”文件中HISTFILESIZE和HISTSIZE这两行决定了系统中所有用户的“.bash_history”文件可以保存多少命令。我建议把“/etc/profile”文件中的HISTFILESIZE和HISTSIZE都设成一个比较小的值,如:20。

编辑profile文件(vi /etc/profile),把这些行改成:

HISTFILESIZE=20
HISTSIZE=20

这样每个用户家目录下的“.bash_history”就最多只能存20个命令。如果黑客试图在用户的“~/.bash_history”文件中发现一些口令,他就没有什么机会了。

29. “/etc/lilo.conf”文件

LILO是Linux上一个多功能的引导程序。它可以用于多种文件系统,也可以从软盘或硬盘上引导Linux并装入内核,还可以做为其它操作系统的“引导管理器”。

根(/)文件系统对LILO来说很重要,有下面这两个原因:第一:LILO要告诉内核到那里去找根文件系统;第二:LILO要用到的一些东西,如:引导扇区、“/boot”目录和内核就存放在根文件系统中。引导扇区包括LILO引导程序的第一部分,这个部分在引导阶段的后半部分还要装入更大的引导程序。这两个引导程序通常存在“/boot/boot.b”文件中。内核是由引导程序装入并启动的。在RedHat Linux系统中,内核通常在根目录或“/boot”目录下。

因为LILO对Linux系统非常重要,所以我们要尽可能地保护好它。LILO最重要的配置文件是“/etc”目录下的“lilo.conf”文件。用这个文件我们可以配置或提高LILO程序以及Linux系统的安全性。下面是LILO程序的三个重要的选项设置。

加入:timeout=00

这项设置设定LILO在引导默认的系统之前,等候用户输入的时间。 C2安全等级规定这个时间间隔必须设成0,因为多重引导会使系统的安全措施形同虚设。除非想用多重引导,否则最好把这项设成0。

加入:restricted

当LILO引导的时候,输入参数linux single,进入单用户(single)模式。因为单用户模式没有口令验证,所以可以在LILO引导时,加上口令保护。“restricted”选项只能和“password”合起来用。注意要给每个内核都要加上口令保护。

加入:password=

用单用户模式启动Linux系统的时候,系统要求用户输入这个口令。口令是大小写敏感的,而且要注意,要让“/etc/lilo.conf”文件,除了root之外,其他用户没有读的权限,这样也就看不到口令了。下面是用“lilo.conf”文件保护LILO的一个具体例子。

第一步

编辑lilo.conf文件(vi /etc/lilo.conf),加上或改变下面介绍的三个设置:

boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=00 ? change this line to 00.
Default=linux
restricted ? add this line.
password= ? add this line and put your password.
image=/boot/vmlinuz-2.2.12-20
label=linux
initrd=/boot/initrd-2.2.12-10.img
root=/dev/sda6
read-only

第二步

因为“/etc/lilo.conf”配置文件里,存在没有经过加密的口令,所以只有root才能有读的权限。用下面的命令改变文件的权限:

[root@deep]# chmod 600 /etc/lilo.conf (will be no longer world readable).

第三步

使改变后的“/etc/lilo.conf”配置文件生效:

[root@deep]# /sbin/lilo -v (to update the lilo.conf file).

第四步

为了更安全一点,可以用chattr命令给“lilo.conf”文件加上不可改变的权限。

让文件不可改变用下面的命令:

[root@deep]# chattr +i /etc/lilo.conf

这样可以避免“lilo.conf”文件因为意外或其它原因而被改变。如果想要改变“lilo.conf”文件,必须先清除它的不可改变标志。

清除不可改变的标记用下面的命令:

[root@deep]# chattr -i /etc/lilo.conf

30. 使Control-Alt-Delete关机键无效

把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。

编辑inittab文件(vi /etc/inittab)把这一行:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

改为:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

用下面的命令使改变生效:

[root@deep]# /sbin/init q

31. 创建所有重要的日志文件的硬拷贝

保证在“/var/log”目录下的不同日志文件的完整性是保证系统安全所要考虑的非常重要的一个方面。如果我们在服务器上已经加上了很多安全措施,黑客还是能够成功入侵,那么日志文件就是我们最后的防范措施。因此,很有必要考虑一下用什么方法才能保证日志文件的完整性。如果服务器上或网络中的其它服务器上已经安装了打印机,就可以把重要的日志文件打印出来。这要求有一个可以连续打印的打印机,并用syslog把所有重要的日志文件传到“/dev/lp0”(打印设备)。黑客可以改变服务器上的文件、程序,等等,但是,把重要的日志文件打印出来之后,他就无能为力了。

例如:

记录下服务器上所有的telnet、mail、引导信息和ssh连接,并打印到连接在这台服务器上的打印机。需要在“/etc/syslog.conf”文件中加入一行。

编辑syslog.conf文件(vi /etc/syslog.conf),在文件末尾加入下面这一行:

authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0

重新启动syslog daemon使改动生效:

[root@deep]# /etc/rc.d/init.d/syslog restart

又例如:

记录下服务器上所有的telnet、mail、引导信息和ssh连接,并打印到本地网络中其它服务器上连接的打印机,要在这台接收日志文件的服务器的“/etc/syslog.conf”文件中加入一行。如果本地网中没有打印机,可以把所有的日志文件拷贝到别的服务器上,只要忽略下面第一步,把“/dev/lp0”加到其它服务器的“syslog.conf”文件中,直接跳到在其它服务器上设置“-r”参数那一步。把所有日志文件拷贝到其它计算机上,使你可以在一台计算机上管理多台计算机的日志文件,从而简化管理工作。

编辑接收日志文件的服务器(例如:mail.openarch.com)上的syslog.conf文件(vi /etc/syslog.conf),在文件的末尾加入下面这一行:

authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0

因为syslog daemon的默认配置是拒绝接收来自网络上的信息,我们必须使它能够接收来自网络上的信息,在syslog daemon的脚本文件(指的是接收日志文件的服务器上的脚本文件)中加入下面的“-r”参数。

编辑syslog脚本文件(vi +24 /etc/rc.d/init.d/syslog),把这一行:

daemon syslogd -m 0

改为:

daemon syslogd -r -m 0

重新启动syslog daemon使改动生效:

[root@mail]# /etc/rc.d/init.d/syslog restart

如果接收日志文件的服务器上有防火墙,你可以检查一下防火墙的脚本文件中有没有下面几行(没有就加上):

ipchains -A input -i $EXTERNAL_INTERFACE -p udp
-s $SYSLOG_CLIENT
-d $IPADDR 514 -j ACCEPT

在这个例子中防火墙的脚本文件中定义了EXTERNAL_INTERFACE="eth0"。

IPADDR="208.164.186.2";
SYSLOG_CLIENT=”208.164.168.0/24"

重新启动接收日志文件的服务器上的防火墙,使改动生效:

[root@mail]# /etc/rc.d/init.d/firewall restart

这个防火墙规则允许接收日志文件的服务器接收来自端口514(syslog的端口)的UDP包。关于防火墙的资料可以查看《第七章 网络防火墙》。

最后,编辑一下发送日志文件的服务器上的“syslog.conf”文件(vi /etc/syslog.conf),在末尾加上这一行:

authpriv.*;mail.*;local7.*;auth.*;daemon.info @mail

“mail”是接收日志文件的计算机主机名。如果有人试图黑你的计算机并且威胁把所有重要的系统日志文件都删掉,你就不用怕了,因为你已经打印出来或者在别的地方还有一个拷贝。这样就可以根据这些日志文件分析出黑客在什么地方,然后出理这次入侵事件。

重新启动syslog daemon,使改变生效:

[root@deep]# /etc/rc.d/init.d/syslog restart

同样也要看看发送日志文件的服务器的防火墙的脚本文件中有没有这几行(没有加上)。

ipchains -A output -i $EXTERNAL_INTERFACE -p udp
-s $IPADDR 514
-d $SYSLOG_SERVER 514 -j ACCEPT

这里防火墙的脚本文件中定义了:

EXTERNAL_INTERFACE="eth0"
IPADDR="208.164.186.1"
SYSLOG_SERVER="mail.openarch.com"

重新启动防火墙,使改变生效:

[root@deep]# /etc/rc.d/init.d/firewall restart

这个防火墙的规则允许发送日志文件的服务器通过端口514(syslog端口)发送UDP包。关于防火墙的资料可以查看《第七章 网络防火墙》。

注意:千万不要用网关服务器来收集和管理所有的系统日志信息。有关syslogd程序的其它一些参数和策略,可以用man命令查看帮助:syslogd(8)、syslog(2)和syslog.conf(5)。

32. 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可

改变启动和停止daemon的脚本文件的权限。

[root@deep]# chmod -R 700 /etc/rc.d/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。我想一般用户没有什么必要知道脚本文件的内容。

注意:如果你安装或升级了一个程序,要用到“/etc/rc.d/init.d/”中system V脚本,不要忘记再检查一下改变和检查这个脚本文件的许可。

33. “/etc/rc.d/rc.local”文件

在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。

第一步

编辑“/ect/rc.d/rc.local”文件,在下面这些行的前面加上“#”:

--
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
--

第二步

删除“/etc”目录下的“issue.net”和“issue”文件:

[root@deep]# rm -f /etc/issue
[root@deep]# rm -f /etc/issue.net

注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet、SSH),看到的登录提示。同样在“/etc”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把“/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。

34. 带“s”位的程序

用ls -l命令列出来的文件,如果文件的权限位中出现“s”,则这些文件的SUID(-rwsr-xr-x)或SGID(-r-xr-sr-x)位被设定了。因为这些程序给执行它的用户一些特权,所以如果不需要用到这些特权,最好把这些程序的“s”位移去。可以用下面这个命令“chmod a –s <文件名>”移去相应文件的“s”位。

可以清除“s”位的程序包括但不限于:

从来不用的程序
不希望非root用户运行的程序
偶尔用用,但是不介意先用su命令变为root后再运行。

下面加了星号(*)的程序,我个人认为有必要移去“s”位。注意,系统可能需要一些SUID的程序才能正常运行,所以要千万小心。

用下面的命令查找所有带“s”位的程序:

[root@deep]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls –lg {} ;
*-rwsr-xr-x 1 root root 35168 Sep 22 23:35 /usr/bin/chage
*-rwsr-xr-x 1 root root 36756 Sep 22 23:35 /usr/bin/gpasswd
*-r-xr-sr-x 1 root tty 6788 Sep 6 18:17 /usr/bin/wall
-rwsr-xr-x 1 root root 33152 Aug 16 16:35 /usr/bin/at
-rwxr-sr-x 1 root man 34656 Sep 13 20:26 /usr/bin/man
-r-s--x--x 1 root root 22312 Sep 25 11:52 /usr/bin/passwd
-rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/suidperl
-rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/sperl5.00503
-rwxr-sr-x 1 root slocate 24744 Sep 20 10:29 /usr/bin/slocate
*-rws--x--x 1 root root 14024 Sep 9 01:01 /usr/bin/chfn
*-rws--x--x 1 root root 13768 Sep 9 01:01 /usr/bin/chsh
*-rws--x--x 1 root root 5576 Sep 9 01:01 /usr/bin/newgrp
*-rwxr-sr-x 1 root tty 8328 Sep 9 01:01 /usr/bin/write
-rwsr-xr-x 1 root root 21816 Sep 10 16:03 /usr/bin/crontab
*-rwsr-xr-x 1 root root 5896 Nov 23 21:59 /usr/sbin/usernetctl
*-rwsr-xr-x 1 root bin 16488 Jul 2 10:21 /usr/sbin/traceroute
-rwxr-sr-x 1 root utmp 6096 Sep 13 20:11 /usr/sbin/utempter
-rwsr-xr-x 1 root root 14124 Aug 17 22:31 /bin/su
*-rwsr-xr-x 1 root root 53620 Sep 13 20:26 /bin/mount
*-rwsr-xr-x 1 root root 26700 Sep 13 20:26 /bin/umount
*-rwsr-xr-x 1 root root 18228 Sep 10 16:04 /bin/ping
*-rwxr-sr-x 1 root root 3860 Nov 23 21:59 /sbin/netreport
-r-sr-xr-x 1 root root 26309 Oct 11 20:48 /sbin/pwdb_chkpwd

用下面的命令禁止上面选出来的SUID的程序:

[root@deep]# chmod a-s /usr/bin/chage
[root@deep]# chmod a-s /usr/bin/gpasswd
[root@deep]# chmod a-s /usr/bin/wall
[root@deep]# chmod a-s /usr/bin/chfn
[root@deep]# chmod a-s /usr/bin/chsh
[root@deep]# chmod a-s /usr/bin/newgrp
[root@deep]# chmod a-s /usr/bin/write
[root@deep]# chmod a-s /usr/sbin/usernetctl
[root@deep]# chmod a-s /usr/sbin/traceroute
[root@deep]# chmod a-s /bin/mount
[root@deep]# chmod a-s /bin/umount
[root@deep]# chmod a-s /bin/ping
[root@deep]# chmod a-s /sbin/netreport

如果你想知道这些程序到底有什么用,可以用man命令查看帮助。

例如:

[root@deep]# man netreport

35. 异常和隐含文件

在系统的每个地方都要查看一下有没有异常和隐含文件(点号是起始字符的,用“ls”命令看不到的文件),因为这些文件可能是隐藏的黑客工具或者其它一些信息(口令破解程序、其它系统的口令文件,等等)。在UNIX下,一个常用的技术就是用一些特殊的名,如:“…”、“.. ”(点点空格)或“..^G”(点点control-G),来隐含文件或目录。用“find”程序可以查找到这些隐含文件。

例如:

[root@deep]# find / -name ".. " -print -xdev
[root@deep]# find / -name ".*" -print -xdev | cat -v

同时也要注意象“.xx”和“.mail”这样的文件名的。(这些文件名看起来都很象正常的文件名)

36. 查找所有SUID/SGID位有效的文件

系统中SUID和SGID文件很有可能成为安全隐患,必须被严密监控。因为这些程序都给执行它的用户一些特权,所以要确保危险的SUID程序没有被安装。

黑客常常利用SUID程序,故意留下一个SUID的程序作为下次进入系统的后门。注意系统中所有的SUID和SGID的程序,并跟踪它们,这样你就可以尽早发现入侵者。

用下面的命令查找系统中所有的SUID和SGID程序:

[root@deep]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} ;

注意:参考《第九章 安全软件》中关于sXid的介绍,sXid可以为你每天自动的完成这项任务,并用email报告结果。

37. 查找任何人都有写权限的文件和目录

如果黑客获得并改变了一些系统文件,这些系统文件就会成为安全漏洞。任何人都有写权限的目录也同样有危险,因为黑客可以根据他们的需要自由地添加或删除文件。在正常情况下有些文件是可写的,包括一些“/dev”目录下的文件和符号连接。

在系统中定位任何人都有写权限的文件和目录用下面的命令:

[root@deep]# find / -type f ( -perm -2 -o -perm -20 ) -exec ls -lg {} ;
[root@deep]# find / -type d ( -perm -2 -o -perm -20 ) -exec ls -ldg {} ;

注意:象Tripware软件这样的文件和目录完整性的检查器能够扫描、管理和方便地发现被改变过的任何人都有写权限的文件。参考《第九章 安全软件》以获得关于Tripware的更多信息。

38. 查找没有主人的文件

发现没有主人的文件就意味着有黑客入侵你的系统了。不能允许没有主人的文件存在。如果在系统中发现了没有主人的文件或目录,先查看它的完整性,如果一切正常,给它一个主人。有时候卸载程序可能会出现一些没有主人的文件或目录,在这种情况下可以把这些文件和目录删除掉。

定位系统中没有主人的文件用下面的命令:

[root@deep]# find / -nouser -o -nogroup

注意:不用管“/dev”目录下的那些文件。

39. 查找“.rhosts”文件

查找“.rhosts”文件是日常管理工作的一部分,因为这些文件不允许在系统中存在。记住,黑客有可能只要有系统中的一个帐号就可能入侵整个网络。

可以用下面的命令定位系统中的“.rhosts”文件:

[root@deep]# find /home -name .rhosts

也可以用一个cron任务定期地查看、报告和删除$HOME/.rhosts文件。同时,也必须让用户知道你会经常地进行这种审核。

用root身份在“/etc/cron.daily”目录下,创建“find_rhosts_files”脚本文件(touch /etc/cron.daily/find_rhosts_files),并在脚本文件中加入下面几行:

#!/bin/sh
/usr/bin/find /home -name .rhosts | (cat < This is an automated report of possible existent “.rhosts” files on the server
deep.openarch.com, generated by the find utility command.
New detected “.rhosts” files under the “/home” directory include:
EOF
cat
) | /bin/mail -s "Content of .rhosts file audit report" root

然后,让这个脚本可执行,把所有者和组设置成“root”:

[root@deep]# chmod 755 /etc/cron.daily/find_rhosts_files
[root@deep]# chown 0.0 /etc/cron.daily/find_rhosts_files

每一天都会有一份主题为“Content of .rhosts file audit report”的邮件发给“root”,报告新发现的“.rhosts”文件。

40. 系统已经被黑客控制

如果你确信系统已经被黑客控制,赶快联系CERT? Coordination Center或FIRST(Forum of Incident Response and Security Teams)。

电子邮件:cert@cert.org

CERT热线电话:(+1) 412-268-7090

传真:(+1) 412-268-6989

CERT/CC的人员在工作日回答问题的时间是:8:00 a.m. – 8:00 p.m. EST (GMT –5)/EDT (GMT –4))。在其它时间或者节假日他们也接收紧急求救电话。


收藏至ViVi】【发表意见】【在线英语词典】【在线英语广播】【打印】【关闭

文档更新时间: 2003-7-27 21:27:00
检索关键字:病毒,漏洞
文档来源:不详
万千英语族转载此文档旨在传达更多资讯之目的.若您认为涉及版权问题请跟我们联系.

CopyLeft©2000-2005 万千英语族 All Rights Left 
关于我们 网站地图 历史上的今天 For Kids 请帮助我们提高