
<chapt id="sec-tools">Debian 中的安全工具

<p>FIXME: 需要更多内容.

<p>Debian 也提供了很多安全工具, 使得 Debian 计算机可以满足安全的需要. 
这种需要包括通过防火墙保护信息系统(数据包级或应用级), 入侵检测(基于主机的和网络的), 风险评估, 防病毒, 私有网络,等等.

<p>从 Debian 3.0(<em>woody</em>) 开始, 发行版就具有了将密码软件集成到主发行版中的特点. 
缺省安装包括 OpenSSH 和 GPG(GNU Privacy Guard), 在浏览器, web服务器, 数据库, 等等中也出现了高强度加密. 
计划在未来的发行版中, 进一步集成数据加密. 由于美国的出口限制, 这种软件是不允许随主发行版发布的, 只能包含在 non-US 站点上.

<sect id="vuln-asses">远程风险评估工具
<p>Debian提供的用于完成远程有:
<footnote>
其中一些可以通过安装 <package>harden-remoteaudit</package> 软件包获取.
</footnote>
<list>
<item>nessus
<item>raccess
<item>whisker 
<item>nikto (whisker's replacement)
<item>bass (non-free)
<item>satan (non-free)
<!-- Will never be available, I uploaded it but their license is not proper
<item>saint (non-free)
-->
<!-- Might be available in the future since it holds the same license as satan
<item>sara (non-free)
-->
</list>

<p>显然, 最完善和最新的工具是 <package>nessus</package>, 它由一个GUI客户端(<package>nessus</package>), 
和一个负责攻击的服务器端(<package>nessusd</package>)组成. Nessus 包括许多系统的远程漏洞如网络工具, 
ftp 服务器, www 服务器, 等等. 最新版本甚至可以解析网站, 并设法发现可以用于攻击的交互式页面. 
并且还提供(没有包含在 Debian 中)用于连接管理服务器的 java 和 Win32 客户端. 

<p>注意, 如果您使用的是 woody, 则 Nessus 软件包的版本确实老了点
(参阅 bug <url id="http://bugs.debian.org/183524" name="#183524">. 
将一个 unstable 中的版本移植到 woody 中并不困难, 但是如果觉得对于您来说有点困难, 那么
您可以考虑使用由 co-maintainers 移植的软件包, 可以从 <url
id="http://people.debian.org/~jfs/nessus/"> (版本可能不如 <em>unstable</em>提供的新)处获取.

<p><package>Whisker</package> 是一个 web-only 包括 anti-IDS 策略(其中很多不在是<em>anti-IDS</em>)的风险评估扫描器. 
这是一款最好的 cgi 扫描器. 可以用于扫描 www 服务器并给出一系列的攻击, 用于扫描的数据库可以很容易的修改来提供新的信息.

<p>与在执行时使用的审计工具相比, <package>Bass</package> (Bulk Auditing Security Scanner) 
和 <package>Satan</package> (用于网络分析的安全审核工具)被认为更类似于"概念验证"程序. 
这两个软件都相当古老, 并不再被更新. 
但是 SATAN 是第一个提供一个简单的(GUI)方法进行风险评估的工具, 而 Bass 仍然是一个高性能的评测工具.

<sect>网络扫描器工具
<p>Debian 确实提供了一些工具用于远程扫描主机(并不是风险评估). 
这些工具在某些情况下被用作风险评估扫描器, 而不是当做攻击工具用于扫描以发现远程可用服务. 
Debian 当前提供:
<list>
<item>nmap
<item>xprobe
<item>queso
<item>knocker
<item>isic
<item>icmpush
<item>nbtscan (for NetBIOS audits)
<item>fragrouter
<item>strobe (在 <package>netdiag</package> 软件包中)
<item>hping2 (<em>注意:</em> 太旧了)
</list>

<!--
Ettercap is not included since its a sniffing tool not a remote probe 
-->

<p>其中 <package>queso</package> 和 <package>xprobe</package> 
仅仅提供远程操作系统探测(使用 TCP/IP 指纹), <package>nmap</package> 和 
<package>knocker</package> 不但提供操作系统探测, 还提供远程主机的端口扫描功能. 
另一方面, <package>hping2</package> 和 <package>icmpush</package> 可用于远程 ICMP 攻击技术.

<p>专门为 Netbios 网络设计的 <package>nbtscan</package> 可以用于扫描IP网络, 
并从启用 SMB 的服务器获取名称信息, 包括:用户名,网络名,MAC地址...

<p>另一方面, <package>fragrouter</package> 可以用于测试网络的入侵检测系统, 
检查攻击者是否能绕过 NIDS.

<p>FIXME: 检查 <url id="http://bugs.debian.org/153117" name="Bug
#153117"> (ITP fragrouter) 是否包括了这些内容.


<p>FIXME 增加基于
<url id="http://www.giac.org/practical/gcux/Stephanie_Thomas_GCUX.pdf"
name="Debian Linux Laptop for Road Warriors"> 的信息, 其描述了如何使用
 Debian 和笔记本来扫描无线(803.1)网络(连接不存在了).

<sect>内部审计
<p>当前, 在 Debian 系统中只有 <package>tiger</package> 工具可用于完成主机的内部(也称作白盒)审计, 
以确定文件系统是否设置正确, 这个过程进行主机监听, 等等.

<sect>源代码的审核
<p>Debian 提供了三个软件包用于完成 C/C++ 源代码程序的审核, 以及发现程序可能导致潜在安全问题的错误:
<list>
<item>flawfinder
<item>rats
<item>splint
</list>

<sect id="vpn">虚拟专用网

<p>一个虚拟专用网(VPN)至少由两台以上计算机系统组成, 典型的通过公网访问私有网络, 
实现在公网的安全通信. VPNs 可能是将单机连入一个私有网络(客户端-服务器), 
也可能是将一个远程局域网与一个私有网络相连(服务器-服务器). VPNs 通常包括使用加密, 
远程用户或主机的强认证, 和隐藏私有网络拓扑结构的方法.

<p>Debian 提供一些软件包用于设置虚拟专用网的加密:

<list>

<item><package>vtun</package>
<item><package>tunnelv</package>
<item><package>cipe</package>
<item><package>vpnd</package>
<item><package>tinc</package>
<item><package>secvpn</package>
<item><package>pptpd</package>
<item><package>freeswan</package>已被废弃, 和 superceeded
<item><package>openswan</package> (<url id="http://www.openswan.org/">)

</list>

<P>FIXME: 更新这部分内容, 因为这是基于 FreeSWAN 撰写的. 检查 Bug #237764 和 Message-Id:
  	 &lt;200412101215.04040.rmayr@debian.org&gt;.

<p>软件包 FreeSWAN 可能是最佳的整体选择，因为它承诺几乎支持所有的IP安全协议, IPsec (RFC 2411). 
然而,上边列举的其它软件包也可以帮助您快速获取一个安全通道. 点对点隧道协议是微软的私有VPN协议. 
在 linux 下也支持此协议, 但是众所周知其存在着严重的安全问题.

<p>更多信息参 <url
id="http://www.tldp.org/HOWTO/VPN-Masquerade-HOWTO.html"
name="VPN-Masquerade HOWTO"> (覆盖 IPsec 和 PPTP), <url
id="http://www.tldp.org/HOWTO/VPN-HOWTO.html" name="VPN HOWTO">
(covers PPP over SSH), 和 <url
id="http://www.tldp.org/HOWTO/mini/Cipe+Masq.html" name="Cipe
mini-HOWTO">, 和 <url
id="http://www.tldp.org/HOWTO/mini/ppp-ssh/index.html" name="PPP
and SSH mini-HOWTO">.

<p><url id="http://yavipin.sourceforge.net/" name="Yavipin"> 也很有价值, 但是好象仍然没有为 Debian GNU 制作的软件包.

<sect1>点对点隧道

<p>如果您想为混合环境(微软操作系统和 linux 客户端)提供隧道服务, 
并且不能选 IPsec(它是基于  Windows 2000 和 Windows XP 的), 那么可以使用 
<package>pptpd</package> 软件包中提供的 <em>PoPToP</em> (点对点隧道服务).

<p>如果您想使用 PPP 包中提供的微软的认证和加密服务, 注意下边的FAQ:

<example>
如果您想使用微软兼容MSCHAPv2/MPPE认证和加密, 则只能使用 PPP 2.3.8 .
因为 MSCHAPv2/MPPE 提供的最新补丁(19990813)支持 PPP 2.3.8 .
如果您不需要微软兼容的认证/加密, 则任何一个 2.3.x PPP 源码都是不错的.
</example>

<p>然而, 您还必须使用 <package>kernel-patch-mppe</package> 软件包提供的内核补丁才行, 它为 pppd 提供了 pp_mppe 模块.

<p>应当考虑到, 在 ppptp 中的加密需要您明文保存密码, MS-CHAPv2 协议包含
<url id="http://mopo.informatik.uni-freiburg.de/pptp_mschapv2/"
name="众所周知的安全漏洞">.

<sect>公钥机制 (PKI)

<p>公钥机制(PKI)是在不安全的网络上, 用于增加信息通讯的安全信心级别的安全平台. 
它利用公钥和私钥的概念来核实发送者(签名)的身份以确保保密性(加密).

<p>就 PKI 而言, 您要面对各种各样的问题:

<list>

<item>证书机关 (CA) 可以分发和鉴别证书, 在一定的制度条件下工作 

<item>用于存放用户公共证书的目录

<item>用于维护吊销列表(CRL)的数据库(?)

<item>与 CA 交互操作, 以向智能卡/usb token/或者任何能够安全存储认证的存贮设备 输出证书的设备进

<item>certificate-aware 应用程序, 可以使用CA的证书根据 CRL(用于认证 和单个签名解决方案)在加密通讯中进行注册 

<item>数字签名的时间戳认证

<item>用于(证书生成、吊销列表控制...)的管理平台


</list>

<p> Debian GNU/Linux 中有些软件包可以帮助您解决其中一些安全问题. 
包括 <prgn>OpenSSL</prgn>(用户证书生成), <prgn>OpenLDAP</prgn>(作为存储证书的目录), 
<prgn>gnupg</prgn> 和 <prgn>freeswan</prgn>(支持 X.509). 但是, 在 Woody 发行版(Debian 3.0)中, 
并未提供任何证书认证工具, 譬如 pyCA,<url id="http://www.openca.org"
name="OpenCA"> 或源自 OpenSSL 的 CA 例程. 更多信息参见
<url id="http://ospkibook.sourceforge.net/" name="Open PKI
book">.

<sect>SSL 机制

<p>Debian 在发行版中提供一些用于安装到本地的 SSL 证书. 您可以在 
<package>ca-certificates</package> 包中找到它们. 此软件包提供了一个重要的证书仓库, 
它已由软件包维护者认可(就是校验)的, 并被提交到了Debian, 对任何一个使用 SSL 校验连接的 OpenSSL 应用程序都非常有用.

<p>FIXME: 查看 debian-devel 中是否有些东西需要添加到这里.

<sect>病毒工具

<p>在 Debian GNU/Linux 中提供的杀毒工具并不多, 也许是因为 GNU/Linux 用户并没有病毒的困扰. 
UN*X 安全模式严格区分特权(root)程序和用户私有程序, 因此, 非特权用户接收的或制作的"有害"的可执行程序的执行并不能"感染"或者控制整个系统. 但是, GNU/Linux 蠕虫和病毒确实存在. 
尽管并没有(希望如此)在任何一个 Debian 发行版中大面积传播. 即便如此, 管理员也许希望构建一个防病毒网关来保护其网络中其它脆弱的系统不受病毒的困扰.

<p>当前的 Debian GNU/Linux 提供如下用于构建防火墙环境的工具:

<list>

<item><url id="http://clamav.elektrapro.com/" name="Clam Antivirus">,
在 Debian <em>sarge</em>(未来的 3.1 版)中提供. 软件包括用于病毒扫描(<package>clamav</package>)
的扫描守护进程(<package>clamav-daemon</package>), 和用于数据文件的扫描器. 
保持杀毒软件的及时更新对于其正常运行非常重要, 有两种不同的方法获取这些数据: 
<package>clamav-freshclam</package> 提供一个通过互联网自动更新数据库的方法, 
<package>clamav-data</package> 直接提供数据文件
<footnote>如果您使用的是最新的软件包, 和官方 Debian, 数据库将不能进行安全更新. 您要么是使用
<package>clamav-freshclam</package>,
<prgn>clamav-getfiles</prgn> 生成新的
<package>clamav-data</package> 软件包, 要么从维护者的站点升级:
<example>
  deb http://people.debian.org/~zugschlus/clamav-data/ /
  deb-src http://people.debian.org/~zugschlus/clamav-data/ /
</example>
</footnote>

<item><package>mailscanner</package> 一个电子邮件病毒扫描网关和垃圾邮件探测器. 
基于 <package>sendmail</package> 或 <package>Exim</package>, 支持超过17种不同的病毒扫描引擎(包括 <package>clamav</package>)

<item><package>libfile-scan-perl</package> 提供 File::Scan 一个扫描病毒的 perl 扩展. 
此模块可用于制作 plataform 独立病毒扫描器.

<item><url id="http://www.sourceforge.net/projects/amavis"
name="Amavis Next Generation">, 在软件包 <package>amavis-ng</package> 中提供, 
<em>sarge</em> 中包含此软件. 这是一个可以与不同的 MTA(Exim, Sendmail, Postfix, 或 Qmail)
整合的邮件病毒扫描器. 支持15种病毒扫描引擎(包括 clamav, File::Scan 和 openantivirus).

<item><url id="http://packages.debian.org/sanitizer"
name="sanitizer">, 一个使用 <package>procmail</package> 软件包的工具, 
可以用于扫描 email 附件的病毒, 基于文件名的附件, 或者其它.

<item><url id="http://packages.debian.org/amavis-postfix"
name="amavis-postfix">, 一个为邮件传输代理提供一个或更多商用病毒扫描器接口的脚本(此软件包仅支持 <prgn>postfix</prgn> MTA).

<item><package>exiscan</package>, 一个用 perl 写的基于 Exim 的电子邮件病毒扫描器.

<item><package>sanitizer</package>, 一个可以删除邮件的危险附件的扫描器.

<item><package>blackhole-qmail</package> 一个 Qmail 的垃圾过滤器, 内置支持 Clamav.

</list>

<p>一些网关守护进程已经支持工具扩展, 以构建防病毒环境, 其包括 <package>exim4-daemon-heavy</package>
(Exim MTA 的 <em>heavy</em> 版), <package>frox</package>(一个透明缓存的 ftp 代理服务器), 
<package>messagewall</package>(一个 SMTP 代理守护进程), 和 <package>pop3vscan</package> (透明的 POP3 代理).

<p>如同您所看到的, Debian 当前版本(当前为 3.0)的主正式发行版中并不包含病毒扫描软件, 
但是它确为构建防病毒网关提供了很多接口. 在下一个正式发行版中将提供 <package>Clamav</package> 扫描器.

<p>也许在未来的 Debian GNU/Linux 发行版中会包括一些其它的防病毒自由软件:

<list>

<item><url id="http://sourceforge.net/projects/openantivirus/" name="Open
Antivirus"> (参见 
<url
id="http://bugs.debian.org/150698" name="Bug #150698 (ITP oav-scannerdaemon"> 
和 <url id="http://bugs.debian.org/150695" name="Bug #150695 (ITP oav-update">
).

</list>

<p><!-- FIXME: N 检查并确定哪些防病毒软件包可用. clamav 可用吗? -->
还有一个 <package>virussignatures</package> 软件包, 用于为所有的软件包提供签名, 
此软件包提供了一个用来从 <url id="http://www.openantivirus.org/latest.php"> 下载最新病毒签名的脚本.

<p>FIXME: 检查 scannerdaemon 是否与 open antivirus scanner daemon 相同(参阅 ITPs).

<p>但是，Debian 将<em>不会</em>提供商业防病毒软件, 如:Panda Antivirus,
<!--
<url
id="http://www.pandasoftware.com/com/linux/linux.asp" name="Panda
Antivirus">, <url
id="http://www.networkassociates.com/us/downloads/evals/"
name="NAI Netshield (uvscan)">, -->
NAI Netshield,
<url id="http://www.sophos.com/"
name="Sophos Sweep">, <url id="http://www.antivirus.com/products/"
name="TrendMicro Interscan">, 或 <url id="http://www.ravantivirus.com"
name="RAV">. 更多观点参见 <url
id="http://www.computer-networking.de/~link/security/av-linux_e.txt"
name="Linux antivirus software mini-FAQ">. 这并不意味着这些软件不能在 Debian 上正确安装.

<p>关于如何设置病毒检测系统的更多内容参见 Dave Jones 的文章  <url
id="http://www.linuxjournal.com/article.php?sid=4882" name="Building
an E-mail Virus Detection System for Your Network">.

<sect id="gpg-agent">GPG 代理

<p>现在对一个邮件进行数字签名(有时是加密)非常普遍. 例如, 您可能发现邮件列表上的很多人对其列表邮件进行签名. 
公钥签名是现在唯一的核实一个邮件是由其发送者发送, 而不是其他人仿冒的唯一手段. 

<p>Debian GNU/Linux 提供了很多内置可以与 <package>gnupg</package> 或 <package>pgp</package> 交互的邮件客户端:

<list>
<item><package>Evolution</package>.
<item><package>mutt</package>.
<item><package>kmail</package>.

<item><package>sylpheed</package>. 基于此软件包的稳定版本的演变, 您可能需要使用 <em>bleeding edge
version</em>, <package>sylpheed-claws</package>.

<item><package>gnus</package>, 当其与 <package>mailcrypt</package> 软件包一起安装时, 
是一个 <prgn>gnupg</prgn> 的 <prgn>emacs</prgn> 接口.

<item><package>kuvert</package>, 其由于和邮件传输代理( MTA )的融合, 可以提供独立于邮件用户代理( MUA )的功能.

</list>

<p>Key 服务器允许您下载公钥, 这样您就可以验证签名了. <url
id="http://wwwkeys.pgp.net"> 就是这样的 key 服务器. <package>gnupg</package>
可以自动获取在您的 public keyring 中没有的公钥. 例如, 可以配置 <prgn>gnupg</prgn> 
使用上边的 key server, 编辑 <file>~/.gnupg/options</file> 文件, 加入如下行:

<footnote>
关于如何配置 <prgn>gnupg</prgn> 的更多例子, 请查看
<file>/usr/share/doc/mutt/examples/gpg.rc</file>.
</footnote>
<example>
keyserver wwwkeys.pgp.net
</example>

<p>很多 key server 是相互连接的, 因为当您的公钥加入一个服务器时,  它也将附加的蔓延到其它 key server 上. 
Debian GNU/Linux 也提供了一个 <package>debian-keyring</package> 软件包, 提供了 Debian 开发者的所有公钥.
<prgn>gnupg</prgn> keyrings 被安装在 <file>/usr/share/keyrings/</file> 目录下.

<p>更多信息:

<list>

<item><url ID="http://www.gnupg.org/faq.html" name="GnuPG FAQ">.

<item><url ID="http://www.gnupg.org/gph/en/manual.html" name="GnuPG
Handbook">.

<item><url
ID="http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto.html"
name="GnuPG Mini Howto (English)">.

<item><url ID="http://www.uk.pgp.net/pgpnet/pgp-faq/"
name="comp.security.pgp FAQ">.

<item><url ID="http://www.cryptnet.net/fdp/crypto/gpg-party.html"
name="Keysigning Party HOWTO">.

</list>
