Debian 安全手册
脚注

1

在某个时候,它被“Linux 安全知识库”所取代。Debian 也通过 lskb 软件包提供了这份文档。现在它又以 Lasg 的形式回来了。

2

一个关于使用 /tmp 进行此类攻击的很好的例子在 The mysteriously persistently exploitable program (contest)The mysteriously persistently exploitable program explained 中有详细描述(请注意,该事件与 Debian 相关)。这基本上是一种攻击,本地用户通过创建一个硬链接来隐藏一个有漏洞的 setuid 应用程序,从而有效地避免系统管理员对二进制文件本身进行的任何更新(或删除)。Dpkg 最近已修复以防止这种情况(参见 225692),但如果分区设置不正确,其他 setuid 二进制文件(不受包管理器控制)仍有风险。

3

自从 Debian GNU/Linux 4.0,代号 etch

4

在 Debian 3.0 及更早版本中,默认情况下启用了一些 inetd 服务,因此足迹没有那么紧凑。Debian 2.2 的标准安装也安装了 NFS 服务器和 telnet 服务器。

5

如果您要设置开发 chroot,例如,这是理想的。

6

例如,在 Debian woody 中,它大约是 400-500 Mbs,试试这个

       $ size=0
       $ for i in `grep -A 1 -B 1 "^Section: base" /var/lib/dpkg/available |
       grep -A 2 "^Priority: required" |grep "^Installed-Size" |cut -d : -f 2
       `; do size=$(($size+$i)); done
       $ echo $size
       47762

7

许多入侵仅仅是为了获得访问资源的权限以进行非法活动(拒绝服务攻击、垃圾邮件、恶意 ftp 服务器、dns 污染...),而不是从受损系统中获取机密数据。

8

您可以使用 equivs (在另一个系统上) 创建一个虚拟软件包。

9

etch 及更高版本中

10

即使库已从文件系统中删除,但 inode 也不会被清除,直到没有程序具有指向它们的打开的文件描述符。

11

根据您的 lsof 版本,您可能需要使用 $8 而不是 $9

12

例如,由于 NSS 身份验证问题,从 libc6 2.2.x 升级到 2.3.x 时就发生了这种情况,请参阅 http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276.html

13

除非您安装了像 linux-image-2.6-686 这样的内核元软件包,它总是会为内核版本和给定的架构拉取最新的内核次要修订版本。

14

一个名为 testnet 的示例脚本在 Remotely rebooting Debian GNU/Linux machines 文章中可用。一个更详细的网络连接测试脚本在 Testing network connectivity 文章中可用。

15

设置串行控制台超出了本文档的范围,有关更多信息,请阅读 Serial HOWTORemote Serial Console HOWTO

16

/etc/securetty 是一个属于 login 软件包的配置文件。

17

或者在 GNU/FreeBSD 中是 ttyvX,在 GNU/KNetBSD 中是 ttyE0

18

或者在 GNU/Hurd 中是 comX,在 GNU/FreeBSD 中是 cuaaX,在 GNU/KNetBSD 中是 ttyXX

19

woody 中的默认配置包括 12 个本地 tty 和 vc 控制台,以及 console 设备,但不允许远程登录。在 sarge 中,默认配置为 tty 和 vc 控制台提供了 64 个控制台。如果您不使用那么多控制台,可以安全地删除它。

20

查找 getty 调用。

21

其中一些包括软件包管理器 dpkg,因为安装 (post,pre) 和删除 (post,pre) 脚本位于 /var/lib/dpkg/ 和 Smartlist

22

但是,此依赖项在 Debian 3.0 软件包中尚未修复。请参阅 Bug #112965

23

libpam-chroot 尚未经过全面测试,它确实适用于 login,但可能不容易为其他程序设置环境

24

将 HISTSIZE 设置为非常大的数字可能会在某些 shell 下引起问题,因为历史记录保存在每个用户会话的内存中。如果您将其设置为足够高的值并备份用户的历史记录文件(如果您出于某种原因需要用户的所有历史记录),您可能会更安全

25

如果没有 append-only 标志,用户将能够通过运行 > .bash_history 来清空历史文件的内容

26

Tty 为本地登录以及通过 ssh 和 telnet 的远程登录而生成

27

/etc/adduser.conf (USERGROUPS=yes) 中定义的那样。如果您将此值设置为 no,则可以更改此行为,尽管不建议这样做

28

Chpasswd 无法处理 MD5 密码生成,因此在使用它之前需要以加密形式给出密码,并带有 -e 选项。

29

在较旧的 Debian 版本上,您可能需要这样做

       $ apt-cache showpkg libwrap0 | egrep '^[[:space:]]' | sort -u | \
             sed 's/,libwrap0$//;s/^[[:space:]]\+//'

30

请务必在此处使用大写字母,因为 spawn 将不起作用

31

有一篇关于它的非常好的文章,由 Lance Spitzner 撰写

32

请注意,此补丁与 Debian 2.4 内核源代码包中已包含的补丁冲突。您需要使用标准的 vanilla 内核。您可以使用以下步骤执行此操作

     # apt-get install kernel-source-2.4.22 kernel-patch-debian-2.4.22
     # tar xjf /usr/src/kernel-source-2.4.22.tar.bz2
     # cd kernel-source-2.4.22
     # /usr/src/kernel-patches/all/2.4.22/unpatch/debian

有关更多信息,请参阅 #194225, #199519, #206458, #203759, #204424, #210762, #211213, 以及 debian-devel 上的讨论

33

事实上,它们非常常见,以至于它们已成为每年报告的安全漏洞的 20% 的基础,正如 ICAT 漏洞数据库的统计数据 所确定的那样

34

在以前的版本中,checksecurity 集成到 cron 中,文件是 /etc/cron.daily/standard

35

在 Debian 中,kernel-source-version 软件包将源代码复制到 /usr/src/kernel-source-version.tar.bz2,只需将 version 替换为您已安装的任何内核版本源代码

36

要重现这一点(Felix von Leitner 在 Bugtraq 邮件列表中提供的示例)

        host a (eth0 connected to eth0 of host b):
          ifconfig eth0 10.0.0.1
          ifconfig eth1 23.0.0.1
          tcpserver -RHl localhost 23.0.0.1 8000 echo fnord
     
        host b:
          ifconfig eth0 10.0.0.2
          route add 23.0.0.1 gw 10.0.0.1
          telnet 23.0.0.1 8000

但是,它似乎不适用于绑定到 127.0.0.1 的服务,您可能需要使用原始套接字编写测试。

37

Matthew G. Marsh 在 Bugtraq 线程中描述了可以通过路由更改此行为的事实

     eth0 = 1.1.1.1/24
     eth1 = 2.2.2.2/24
     
     ip rule add from 1.1.1.1/32 dev lo table 1 prio 15000
     ip rule add from 2.2.2.2/32 dev lo table 2 prio 16000
     
     ip route add default dev eth0 table 1
     ip route add default dev eth1 table 2

38

在 Bugtraq 的线程 http://www.linuxvirtualserver.org/~julian/#hiddenhttp://www.fefe.de/linux-eth-forwarding.diff 中描述了针对此行为的一些可用补丁。

39

如果攻击者与被攻击主机不在同一广播域(同一网络)中,则在配置 IP 地址绑定后,攻击者可能在拉取访问权限时遇到许多问题。如果攻击通过路由器,则答案可能很难返回到某个地方。

40

如果 Gdm 在命令行上找到 -query-indirect,则不会附加 -nolisten tcp,因为查询将不起作用。

41

要检索 Debian 中可用的邮件守护程序列表,请尝试

     $ apt-cache search mail-transport-agent

该列表将不包括 qmail,它仅作为源代码在 qmail-src 软件包中分发。

42

支持 Debian 中这些协议的服务器/守护程序列表可以使用以下命令检索

     $ apt-cache search pop3-server
     $ apt-cache search imap-server

43

请注意,根据您的 bind 版本,您可能没有 -g 选项,特别是如果您在 sarge 中使用 bind9(9.2.4 版本)。

44

此设置尚未针对 Bind 的新版本进行测试。

45

除非您在调用 dpkg 时使用 instdir 选项,否则 chroot jail 可能会稍微复杂一些。

46

它确实尝试在最低权限下运行它们,其中包括使用守护程序自己的用户而不是以 root 身份运行它们。

47

自内核版本 2.4 (它是 Debian 3.0 中的默认内核) 起可用。以前的内核版本 (2.2,在更旧的 Debian 版本中可用) 使用 ipchainsipchainsiptables 之间的主要区别在于后者基于有状态数据包检测,这提供了更安全(且更易于构建)的过滤配置。使用 2.0 内核系列的较旧(且现在不受支持)的 Debian 发行版需要相应的内核补丁。

48

与其他操作系统中的个人防火墙不同,Debian GNU/Linux (尚未) 提供可以制定规则以限制每个进程或用户的防火墙生成接口。但是,iptables 代码可以配置为执行此操作(请参阅 iptables(8) 手册页中的 owner 模块)。

49

翻译版本最多提供十种不同的语言。

50

完整的 capability questionnaire 在 CVE 可用

51

一些操作系统已经受到自动更新问题的困扰,例如 Mac OS X 软件更新漏洞

待修复:可能 Internet Explorer 漏洞处理证书链对 Microsoft Windows 上的安全更新有影响。

52

较旧的版本,例如 Debian 3.1 sarge,可以通过使用此软件包管理工具的反向移植版本来使用此功能

53

直到开发出自动机制为止。

54

从技术上讲,这是一个 ASCII 装甲的分离 gpg 签名。

55

或者已污染您的 DNS,或者正在欺骗服务器,或者已替换您正在使用的镜像中的文件等。

56

"ziyi" 是用于在 Debian 服务器上签名的工具的名称,该名称基于 中国女演员章子怡 的名字。

57

并非所有 apt 存储库密钥都由另一个密钥签名。也许设置存储库的人没有另一个密钥,或者他们可能不愿意使用他们的主密钥签署这样的角色密钥。有关为存储库设置密钥的信息,请参阅 检查非 Debian 源的版本,第 7.5.4 节

58

要么是因为您正在使用 stable、sarge 版本或更旧的版本,要么是因为您不想使用最新的 apt 版本,尽管我们非常感谢对其进行测试。

59

其中一些在安装 harden-remoteaudit 软件包时提供。

60

如果您使用最后一个软件包并且正在运行官方 Debian,则数据库将不会使用安全更新进行更新。您应该使用 clamav-freshclamclamav-getfiles 生成新的 clamav-data 软件包,或者从维护者位置更新

       deb http://people.debian.org/~zugschlus/clamav-data/ /
       deb-src http://people.debian.org/~zugschlus/clamav-data/ /

61

实际上,F-prot 防病毒软件有一个安装程序包,它是非自由软件,但对家庭用户是 gratis 的,称为 f-prot-installer。但是,此安装程序只是下载 F-prot 的软件 并将其安装在系统中。

62

有关如何配置 gnupg 的更多示例,请查看 /usr/share/doc/mutt/examples/gpg.rc

63

一些讨论这些缺点的相关线程包括 http://lists.debian.org/debian-mentors/2004/10/msg00338.htmlhttp://lists.debian.org/debian-devel/2004/05/msg01156.html

64

这最终可能会作为 debhelper 中的 dh_adduser 引入。请参阅 #81967, #291177#118787

65

您甚至可以为其提供 SELinux 策略

66

您可能还想使用 --quiet (-q) 选项来减少 apt-get 的输出,如果未安装任何软件包,这将停止生成任何输出。

67

请注意,某些软件包可能使用 debconf,并且由于软件包在配置期间要求用户输入,更新将停止。

68

这是一个常见问题,因为许多用户希望在维护稳定系统的同时将某些软件包更新到 unstable 以获得最新功能。这种需求是由于某些项目的演变速度快于 Debian stable 版本之间的时间。

69

一种简单的方法是使用 Live CD,例如 Knoppix Std,它既包括文件完整性工具,也包括系统的完整性数据库。

70

有超过 28 种功能,包括: CAP_BSET, CAP_CHOWN, CAP_FOWNER, CAP_FSETID, CAP_FS_MASK, CAP_FULL_SET, CAP_INIT_EFF_SET, CAP_INIT_INH_SET, CAP_IPC_LOCK, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE, CAP_MKNOD, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_BOOT, CAP_SYS_CHROOT, CAP_SYS_MODULE, CAP_SYS_NICE, CAP_SYS_PACCT, CAP_SYS_PTRACE, CAP_SYS_RAWIO, CAP_SYS_RESOURCE, CAP_SYS_TIME, 和 CAP_SYS_TTY_CONFIG。所有这些功能都可以被停用来强化您的内核。

71

您不需要安装 lcap 来执行此操作,但这比手动设置 /proc/sys/kernel/cap-bound 更容易。

72

您通常会使用桥接防火墙,以便防火墙本身不可检测,请参阅 设置桥接防火墙,附录 D

73

如果您有冒险精神,您可以登录系统并保存有关所有正在运行的进程的信息(您将从 /proc/nnn/ 中获得很多信息)。即使攻击者已从磁盘中删除了可执行文件,也有可能从内存中获取整个可执行代码。然后拔下电源线。

74

事实上,这是用于为 Gibraltar 项目构建 CD-ROM 的工具(基于 Debian 发行版的 Live CD-ROM 上的防火墙)。

75

这是 CERT 的一些列表,要获取完整列表,请查看 FIRST 成员团队信息 (FIRST 是事件响应和安全团队论坛): AusCERT (澳大利亚), UNAM-CERT (墨西哥) CERT-Funet (芬兰), DFN-CERT (德国), RUS-CERT (德国), CERT-IT (意大利), JPCERT/CC (日本), UNINETT CERT (挪威), HR-CERT (克罗地亚) CERT Polskay (波兰), RU-CERT (俄罗斯), SI-CERT (斯洛文尼亚) IRIS-CERT (西班牙), SWITCH-CERT (瑞士), TWCERT/CC (台湾), 和 CERT/CC (美国).

76

如果使用 chroot,请非常小心,因为如果二进制文件使用内核级漏洞来提升其权限,它仍然可能感染您的系统

77

例如,根据一些数据,Windows NT 可能看起来比 Linux 更安全,这是一个有疑问的断言。毕竟,与 Microsoft 的 Windows NT 相比,Linux 发行版通常提供更多的应用程序。David A. Wheeler 在 为什么开源软件/自由软件 (OSS/FS)?看看数字! 中更好地描述了此计算漏洞问题

78

尽管某些发行版(例如 Red Hat 或 Mandrake)也在其标准安装中考虑了安全性,方法是让用户选择安全配置文件,或使用向导来帮助配置个人防火墙,但这并没有削弱这一事实。

79

请注意,这是“隐蔽式安全”,从长远来看可能不值得付出努力。

80

请小心,因为这将遍历您的整个系统。如果您有很多磁盘和分区,您可能希望缩小其范围。

81

已经做出了解密决定,在 GR-2005-002 中投票通过,这可能会在未来使一些帖子可用,但是。

82

通常,所需的软件包将通过依赖项安装

83

它也可以从 http://www.cert.org/kb/acid/, http://acidlab.sourceforge.nethttp://www.andrew.cmu.edu/~rdanyliw/snort/ 下载。

84


自版本 9.2.1-5 起。也就是说,自 Debian sarge 版本起。

85

例如 knockd。或者,您可以打开另一个控制台,让系统要求确认另一端是否有人,如果没有给出确认,则重置防火墙链。以下测试脚本可能有用

     #!/bin/bash
     
     while true; do
         read -n 1 -p "Are you there? " -t 30 ayt
         if [ -z "$ayt" ] ; then
             break
         fi
     done
     
     # Reset the firewall chain, user is not available
     echo
     echo "Resetting firewall chain!"
     iptables -F
     iptables -P INPUT ACCEPT
     iptables -P FORWARD ACCEPT
     iptables -P OUTPUT ACCEPT
     exit 1

当然,在将系统投入生产之前,您应该禁用任何后门。

86

您可以使用 debug 选项使其将模块的进度发送到 authpriv.notice facility

87

您可以使用以下用于 makejail 的 python 定义创建一个非常有限的 bash 环境,只需创建目录 /var/chroots/users/foo 和一个包含以下内容的文件并将其命名为 bash.py

     chroot="/var/chroots/users/foo"
     cleanJailFirst=1
     testCommandsInsideJail=["bash ls"]

然后运行 makejail bash.py 以在 /var/chroots/users/foo 创建用户环境。要测试环境,请运行

     # chroot /var/chroots/users/foo/ ls
     bin  dev  etc  lib  proc  sbin  usr

88

在某些情况下,您可能需要 /dev/ptmx/dev/pty* 设备以及 /dev/pts/ 子目录。如果在 chrooted 环境的 /dev 目录中运行 MAKEDEV,则应该足以创建它们(如果它们不存在)。如果您使用的是动态创建设备文件的内核(版本 2.6),您将需要自己创建 /dev/pts/ 文件并授予它们适当的权限。

89

如果您使用的是实现强制访问控制 (RSBAC/SElinux) 的内核,则只需授予 sshd 用户权限以进行 chroot() 系统调用,即可避免更改此配置。

90

请注意,没有 SETUID 文件。这使得远程用户更难逃脱 chroot 环境。但是,这也阻止了用户更改他们的密码,因为 passwd 程序无法修改文件 /etc/passwd/etc/shadow


Debian 安全手册

版本:3.13, 星期日, 2012 年 4 月 8 日 02:48:09 +0000

Javier Fernández-Sanguino Peña jfs@debian.org
作者,第 1.1 节