|
简介
维护一个完全安全的系统是不可能的。然而,只要勤奋,则有可能使 Linux 机器足够安全,并让大多数偶尔出现的骇客、脚本小子(script-kiddies)以及其它的“坏家伙”止步而去骚扰其他人。请记住:仅仅遵循本教程不会产生一个安全的系统。相反,我们希望您接触到主要主题的多个方面,并向您提供一些有关怎么样入门的有用示例。
Linux 系统安全性可分为两个部分:内部安全性和外部安全性。内部安全性指预防用户无意或恶意地破坏系统。外部安全性指防止未授权用户获得对系统的访问。
本章把首先介绍内部安全性,然后介绍外部安全性,最后介绍一些常规指导原则和技巧。
日志文件的文件权限
内部安全性可以是很大的任务,这要看您对用户的信任程度。这里介绍的指导原则是设计用来防止偶然用户访问敏感信息和防止不公平地使用系统资源。
至于文件权限,您可能希望修改以下三种情况的权限:
首先,/var/log 中的日志文件不需要是所有人都可以读取的。没有理由让非 root 用户窥视日志。为了创建具有适当权限的日志。
root 用户其它文件的文件权限
其次,root 用户的点文件对于普通用户应是不可读的。检查 root 用户主目录中的文件(ls -la)以确保它们受到适当的保护。甚至可以使整个目录仅对 root 用户可读:
# cd
# pwd
/root
# chmod 700 .
|
用户文件的文件权限
最后,用户文件在缺省情况下通常被创建为所有人可读。那可能不是用户所期望的,而且它当然不是最好的策略。应该使用与下面类似的命令在 /etc/profile 中设置缺省的 umask:
if [ "$UID" = 0 ]; then
# root user; set world-readable by default so that
# installed files can be read by normal users.
umask 022
else
# make user files secure unless they explicitly open them
# for reading by other users
umask 077
fi
|
应该查询 umask(2) 和 bash(1) 手册页以获取有关设置 umask 的更多信息。请注意:umask(2) 手册页涉及 C 函数,但它所包含的信息也适用于 bash 命令。
查找 SUID/SGID 程序
寻求 root 访问权的恶意用户总是会在系统上寻找设置了 SUID 或 SGID 位的程序。就象我们在 LPI 101 系列第 3 部分中讨论的那样,这些位使程序始终作为拥有该文件的用户或组运行。有时这是程序正确运行所必需的。问题是任何程序都可能包含允许用户在不正确地使用程序时获得特权的错误。
应该仔细考虑每个程序以确定是否需要把其 SUID 或 SGID 位打开。系统上有些 SUID/SGID 程序可能是根本不需要的。
要搜索具有这样性质的程序,可使用 find 命令。例如,可以在 /usr 目录中启动对 SUID/SGID 程序的搜索:
# cd /usr
# find . -type f -perm +6000 -xdev -exec ls {} \;
-rwsr-sr-x 1 root root 593972 11-09 12:47 ./bin/gpg
-r-xr-sr-x 1 root man 38460 01-27 22:13 ./bin/man
-rwsr-xr-x 1 root root 15576 09-29 22:51 ./bin/rcp
-rwsr-xr-x 1 root root 8256 09-29 22:51 ./bin/rsh
-rwsr-xr-x 1 root root 29520 01-17 19:42 ./bin/chfn
-rwsr-xr-x 1 root root 27500 01-17 19:42 ./bin/chsh
-rwsr-xr-x 1 lp root 8812 01-15 23:21 ./bin/lppasswd
-rwsr-x--- 1 root cron 10476 01-15 22:16 ./bin/crontab
|
在这个清单中,我已经发现了需要更仔细检查的侯选对象:lppasswd 是 CUPS 打印软件分发版的一部分。因为没有在系统上提供打印服务,所以我会考虑除去 CUPS,那也会除去 lppasswd 程序。lppasswd 中可能没有危及安全性的错误,但为什么要在不使用的程序上冒险呢?同样地,应该关闭所有不使用的服务。您总是可以在需要时再启用它们。
用 ulimit 设置用户限制
bash 中的 ulimit 命令提供了限制特定用户的资源使用情况的方法。一旦限制降低,则在进程的生命期内无法提高该限制。此外,该限制会被所有子进程继承。结果是:可以在 /etc/profile 中调用 ulimit,而限制把以不能撤消的方式应用于所有用户(假设用户正在运行 bash 或另一个 shell,该 shell 在登录时运行 /etc/profile)。
共3页: 上一页 1 [2] [3] 下一页
|