[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ 下一页 ]
以下是 Debian 2.2 GNU/Linux 系统安装后的逐步强化过程。这是一种可能的强化方法,侧重于网络服务的强化。包含此步骤是为了展示您在配置期间可能使用的完整过程。另请参阅配置检查清单,附录 B。
安装系统,请考虑本文档前面包含的关于分区的信息。完成基本安装后,进入自定义安装。不要选择任务包。选择 shadow 密码。
在执行 [I]安装之前,使用 dselect
删除所有不需要但已选定的软件包。保持系统所需的最低软件包数量。
从 security.debian.org 上提供的最新软件包更新所有软件,如前面 执行安全更新,第 4.2 节 中所述。
实施本手册中关于用户配额、登录定义和 lilo
的建议
列出当前在您的系统上运行的服务。尝试
$ ps aux $ netstat -pn -l -A inet # /usr/sbin/lsof -i | grep LISTEN
您需要安装 lsof-2.2
才能使第三个命令工作(以 root 身份运行)。您应该意识到 lsof
可以将单词 LISTEN 翻译成您的语言环境设置。
为了删除不必要的服务,首先确定哪个软件包提供了该服务以及它是如何启动的。这可以通过检查监听套接字的程序来完成。以下 shell 脚本使用 lsof
和 dpkg
程序来完成此操作
#!/bin/sh # FIXME: this is quick and dirty; replace with a more robust script snippet for i in `sudo lsof -i | grep LISTEN | cut -d " " -f 1 |sort -u` ; do pack=`dpkg -S $i |grep bin |cut -f 1 -d : | uniq` echo "Service $i is installed by $pack"; init=`dpkg -L $pack |grep init.d/ ` if [ ! -z "$init" ]; then echo "and is run by $init" fi done
一旦找到任何不需要的服务,请删除关联的软件包(使用 dpkg --purge
),或者使用 update-rc.d
禁用该服务在启动时自动启动(请参阅 禁用守护进程服务,第 3.6.1 节)。
对于 inetd 服务(由超级守护进程启动),请使用以下命令检查 /etc/inetd.conf
中启用了哪些服务
$ grep -v "^#" /etc/inetd.conf | sort -u
然后通过注释掉 /etc/inetd.conf
中包含它们的行、删除软件包或使用 update-inetd
来禁用那些不需要的服务。
如果您有包装服务(使用 /usr/sbin/tcpd
的服务),请检查 /etc/hosts.allow
和 /etc/hosts.deny
文件是否已根据您的服务策略进行配置。
如果服务器使用多个外部接口,根据服务类型,您可能希望限制服务仅监听特定的接口。例如,如果您只想进行内部 FTP 访问,请使 FTP 守护进程仅监听您的管理接口,而不是所有接口(即 0.0.0.0:21)。
重新启动机器,或切换到单用户模式,然后使用以下命令返回到多用户模式
# init 1 (....) # init 2
检查现在可用的服务,如有必要,重复上述步骤。
现在安装需要的服务(如果您尚未安装),并正确配置它们。
使用以下 shell 命令来确定每个可用服务以哪个用户身份运行
# for i in `/usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u`; \ > do user=`ps ef |grep $i |grep -v grep |cut -f 1 -d " "` ; \ > echo "Service $i is running as user $user"; done
考虑将这些服务更改为特定的用户/组,并可能 chroot
它们以提高安全性。您可以通过更改启动服务的 /etc/init.d
脚本来完成此操作。Debian 中的大多数服务都使用 start-stop-daemon
,它具有用于实现此目的的选项(--change-uid
和 --chroot
)。关于服务的 chroot
需要注意:您可能需要将提供服务软件包(使用 dpkg -L
)安装的所有文件以及它依赖的任何软件包都放在 chroot
环境中。关于为 ssh
程序设置 chroot
环境的信息,请参见 SSH
的 Chroot
环境,附录 G。
重复上述步骤,以检查是否仅运行了所需的服务,以及它们是否以所需的用户/组组合运行。
测试已安装的服务,以查看它们是否按预期工作。
使用漏洞评估扫描器(如 nessus
)检查系统,以确定系统中的漏洞(例如,配置错误、旧服务或不需要的服务)。
安装网络和主机入侵检测措施,如 snort
和 logcheck
。
重复网络扫描器步骤,并验证入侵检测系统是否正常工作。
对于真正偏执的人,还可以考虑以下事项
向系统添加防火墙功能,仅接受传入的针对所提供服务的连接,并限制仅允许授权的传出连接。
使用网络扫描器通过新的漏洞评估重新检查安装。
使用网络扫描器,检查系统到外部主机的出站连接,并验证不需要的连接是否不会流出。
FIXME:此过程考虑了服务强化,但未考虑用户级别的系统强化,包括关于检查用户权限、SETUID 文件以及使用 ext2 文件系统冻结系统中更改的信息。
[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ 下一页 ]
Debian 手册安全指南
版本:3.13,Sun,2012 年 4 月 8 日 02:48:09 +0000jfs@debian.org