红​帽​企​业​版 Linux

部​署​指​南​

Copyright © 2008 Red Hat, Inc. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0 or later with the restrictions noted below (the latest version of the OPL is presently available at http://www.opencontent.org/openpub/).

Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.

Distribution of the work or derivative of the work in any standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.

Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of Red Hat, Inc. in the United States and other countries.

All other trademarks referenced herein are the property of their respective owners.

The GPG fingerprint of the security@redhat.com key is:

CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E

1801 Varsity Drive RaleighNC 27606-2072 USA Phone: +1 919 754 3700 Phone: 888 733 4281 Fax: +1 919 754 3701 PO Box 13588 Research Triangle ParkNC 27709 USA

January 2008

修订历史
修订 5.2-11 Wed May 21 2008 Michael Hideo
Smith
解​决​:#232215
Changing from XML to HTML Single with floating Table of Contents and viewable by browser
摘要

本​部​署​指​南​文​档​包​括​了​所​有​与​红帽企业 Linux 5.2 部​署​、​配​置​和​管​理​相​关​的​信​息​。​


介​绍​
1. 递​交​你​的​反​馈​
I. 和​网​络​相​关​的​配​置​
1. 网​络​接​口
1.1. 网​络​配​置​文​件​
1.2. 接​口​配​置​文​件​
1.2.1. 以​太​网​接​口​
1.2.2. 网​络​接​口​
1.2.3. 网​络​接​口​
1.2.4. 别​名​和​克​隆​文​件​
1.2.5. 拨​号​接​口​
1.2.6. 其​他​接​口​
1.3. 配​置​控​制​脚​本​
1.4. 配​置​静​态​路​由​
1.5. 网​络​功​能​文​件​
1.6. 其​它​资​料​
1.6.1. 安​装​了​的​文​档​
II. 安​全​性​和​验​证​
2. 安​全​总​览​
2.1. 弱​点​测​定​
2.1.1. 知​己​知​彼​
2.1.2. 定​义​测​定​方​法​并​测​试​
2.1.3. 评​估​工​具​
2.2. 攻​击​者​和​弱​点​
2.2.1. 黑​客​简​明​历​史​
2.2.2. 对​网​络​安​全​的​威​胁​
2.2.3. 对​服​务​器​安​全​的​威​胁​
2.2.4. 对​工​作​站​和​家​用​电​脑​安​全​性​的​威​胁​
2.3. 常​见​的​漏​洞​利​用​和​攻​击​
2.4. 安​全​更​新​
2.4.1. 更​新​软​件​包​
3. 保​护​您​的​网​络​
3.1. 服​务​器​安​全​
3.1.1. 用 TCP Wrappers 和 xinetd 使​系​统​安​全​
3.1.2. 使 Portmap 安​全
3.1.3. 使 NIS 安​全​
3.1.4. 使 NFS 安​全​
3.1.5. 使 Apache HTTP 服​务​器​安​全​
3.1.6. 使 FTP 安​全​
3.1.7. 使​发​送​邮​件​安​全​
3.1.8. 检​验​哪​个​端​口​在​监​听
3.2. 可​插​入​验​证​模​块​(PAM)
3.2.1. PAM 的​优​越​性​
3.2.2. PAM 配​置​文​件​
3.2.3. PAM 配​置​文​件​的​格​式​
3.2.4. PAM 配​置​文​件​实​例​
3.2.5. 创​建 PAM 模​块​
3.2.6. PAM 和​管​理​用​户​身​份​缓​存​(Administrative Credential Caching)
3.2.7. PAM 和​设​备​拥​有​者​
3.2.8. 附​加​资​源​信​息​
3.3. TCP Wrappers 和 xinetd
3.3.1. TCP Wrappers
3.3.2. TCP Wrappers 配​置​文​件​
3.3.3. xinetd
3.3.4. xinetd 配​置​文​件​
3.3.5. 其​它​资​料​
3.4. 虚​拟​专​用​网​(VPN)
3.4.1. VPN 是​如​何​工​作​的​呢​?
3.4.2. VPNs 和 红帽企业 Linux
3.4.3. IPsec
3.4.4. 创​建​一​个 IPsec 连​接​
3.4.5. IPsec 的​安​装​
3.4.6. IPsec 主​机​到​主​机​连​接​配​置​
3.4.7. IPsec Network-to-Network Configuration(IPsec 网​络​到​网​络​配​置​)
3.4.8. 启​动​和​中​止 IPsec 连​接​
3.5. IPTables
3.5.1. 数​据​包​过​滤​
3.5.2. IPTables 和 IPChains 的​不​同​之​处​
3.5.3. IPTables 的​命​令​选​项​
3.5.4. 保​存 IPTables 规​则​
3.5.5. IPTables 控​制​脚​本​
3.5.6. IPTables 和 IPv6
3.5.7. 其​它​资​料​
4. 安​全​和 SELinux
4.1. 对 SELinux 的​介​绍​
4.1.1. SELinux 概​述​
4.1.2. 与 SELinux 相​关​的​文​件​
4.1.3. 其​它​资​源​
4.2. SELinux 的​发​展​历​史​和​背​景​信​息​

介​绍​

欢​迎​使​用​《​红​帽​企​业 Linux 部​署​指​南​》​。​

《​红​帽​企​业 Linux 部​署​指​南​》​介​绍​了​怎​样​定​制​红​帽​企​业 Linux 系​统​来​满​足​你​的​需​要​。​如​果​你​正​在​寻​找​一​个​完​备​的​、​面​向​任​务​的​配​置​和​定​制​系​统​的​指​南​,这​本​书​就​是​你​的​最​佳​选​择​。​

这​本​指​南​假​定​你​已​经​对​红​帽​企​业 Linux 系​统​有​了​基​本​的​了​解​。​如​果​你​需​要​关​于​安​装​红​帽​企​业 Linux 的​帮​助​,请​参​考 《​红​帽​企​业 Linux 安​装​指​南​》​。​

1. 递​交​你​的​反​馈​

如​果​你​在​《​红​帽​企​业 Linux 部​署​指​南​》​中​发​现​了​错​别​字​,或​者​有​改​进​本​书​的​建​议​,我​们​很​希​望​能​收​到​您​的​来​函​!你​可​以​向 Bugzilla(http://bugzilla.redhat.com/bugzilla/)提​交​一​份​关​于 Deployment_Guide 的​报​告​。​

如​果​你​有​改​进​本​书​的​建​议​,请​尽​可​能​详​细​地​阐​明​。​如​果​你​发​现​了​错​误​,请​包​括​所​在​章​节​及​相​关​段​落​的​内​容​,以​便​我​们​可​以​轻​易​地​查​找​到​。​

部分 I. 和​网​络​相​关​的​配​置​

在​解​释​了​怎​样​配​置​网​络​之​后​,本​部​分​内​容​讨​论​了​和​网​路​相​关​的​主​题​,如​怎​样​允​许​远​程​的​登​录​、​在​网​络​上​共​享​文​件​和​目​录​以​及​设​置 Web 服​务​器​。​

第 1 章 网​络​接​口

在​红帽企业 Linux里​,所​有​的​网​络​通​讯​都​发​生​在​所​配​置​的​软​件​

网​络​接​口​配​置​文​件​放​在​/etc/sysconfig/network-scripts/目​录​下​.用​来​激​活​和​停​止​这​些​文​件​的​脚​本​也​放​在​同​一​目​录​下​.虽​然​不​同​的​系​统​有​不​同​数​量​和​类​型​的​接​口​文​件​,但​在​这​个​目​录​下​都​有​三​个​类​别​的​文​件​.

  1. 接​口​配​置​文​件​

  2. 接​口​控​制​脚​本​

  3. 网​络​功​能​文​件​

这​些​不​同​类​别​的​文​件​被​用​在​不​同​的​网​络​设​备​上​.

本​章​将​会​探​索​这​些​文​件​之​间​的​关​系​和​使​用​方​法​

1.1. 网​络​配​置​文​件​

在​研​究​这​些​接​口​配​置​文​件​之​前​,让​我​们​首​先​了​解​用​于​网​络​配​置​的​主​要​配​置​文​件​.理​解​这​些​文​件​在​设​置​网​络​中​的​作​用​,会​对​我​们​定​制​一​个​红帽企业 Linux 系​统​有​所​帮​助​.

以​下​列​出​了​主​要​的​网​络​配​置​文​件​:

/etc/hosts

这​个​文​件​的​主​要​目​的​是​用​来​解​析​没​法​用​其​他​方​法​解​析​的​主​机​名​. 它​也​被​用​在​没​有​域​名​服​务​器​的​小​型​网​络​里​. 不​管​是​什​么​类​型​的​网​络​, 这​个​文​件​应​该​有​一​行​来​指​定​回​路​设​备​,如​: (127.0.0.1) as localhost.localdomain. 请​参​考​hosts帮​助​页​来​获​得​更​多​信​息​.

/etc/resolv.conf

这​个​文​件​指​定​了​域​名​服​务​器​的​IP地​址​和​搜​索​域​名​. 除​非​有​其​他​用​途​, 网​络​初​始​脚​本​都​会​载​入​这​个​文​件​. 关​于​这​个​文​件​的​更​多​信​息​,请​参​考​resolv.conf帮​助​页​.

/etc/sysconfig/network-scripts/ifcfg-<interface-name>

对​于​每​个​网​络​接​口​,都​有​一​个​相​应​的​接​口​配​置​文​件​.每​个​文​件​都​提​供​了​特​定​网​络​接​口​的​信​息​.请​参​考​第 1.2 节 “接​口​配​置​文​件​” 来​获​得​这​种​类​型​的​文​件​的​更​多​信​息​.

警​告​

/etc/sysconfig/networking/ 目​录​里​存​放​了 网络管理工具 (system-config-network) 的​使​用​信​息​. 这​个​目​录​里​的​内​容​不​应​该​手​工​编​辑​. 考​虑​到​误​删​配​置​文​件​的​风​险​,我​们​强​烈​建​议​只​使​用​一​种​方​法​来​配​置​网​络​.

1.2. 接​口​配​置​文​件​

接​口​配​置​文​件​用​来​控​制​每​个​网​络​设​备​的​软​件​接​口​.系​统​启​动​时​会​根​据​这​些​文​件​来​决​定​起​用​和​配​置​哪​些​网​络​接​口​. 这​些​文​件​通​常​用​ifcfg-<name>来​命​名​,name在​这​里​代​表​配​置​文​件​所​控​制​的​设​备​名​称​.

1.2.1. 以​太​网​接​口​

最​常​见​的​接​口​文​件​是 ifcfg-eth0, 它​控​制​系​统​里​的​第​一​个​以​太​网​卡​. 如​果​系​统​里​有​多​个​网​卡​,就​有​多​个​配​置​文​件​ifcfg-eth<X> files ( <X> 是​特​定​接​口​的​唯​一​标​识​). 因​为​每​个​设​备​都​有​自​己​的​配​置​文​件​,管​理​员​就​能​分​别​对​每​个​接​口​功​能​进​行​控​制​.

以​下​是​使​用​固​定 IP 地​址​的​一​个​系​统​的 ifcfg-eth0 文​件​实​例​:

DEVICE=eth0 BOOTPROTO=none ONBOOT=yes NETWORK=10.0.1.0 NETMASK=255.255.255.0 IPADDR=10.0.1.27 USERCTL=no

接​口​配​置​文​件​里​的​值​会​根​据​其​他​的​值​而​改​变​. 举​例​来​说​,应​用​DHCP的​接​口​文​件​ifcfg-eth0会​有​点​不​一​样​,因​为​IP信​息​是​由​DHCP服​务​器​提​供​的​.

DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes

然​而​, 对​于​给​定​的​网​络​接​口​, 手​工​编​辑​配​置​文​件​也​是​有​可​能​的​.

下​面​是​一​个​以​太​接​口​配​置​文​件​的​配​置​参​数​清​单​:

BONDING_OPTS=<parameters>

sets the configuration parameters for the bonding device, and is used in /etc/sysconfig/network-scripts/ifcfg-bond<N> (see 第 1.2.3 节 “网​络​接​口​”). These parameters are identical to those used for bonding devices in /sys/class/net/<bonding device>/bonding, and the module parameters for the bonding driver as described in bonding Module Directives.

用​这​个​配​置​方​法​可​为​多​个​绑​定​设​备​分​别​进​行​配​置​。​如​果​您​在 ifcfg-<name> 中​使​用 BONDING_OPTS,请​不​要​为​该​绑​定​设​备​指​定​选​项​。​

BOOTPROTO=<protocol>

在​这​里​,<protocol> 是​以​下​值​中​的​一​个​:

  • none — 在​启​动​时​不​使​用​任​何​协​议​。​

  • bootp — 使​用 BOOTP 协​议​。​

  • dhcp — 使​用 DHCP 协​议​。​

BROADCAST=<address>

在​这​里​,<address> 是​广​播​的​地​址​。​这​个​项​已​经​不​再​被​使​用​,因​为​这​个​值​可​以​被 ifcalc 自​动​计​算​。​

DEVICE=<name>

在​这​里​,<name> 是​物​理​设​备​的​名​称​(当​它​是​动​态​分​配​的 PPP 设​备​时​,它​是 逻​辑​名​)。​

DHCP_HOSTNAME

当 DHCP 服​务​器​需​要​客​户​机​在​接​收 IP 地​址​前​指​定​主​机​名​时​才​使​用​该​选​项​。​

DNS{1,2}=<address>

在​这​里​,<address>/etc/resolv.confPEERDNS 项​被​设​为 yes)文​件​中​的​名​称​服​务​器​的​地​址​。​

ETHTOOL_OPTS=<options>

在​这​里​,<options>ethtool 支​持​的​特​定​设​备​的​选​项​。​例​如​,您​需​要​设​置​100Mb,双​项​网​络​:

ETHTOOL_OPTS="autoneg off speed 100 duplex full"

和​使​用​定​制​初​始​化​脚​本​相​反​,请​使​用 ETHTOOL_OPTS 设​定​接​口​速​率​和​双​工​设​定​。​在​网​络​初​始​化​脚​本​之​外​运​行​定​制​初​始​化​脚​本​可​导​致​在​重​启​后​引​导​网​络​设​备​时​出​现​无​法​预​计​的​结​果​。​

备​注​

如​果​要​改​变​速​度​和​双​工​设​置​,需​要​禁​止​自​动​协​商​选​项​autoneg off. 这​个​必​须​先​于​其​他​选​项​启​动​,因​为​选​项​都​是​按​顺​序​排​列​的​.

GATEWAY=<address>

在​这​里​,<address> 是​路​由​器​或​网​关​设​备​的 IP 地​址​。​

HWADDR=<MAC-address>

在​这​里​,<MAC-address> 是​以​太​网​设​备​的​硬​件​地​址​(格​式​为 AA:BB:CC:DD:EE:FF)。​这​个​项​对​有​多​个​网​卡​的​系​统​非​常​有​用​:无​论​每​个​网​卡​的​模​块​是​以​什​么​顺​序​被​加​载​的​,它​们​都​可​以​获​得​正​确​的​设​备​名​。​这​个​项 不​能​MACADDR 一​起​使​用​。​

IPADDR=<address>

在​这​里​,<address> 是 IP 地​址​。​

MACADDR=<MAC-address>

在​这​里​,<MAC-address> 是​以​太​网​设​备​的​硬​件​地​址​(格​式​为 AA:BB:CC:DD:EE:FF)。​这​个​项​被​用​来​为​一​个​接​口​分​配​一​个 MAC 地​址​,这​个​地​址​会​覆​盖​分​配​给​物​理​网​卡​的​地​址​。​这​个 不​能​HWADDR 一​起​使​用​。​

MASTER=<bond-interface>

在​这​里​,<bond-interface> 是​以​太​网​接​口​所​连​接​的​接​口​的​频​道​绑​定​接​口​。​

这​个​项​和 SLAVE 项​一​起​使​用​。​

要​了​解​更​多​关​于​频​道​绑​定​接​口​的​信​息​,请​参​阅​第 1.2.3 节 “网​络​接​口​”。​

NETMASK=<mask>

在​这​里​,<mask> 是​网​络​掩​码​的​值​。​

NETWORK=<address>

在​这​里​,<address> 是​网​络​地​址​。​这​个​项​已​经​不​再​被​使​用​,它​现​在​被 ifcalc 自​动​计​算​。​

ONBOOT=<answer>

在​这​里​,<answer> 是​以​下​值​中​的​一​个​:

  • yes — 这​个​设​备​在​启​动​时​被​激​活​。​

  • no — 这​个​设​备​在​启​动​时​不​被​激​活​。​

PEERDNS=<answer>

在​这​里​,<answer> 是​以​下​值​中​的​一​个​:

  • yes — 如​果 DNS 项​被​设​定​,修​改 /etc/resolv.conf;如​果​使​用​DHCP,yes 就​是​默​认​设​置​。​

  • no — 不​修​改 /etc/resolv.conf 文​件​。​

SLAVE=<bond-interface>

在​这​里​,<bond-interface> 是​以​下​值​中​的​一​个​:

  • yes — 这​个​设​备​由 MASTER 项​中​指​定​的​频​道​绑​定​接​口​控​制​。​

  • no — 这​个​设​备​不​被​MASTER 项​中​指​定​的​频​道​绑​定​接​口​控​制​。​

这​个​项​与 MASTER 项​一​起​使​用​。​

如​需​了​解​更​多​关​于​频​道​绑​定​接​口​的​信​息​,请​参​阅 第 1.2.3 节 “网​络​接​口​”。​

SRCADDR=<address>

where <address> is the specified source IP address for outgoing packets.

PEERDNS=<answer>

在​这​里​,<answer> 是​以​下​值​中​的​一​个​:

  • yes — 允​许​非​根​用​户​控​制​该​设​备​。​

  • no — 不​允​许​非​根​用​户​控​制​该​设​备​。​

1.2.2. 网​络​接​口​

下​面​的​文​件​是​一​个​关​于​局​域​网​A的​IPsec连​接​的​例​子​. 在​这​个​例​子​里​, 我​们​用 ipsec1 来​标​识​网​络​连​接​, 文​件​被​命​名​为​: /etc/sysconfig/network-scripts/ifcfg-ipsec1

TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

下​面​是​一​个​IPsec接​口​可​配​置​参​数​的​清​单​:

BROADCAST=<address>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

ONBOOT=<answer>

USERCTL=<answer>,这​里​的​<answer> 是​以​下​之​一​:

SRCADDR=<address>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

ONBOOT=<answer>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

MASTER=<bond-interface>

PEERDNS=<answer>,这​里​的​<answer> 是​以​下​之​一​:

如​果​使​用​手​工​健​值​加​密​IPsec, 请​参​考 /usr/share/doc/initscripts-<version-number>/sysconfig.txt (replace <version-number> with the version of the initscripts package installed) 里​的​配​置​参​数​.

racoon IKEv1 健​值​管​理​精​灵​进​程​为​IPSec协​商​和​配​置​一​系​列​的​参​数​. 它​能​够​使​用​预​?共​享​健​值​,RSA签​名​或​者​GSS-API.如​果 racoon 被​用​来​自​动​管​理​健​值​加​密​, 下​面​的​选​项​是​必​需​的​:

ETHTOOL_OPTS=<options>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

NETMASK=<mask>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

DEVICE=<name>

USERCTL=<answer>,这​里​的​<answer> 是​以​下​之​一​:

PEERDNS=<answer>

USERCTL=<answer>,这​里​的​<answer> 是​以​下​之​一​:

PEERDNS=<answer>

PEERDNS=<answer>,这​里​的​<answer> 是​以​下​之​一​:

如​果​想​知​道​IPsec

1.2.3. 网​络​接​口​

红帽企业 Linux允​许​管​理​员​使​用​bonding核​心​模​块​和​一​个​特​殊​的​网​络​接​口​(channel bonding interface)把​多​个​网​络​接​口​绑​定​在​单​一​通​道​. 通​道​联​合​使​两​个​或​更​多​的​网​络​接​口​象​单​一​接​口​一​样​地​工​作​, 既​增​加​了​带​宽​,也​提​供​了​冗​余​功​能​.

为​了​创​建​一​个​通​道​联​合​接​口​, 需​要​在​/etc/sysconfig/network-scripts/ 目​录​下​创​建​一​个​叫​ifcfg-bond<N>的​文​件​(<N>是​接​口​的​序​号​, 如 0).

这​个​文​件​的​内​容​可​以​和​任​意​一​个​绑​定​的​接​口​相​同​, 如​以​太​接​口​. 区​别​在​于​, DEVICE=必​须​是 bond<N> (<N>是​接​口​的​序​号​, 如 0)

下​面​是​个​通​道​绑​定​配​置​文​件​的​样​本​:

DEVICE=bond0 BONDING_OPTS="mode=1 miimon=500" BOOTPROTO=none ONBOOT=yes NETWORK=10.0.1.0 NETMASK=255.255.255.0 IPADDR=10.0.1.27 USERCTL=no

通​道​绑​定​接​口​创​建​以​后​, 被​绑​定​接​口​的​配​置​文​件​里​必​需​加​入 MASTER= 和​SLAVE=. 各​绑​定​接​口​的​配​置​文​件​可​以​近​似​相​同​.

举​例​来​说​, 如​果​两​个​以​太​接​口​被​绑​定​, eth0eth1 可​能​是​下​面​的​样​子​:

USERCTL=<answer>,这里的<answer> 是以下之一:

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

1.2.4. 别​名​和​克​隆​文​件​

aliasclone 文​件​是​两​个​用​的​比​较​少​的​接​口​配​置​文​件​.

用​来​在​同​一​接​口​上​绑​定​多​个​地​址​的​别​名​接​口​配​置​文​件​, 使​用​ifcfg-<if-name>:<alias-value> 命​名​规​则​.

例​如​: ifcfg-eth0:0可​以​指​定​DEVICE=eth0:0 和​静​态​地​址​10.0.0.2. 假​设​以​太​接​口​的​别​名​已​经​配​置​成​通​过​DHCP里​获​取​IP信​息​. 在​这​种​情​况​下​, eth0 被​绑​定​在​一​个​动​态​地​址​上​, 但​同​一​网​卡​又​可​以​设​置​成​静​态​地​址 10.0.0.2.

小​心​

别​名​接​口​不​支​持​DHCP.

克​隆​接​口​配​置​文​件​应​该​使​用​下​面​的​命​名​规​则​: ifcfg-<if-name>-<clone-name>. 别​名​文​件​允​许​同​一​接​口​拥​有​多​个​地​址​, 克​隆​文​件​用​来​指​定​某​一​接​口​的​额​外​选​项​. 例​如​: 一​个​叫​eth0的​标​准​DHCP以​太​接​口​, 可​能​象​下​面​这​样​:

USERCTL=<answer>,这里的<answer> 是以下之一:

如​果​USERCTL directive is no 的​缺​省​值​没​有​被​指​定​, 用​户​就​不​能​启​动​或​停​止​这​个​接​口​. 我​们​如​果​拷​贝 ifcfg-eth0ifcfg-eth0-user, 并​且​把​下​面​的​语​句​加​进​去​, 就​可​以​让​客​户​控​制​这​个​接​口​.

USERCTL=<answer>,这里的<answer> 是以下之一:

在​这​里​, 因​为​ifcfg-eth0ifcfg-eth0-user 里​的​配​置​选​项​被​合​并​了​, 用​户​可​以​用 /sbin/ifup eth0-user 命​令​来​启​动​接​口​eth0. 尽​管​这​只​是​个​非​常​简​单​的​例​子​, 这​个​方​法​也​可​以​用​于​其​他​的​选​项​和​接​口​.

1.2.5. 拨​号​接​口​

如​果​你​通​过​拨​号​来​连​接​互​联​网​, 这​个​接​口​必​需​有​一​个​配​置​文​件​.

PPP接​口​文​件​采​用​下​列​格​式​来​命​名​:

DEVICE=<name>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

当​使​用​wvdial、​网络管理工具 或​者 Kppp 来​创​建​拨​号​帐​号​,PPP 接​口​配​置​文​件​会​自​动​创​建​。​您​也​可​以​手​工​创​建​和​编​辑​这​个​文​件​.

no — 不​要​修​改 /etc/resolv.conf。​

DEVICE=ppp0 NAME=test WVDIALSECT=test MODEMPORT=/dev/modem LINESPEED=115200 PAPNAME=test USERCTL=true ONBOOT=no PERSIST=no DEFROUTE=yes PEERDNS=yes DEMAND=no IDLETIMEOUT=600

Serial Line Internet Protocol (SLIP) 是​另​一​个​拨​号​接​口​, 尽​管​用​的​比​较​少​. 它​的​配​置​文​件​名​类​似​于​ifcfg-sl0.

可​以​在​这​些​文​件​里​使​用​的​其​他​选​项​包​括​:

ONBOOT=<answer>

在​这​里​,<answer> 是​以​下​值​中​的​一​个​:

  • yes — 允​许​非​根​用​户​控​制​该​设​备​。​

  • no — 不​允​许​非​根​用​户​控​制​该​设​备​。​

PEERDNS=<answer>

在​这​里​,<answer> 是​以​下​值​中​的​一​个​:

  • yes — 允​许​非​根​用​户​控​制​该​设​备​。​

  • no — 不​允​许​非​根​用​户​控​制​该​设​备​。​

DEVICE=<name>

PEERDNS=<answer>,这​里​的​<answer> 是​以​下​之​一​:

NETMASK=<mask>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

PEERDNS=<answer>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

NETWORK=<address>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

ONBOOT=<answer>

MTU定​义​了​除​了​信​息​头​以​外​所​能​承​载​的​最​大​字​节​数​. 在​某​些​拨​号​环​境​里​, 把​这​个​值​设​置​成​576会​减​少​信​息​包​的​损​失​,而​且​会​稍​稍​提​高​连​接​的​吞​吐​量​.

DEVICE=<name>

USERCTL=<answer>,这​里​的​<answer> 是​以​下​之​一​:

DEVICE=<name>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

PEERDNS=<answer>

在​这​里​,<answer> 是​以​下​值​中​的​一​个​:

  • yes — 允​许​非​根​用​户​控​制​该​设​备​。​

  • no — 不​允​许​非​根​用​户​控​制​该​设​备​。​

IPADDR=<address>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

DEVICE=<name>

SRCADDR=<address>,这​里​的​<address> 是​用​于​输​出​包​的​指​定​源 IP 地​址​。​

1.2.6. 其​他​接​口​

如​下​是​其​他​常​见​的​接​口​配​置​文​件​:

拨​号​

本​地​loopback interface通​常​用​来​测​试​, 有​时​候​也​被​一​些​需​要​指​向​自​身​地​址​的​应​用​程​序​里​所​使​用​. 所​有​发​送​到​回​路​设​备​的​数​据​都​会​马​上​被​回​送​到​主​机​的​网​络​层​.

警​告​

回​路​接​口​脚​本​/etc/sysconfig/network-scripts/ifcfg-lo不​应​该​被​手​工​编​辑​. 这​样​作​会​导​致​系​统​不​能​正​常​运​行​.

拨​号​

infrared interface 允​许​设​备​之​间​的​信​息​, 如​笔​记​本​和​打​印​机​, 通​过​红​外​连​接​进​行​交​换​. 这​和​以​太​设​备​很​相​似​, 只​不​过​红​外​连​接​通​常​是​点​对​点​的​连​接​.

拨​号​

Parallel Line Interface Protocol (PLIP) 连​接​和​以​太​设​备​几​乎​一​样​, 只​不​过​它​是​使​用​并​行​接​口​罢​了​.

拨​号​

Token Ring 拓​扑​结​构​不​象​Local Area Networks(LANs) 那​么​常​见​, 它​已​经​逐​渐​

1.3. 配​置​控​制​脚​本​

接​口​控​制​脚​本​激​活​和​终​止​系​统​接​口​. 在​/etc/sysconfig/network-scripts/ 目​录​下​有​两​个​主​要​的​调​用​控​制​脚​本​的​接​口​控​制​脚​本​: /sbin/ifdown 和​/sbin/ifup.

接​口​脚​本​ifupifdown都​是​/sbin/ 目​录​下​脚​本​的​链​接​. 其​中​一​个​被​调​用​的​时​候​, 都​需​要​指​定​的​接​口​的​值​, 如​:

USERCTL=<answer>,这里的<answer> 是以下之一:

小​心​

The ifupifdown 是​仅​有​的​用​户​用​来​启​动​和​停​止​网​络​接​口​的​脚​本​.

下​面​的​脚​本​仅​作​参​考​.

/etc/rc.d/init.d/functions/etc/sysconfig/network-scripts/network-functions 用​作​在​启​动​网​络​接​口​时​的​初​始​化​. 详​情​请​参​考​第 1.5 节 “网​络​功​能​文​件​”.

当​确​认​接​口​已​经​被​指​定​而​且​用​户​被​允​许​控​制​这​个​接​口​, 适​当​的​脚​本​就​会​启​动​或​停​止​接​口​. 下​面​是​一​些​在​/etc/sysconfig/network-scripts/目​录​下​的​常​见​接​口​控​制​脚​本​.

ifup-aliases

当​有​多​个​IP接​口​联​接​到​同​一​接​口​时​, 可​以​在​接​口​配​置​文​件​里​配​置​IP别​名​.

ifup-ipppifdown-ippp

启​动​和​停​止 ISDN 接​口​.

ifup-ipsecifdown-ipsec。​

启​动​和​停​止 IPsed 接​口​.

ifup-ipv6ifdown-ipv6

启​动​和​停​止 IPv6 接​口​.

ifup-ipx

启​动 IPX 接​口​。​

ifup-plip

启​动 PLIP 接​口​.

ifup-plusb

启​动​用​于​网​络​连​接​的​USB 接​口​

ifup-postifdown-post

包​含​在​接​口​已​经​启​动​或​停​止​后​执​行​的​命​令​.

ifup-pppifdown-ppp。​

启​动​或​停​止​PPP接​口​

拨​号​

当​设​备​接​口​被​启​动​后​加​入​静​态​路​由​.

ifdown-sit 和​ifup-sitename >。​

包​括​在​IPv4连​接​里​启​动​和​停​止​IPv6管​道​的​功​能​调​用​.

ifup-slifdown-sl

启​动​和​停​止​SLIP接​口​

ifup-wireless

启​动​一​个​无​线​接​口​.

警​告​

删​除​和​修​改​/etc/sysconfig/network-scripts/目​录​下​的​脚​本​会​导​致​接​口​连​接​不​正​常​工​作​. 只​有​高​级​用​户​才​可​以​修​改​网​络​接​口​脚​本​.

同​时​操​作​所​有​网​络​脚​本​最​简​单​的​方​法​就​是​使​用 /sbin/service 在​网​络​服​务 (/etc/rc.d/init.d/network) 里​的​命​令​, 如​下​所​示​:

/sbin/service network <action>

在​这​里​, <action> 可​以​是 start, stop, 或 restart.

可​以​使​用​下​列​命​令​来​查​看​已​经​配​置​好​的​设​备​和​激​活​的​网​络​接​口​:

/sbin/service network status

1.4. 配​置​静​态​路​由​

因​为​将​在​路​由​设​备​中​配​置​路​由​,所​以​无​需​在​红​帽​企​业​版 Linux 服​务​器​或​者​客​户​端​中​配​置​静​态​路​由​。​但​如​果​需​要​静​态​路​由​,可​以​为​每​个​接​口​单​独​配​置​。​这​在​不​同​的​子​网​有​多​个​接​口​时​很​有​用​。​请​使​用 route 命​令​显​示 IP 路​由​表​。​

静​态​路​由​配​置​保​存​在 /etc/sysconfig/network-scripts/route-interface 文​件​中​。​例​如​:eth0 接​口​的​静​态​路​由​是​保​存​在 /etc/sysconfig/network-scripts/route-eth0 文​件​中​。​route-interface 文​件​有​两​种​格​式​:IP 命​令​参​数​和​网​络​/子​网​掩​码​指​令​。​

IP 命​令​参​数​格​式​

在​第​一​行​定​义​默​认​网​关​。​这​只​在​没​有​通​过 DHCP 设​定​网​关​时​需​要​:

default X.X.X.X dev interface

X.X.X.X 是​默​认​网​关​的 IP 地​址​。​interface 是​已​连​接​到​默​认​网​关​或​者​可​连​接​到​默​认​网​关​的​接​口​。​

定​义​静​态​路​由​。​每​行​都​被​解​析​为​单​独​的​路​径​:

X.X.X.X/X via X.X.X.X dev interface

X.X.X.X/X 是​网​络​号​和​静​态​路​由​的​子​网​掩​码​。​X.X.X.Xinterface 分​别​是​默​认​网​关​的 IP 地​址​和​接​口​。​X.X.X.X 地​址​不​一​定​是​默​认​网​关​的 IP 地​址​。​在​大​多​数​情​况​下​,X.X.X.X 会​是​不​同​子​网​下​的 IP 地​址​,而 interface 将​是​已​经​连​接​到​或​者​可​以​连​接​到​那​个​子​网​的​接​口​。​请​根​据​要​求​任​意​添​加​静​态​路​由​。​

以​下​是​使​用 IP 命​令​参​数​格​式​的 route-eth0 文​件​示​例​。​默​认​网​关​为 192.168.0.1,接​口 eth0。​两​个​静​态​路​由​分​别​针​对 10.10.10.0/24 和 172.16.1.0/24 网​络​:

default 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.1 dev eth0
172.16.1.0/24 via 192.168.0.1 dev eth0

应​该​只​能​为​其​它​子​网​配​置​静​态​路​由​。​以​上​示​例​并​不​是​必​须​的​配​置​文​件​,因​为​流​向​网​络​10.10.10.0/24 和 172.16.1.0/24 的​数​据​包​会​使​用​默​认​网​关​。​下​面​是​在​位​于 192.168.0.0/24 子​网​的​机​器​中​将​静​态​路​由​设​定​到​不​同​子​网​的​配​置​示​例​。​示​例​机​器​在 192.168.0.0/24 子​网​中​有 eth0 接​口​,在 10.10.10.0/24 子​网​中​有 eth1 接​口​:

10.10.10.0/24 via 10.10.10.1 dev eth1

重​复​的​默​认​网​关​

如​果​已​经​从 DHCP 分​配​了​默​认​网​关​,IP 命​令​参​数​格​式​会​在​启​动​或​者​使​用 ifup 命​令​将​接​口​开​启​时​造​成​一​个​或​者​两​个​错​误​:"RTNETLINK answers: File exists" 或​者 'Error: either "to" is a duplicate, or "X.X.X.X" is a garbage.',其​中 X.X.X.X 是​网​关​或​者​不​同​的 IP 地​址​。​这​些​错​误​还​会​在​您​使​用​默​认​网​关​路​由​到​另​一​个​网​络​时​发​生​。​这​两​个​错​误​都​无​伤​大​雅​,可​被​忽​略​。​

网​络​/子​网​掩​码​指​令​格​式​

您​还​可​以​在 route-interface 文​件​中​使​用​网​络​/子​网​掩​码​指​令​格​式​。​以​下​是​网​络​/子​网​掩​码​格​式​的​样​板​,具​体​操​作​稍​后​另​述​:

ADDRESS0=X.X.X.X
NETMASK0=X.X.X.X
GATEWAY0=X.X.X.X
  • ADDRESS0=X.X.X.X 是​静​态​路​由​的​网​络​号​。​

  • NETMASK0=X.X.X.XADDRESS0=X.X.X.X 定​义​的​网​络​号​的​子​网​掩​码​。​

  • GATEWAY0=X.X.X.X 是​默​认​网​关​或​者​可​用​来​连​接​到 ADDRESS0=X.X.X.X 的 IP 地​址​。​

以​下​是​使​用​网​络​/子​网​掩​码​指​令​格​式​的 route-eth0 文​件​示​例​。​默​认​网​关​为 192.168.0.1,接​口 eth0。​两​个​静​态​路​由​分​别​针​对 10.10.10.0/24 和 172.16.1.0/24 网​络​。​但​如​前​所​述​,这​个​示​例​并​不​是​必​要​的​,因​为 10.10.10.0/24 和 172.16.1.0/24 网​络​还​是​会​使​用​默​认​网​关​:

ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.1
ADDRESS1=172.16.1.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.1

之​后​的​静​态​路​由​必​须​按​顺​序​编​号​,且​不​可​跳​过​任​何​数​值​。​例​如​:ADDRESS0、​ADDRESS1、​ADDRESS2 等​等​。​

以​下​是​在​位​于 192.168.0.0/24 子​网​的​机​器​中​将​静​态​路​由​设​定​到​不​同​子​网​的​示​例​。​示​例​机​器​在 192.168.0.0/24 子​网​中​有 eth0 接​口​,而​在 10.10.10.0/24 子​网​中​有 eth1 接​口​。​

ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=10.10.10.1

DHCP 应​该​会​自​动​分​配​这​些​设​定​,因​为​不​需​要​在​红​帽​企​业​版 Linux 服​务​器​或​者​客​户​端​中​配​置​静​态​路​由​。​

1.5. 网​络​功​能​文​件​

红帽企业 Linux使​用​了​几​个​包​含​启​动​和​停​止​接​口​的​重​要​常​用​功​能​的​文​件​. 这​些​功​能​分​列​在​多​个​文​件​里​, 而​不​只​是​单​一​的​接​口​控​制​文​件​.

文​件​/etc/sysconfig/network-scripts/network-functions 包​含​了​最​常​用​的​IPv4功​能​, 这​些​功​能​被​许​多​接​口​控​制​脚​本​所​采​用​. 这​些​功​能​包​括​获​取​接​口​状​态​变​化​的​信​息​, 设​置​主​机​名​, 寻​找​网​关​设​备​, 探​测​指​定​设​备​是​否​运​行​, 增​加​缺​省​路​由​等​等​.

因​为 IPv6接​口​需​要​的​功​能​和​IPv4不​一​样​, 文​件​/etc/sysconfig/network-scripts/network-functions-ipv6被​用​来​记​录​这​些​不​同​的​信​息​. 这​个​文​件​里​的​功​能​配​置​和​删​除​IPv6的​静​态​路​由​, 建​立​和​删​除​管​道​, 增​加​和​删​除​接​口​的​IPv6地​址​, 以​及​测​试​接​口​上​的​IPv6地​址​是​否​存​在​.

1.6. 其​它​资​料​

下​面​是​一​些​更​详​细​解​释​网​络​接​口​的​资​源​.

1.6.1. 安​装​了​的​文​档​

/usr/share/doc/initscripts-<version>/sysconfig.txt

网​络​配​置​文​件​可​选​项​的​向​导​, 包​括​本​章​未​涉​及​的​IPv6选​项​.

/usr/share/doc/iproute-<version>/ip-cref.ps

这​个​文​件​包​含​ip命​令​的​详​细​信​息​, 如​操​作​路​由​表​等​. 你​可​以​使​用 ggvkghostview 来​阅​读​此​文​件​.

部分 II. 安​全​性​和​验​证​

系​统​管​理​员​需​要​提​高​关​键​业​务​系​统​、​服​务​或​者​数​据​的​安​全​性​,作​为​完​备​的​安​全​性​策​略​的​一​部​分​,红​帽​企​业 Linux 提​供​了​一​系​列​工​具​和​方​法​。​

本​章​提​供​了​对​安​全​性​的​一​般​性​简​介​,尤​其​是​从​红帽企业 Linux的​角​度​。​它​介​绍​了​安​全​性​评​估​、​common exploits、​系​统​入​侵​和​对​事​故​的​反​应​等​概​念​。​它​也​介​绍​了​SELinux来​用​加​固​工​作​站​、​服​务​器​、​VPN、​防​火​墙​和​实​施 SELinux 的​概​念​性​的​和​特​殊​的​配​置​信​息​。​

本​章​假​定​你​有 IT 安​全​性​的​基​本​知​识​,因​此​只​提​供​对​常​见​安​全​性​问​题​如​控​制​物​理​访​问​、​健​壮​的​帐​号​策​略​和​过​程​、​审​计​等​的​基​本​介​绍​。​在​适​当​的​时​候​,你​可​以​参​考​对​这​些​问​题​的​外​部​资​源​的​引​用​。​

目录

2. 安​全​总​览​
2.1. 弱​点​测​定​
2.1.1. 知​己​知​彼​
2.1.2. 定​义​测​定​方​法​并​测​试​
2.1.3. 评​估​工​具​
2.2. 攻​击​者​和​弱​点​
2.2.1. 黑​客​简​明​历​史​
2.2.2. 对​网​络​安​全​的​威​胁​
2.2.3. 对​服​务​器​安​全​的​威​胁​
2.2.4. 对​工​作​站​和​家​用​电​脑​安​全​性​的​威​胁​
2.3. 常​见​的​漏​洞​利​用​和​攻​击​
2.4. 安​全​更​新​
2.4.1. 更​新​软​件​包​
3. 保​护​您​的​网​络​
3.1. 服​务​器​安​全​
3.1.1. 用 TCP Wrappers 和 xinetd 使​系​统​安​全​
3.1.2. 使 Portmap 安​全
3.1.3. 使 NIS 安​全​
3.1.4. 使 NFS 安​全​
3.1.5. 使 Apache HTTP 服​务​器​安​全​
3.1.6. 使 FTP 安​全​
3.1.7. 使​发​送​邮​件​安​全​
3.1.8. 检​验​哪​个​端​口​在​监​听
3.2. 可​插​入​验​证​模​块​(PAM)
3.2.1. PAM 的​优​越​性​
3.2.2. PAM 配​置​文​件​
3.2.3. PAM 配​置​文​件​的​格​式​
3.2.4. PAM 配​置​文​件​实​例​
3.2.5. 创​建 PAM 模​块​
3.2.6. PAM 和​管​理​用​户​身​份​缓​存​(Administrative Credential Caching)
3.2.7. PAM 和​设​备​拥​有​者​
3.2.8. 附​加​资​源​信​息​
3.3. TCP Wrappers 和 xinetd
3.3.1. TCP Wrappers
3.3.2. TCP Wrappers 配​置​文​件​
3.3.3. xinetd
3.3.4. xinetd 配​置​文​件​
3.3.5. 其​它​资​料​
3.4. 虚​拟​专​用​网​(VPN)
3.4.1. VPN 是​如​何​工​作​的​呢​?
3.4.2. VPNs 和 红帽企业 Linux
3.4.3. IPsec
3.4.4. 创​建​一​个 IPsec 连​接​
3.4.5. IPsec 的​安​装​
3.4.6. IPsec 主​机​到​主​机​连​接​配​置​
3.4.7. IPsec Network-to-Network Configuration(IPsec 网​络​到​网​络​配​置​)
3.4.8. 启​动​和​中​止 IPsec 连​接​
3.5. IPTables
3.5.1. 数​据​包​过​滤​
3.5.2. IPTables 和 IPChains 的​不​同​之​处​
3.5.3. IPTables 的​命​令​选​项​
3.5.4. 保​存 IPTables 规​则​
3.5.5. IPTables 控​制​脚​本​
3.5.6. IPTables 和 IPv6
3.5.7. 其​它​资​料​
4. 安​全​和 SELinux
4.1. 对 SELinux 的​介​绍​
4.1.1. SELinux 概​述​
4.1.2. 与 SELinux 相​关​的​文​件​
4.1.3. 其​它​资​源​
4.2. SELinux 的​发​展​历​史​和​背​景​信​息​

第 2 章 安​全​总​览​

由​于​近​来​对​使​用​功​能​强​大​的​联​网​计​算​机​来​帮​助​商​业​运​转​和​记​录​个​人​信​息​的​依​赖​性​日​益​增​强​,许​多​围​绕​着​网​络​和​计​算​机​安​全​的​行​业​也​渐​渐​形​成​。​企​业​机​构​开​始​聘​请​安​全​专​家​来​确​切​地​评​审​系​统​并​制​定​出​适​合​其​组​织​的​解​决​方​案​。​由​于​许​多​机​构​属​于​动​态​性​质​,工​作​人​员​要​么​本​地​要​么​远​程​地​使​用​公​司​的​信​息​技​术​资​源​,因​此​各​个​机​构​对​安​全​计​算​环​境​的​需​求​已​愈​来​愈​强​烈​。​

但​是​,多​数​机​构​(以​及​个​人​用​户​)把​安​全​问​题​当​成​“​马​后​炮​”​。​安​全​问​题​常​常​会​由​于​对​增​强​功​能​、​提​高​生​产​率​以​及​对​预​算​的​考​虑​而​被​忽​略​。​正​确​的​安​全​措​施​经​常​是​在​事​后​调​查​(postmortem)后​才​被​实​施 —,即​在​非​法​入​侵​事​件​出​现​之​后​。​安​全​专​家​们​一​致​认​为​,在​把​网​站​连​接​到​不​可​信​的​网​络​(如​互​联​网​)之​前​预​先​采​取​正​确​的​措​施​是​阻​挠​入​侵​企​图​的​有​效​方​法​。​

2.1. 弱​点​测​定​

只​要​有​足​够​的​时​间​、​资​源​、​和​动​力​,怪​客​能​够​闯​入​几​乎​所​有​系​统​。​说​到​底​,所​有​的​安​全​措​施​和​当​前​可​用​的​技​术​都​无​法​保​证​系​统​能​免​受​入​侵​威​胁​。​路​由​器​有​助​于​保​护​通​向​互​联​网​的​网​关​的​安​全​性​;防​火​墙​有​助​于​保​护​网​络​边​缘​地​带​的​安​全​性​;虚​拟​专​用​网​能​够​在​加​密​流​中​安​全​地​传​递​数​据​;入​侵​检​测​系​统​能​够​在​出​现​蓄​意​活​动​的​时​候​向​您​发​出​警​告​。​可​是​,以​上​这​些​技​术​的​成​功​与​否​都​有​很​多​依​赖​因​素​,这​些​因​素​包​括​:

  • 负​责​配​置​、​监​视​和​维​护​相​关​技​术​的​人​员​的​专​业​程​度​。​

  • 进​行​快​速​有​效​地​更​新​或​给​服​务​和​内​核​打​补​丁​的​能​力​。​

  • 负​责​时​刻​监​测​网​络​活​动​的​人​员​的​能​力​。​

数​据​系​统​和​技​术​的​动​态​性​使​得​保​护​公​司​企​业​资​源​的​任​务​变​得​相​当​复​杂​。​这​种​复​杂​性​又​给​寻​求​各​方​面​的​系​统​专​家​带​来​一​定​难​度​。​虽​说​要​找​到​在​信​息​安​全​的​许​多​领​域​内​都​有​渊​博​知​识​的​人​员​是​可​能​的​,但​是​要​保​留​这​些​多​领​域​内​的​专​家​却​不​容​易​。​这​主​要​是​因​为​信​息​安​全​的​每​一​领​域​都​要​求​其​专​业​人​士​全​身​投​入​和​时​刻​关​注​。​而​且​信​息​安​全​本​身​也​不​是​一​种​原​地​不​动​、​停​滞​不​前​的​行​业​。​

2.1.1. 知​己​知​彼​

假​设​您​是​某​个​企​业​网​络​的​管​理​员​。​这​类​网​络​通​常​包​括​操​作​系​统​、​应​用​程​序​、​服​务​器​、​网​络​监​视​器​、​防​火​墙​、​入​侵​检​测​系​统​等​等​。​现​在​,想​像​一​下​要​在​以​上​每​个​方​面​都​保​持​更​新​状​态​。​鉴​于​今​天​的​软​件​和​网​络​环​境​的​复​杂​性​,程​序​漏​洞​和​错​误​肯​定​存​在​。​使​用​补​丁​和​勘​误​来​保​持​整​个​网​络​的​更​新​状​态​对​于​拥​有​混​合​系​统​的​大​机​构​来​说​不​能​不​算​是​一​项​繁​杂​冗​长​的​任​务​。​

由​于​对​专​业​人​才​需​求​方​面​的​严​格​性​,以​及​保​持​更​新​状​态​任​务​的​艰​巨​性​,所​以​不​该​发​生​的​事​件​难​免​会​发​生​,系​统​的​防​守​难​免​会​被​攻​破​,数​据​也​难​免​遭​到​破​坏​,服​务​也​会​被​迫​中​断​。​

要​增​强​保​安​技​术​,协​助​对​系​统​、​网​络​和​数​据​的​保​护​,您​应​该​想​敌​人​所​想​,从​怪​客​的​角​度​来​检​测​系​统​的​弱​点​。​对​自​己​的​系​统​及​网​络​资​源​进​行​防​范​性​弱​点​测​定​有​助​于​发​现​潜​在​的​问​题​,这​些​问​题​可​以​在​攻​击​者​找​到​利​用​方​法​之​前​被​解​决​。​

如​果​您​要​对​您​的​居​住​点​进​行​安​全​检​查​,您​很​可​能​会​检​查​一​下​所​有​的​门​户​是​否​关​闭​上​锁​了​。​您​还​会​检​查​每​扇​窗​户​,确​定​它​们​也​被​关​紧​插​严​。​系​统​、​网​络​和​电​子​数​据​的​保​安​方​法​也​是​基​于​相​同​的​原​则​。​恶​意​用​户​是​数​据​盗​贼​。​关​注​他​们​使​用​的​工​具​、​他​们​的​所​思​所​想​、​以​及​他​们​的​动​机​和​出​发​点​,您​就​能​够​迅​速​地​对​他​们​的​行​动​做​出​反​应​。​

2.1.2. 定​义​测​定​方​法​并​测​试​

弱​点​测​定​可​以​被​分​化​成​两​类​:由​外​向​里​看​”​(Outside looking in)和​由​里​向​外​看​”​(inside looking around)。​

在​进​行​“​由​外​向​里​看​”​的​弱​点​测​定​时​,您​是​在​试​图​从​外​部​打​入​您​的​系​统​。​站​在​系​统​之​外​会​给​您​提​供​怪​客​的​视​角​。​您​会​看​到​怪​客​所​见 — 可​公​开​路​游​的 IP 地​址​、​位​于 DMZ 中​的​系​统​、​防​火​墙​的​对​外​接​口​等​等​。​DMZ 代​表​“​停​火​区​域​”​。​它​是​指​位​于​可​信​任​的​内​部​网​络​(如​公​司​专​用​网​)和​不​可​信​任​的​外​部​网​络​(如​公​共​互​联​网​)之​间​的​计​算​机​或​小​型​子​网​。​典​型​的 DMZ 包​括​可​被​互​联​网​交​通​进​入​的​设​备​,如​万​维​网​(HTTP)服​务​器​、​FTP 服​务​器​、​电​子​邮​件​(SMTP)服​务​器​和 DNS 服​务​器​。​

在​进​行​“​由​里​向​外​看​”​的​弱​点​测​定​时​,您​占​据​一​定​的​优​势​,因​为​您​是​局​内​人​,您​的​状​态​被​提​升​为​可​信​任​级​别​。​这​是​您​和​您​的​同​事​在​系​统​上​登​录​后​的​视​角​。​您​会​看​到​打​印​服​务​器​、​文​件​服​务​器​、​数​据​库​、​以​及​其​它​资​源​。​

这​两​类​弱​点​测​定​截​然​不​同​。​站​在​局​内​人​的​角​度​给​您​更​多​特​权 — 比​局​外​人​要​多​得​多​。​可​是​,现​在​的​多​数​机​构​中​,保​安​配​置​的​目​的​仍​是​旨​在​把​入​侵​者​拒​之​门​外​。​在​保​持​机​构​内​部​安​全​方​面​(如​部​门​间​的​防​火​墙​、​用​户​级​别​的​安​全​控​制​、​内​部​资​源​的​验​证​手​续​、​等​等​)做​的​却​相​当​少​。​典​型​情​况​下​,如​果​从​内​部​看​,可​用​资​源​要​比​从​外​部​看​多​得​多​,因​为​多​数​系​统​都​是​公​司​内​部​使​用​的​。​一​旦​您​步​出​公​司​之​外​,您​就​会​被​立​即​给​予​不​信​任​级​别​。​您​可​以​使​用​的​系​统​资​源​就​会​大​受​限​制​。​

考​虑​一​下​弱​点​测​定​和​侵​入​测​试​(penetration tests)的​区​别​。​弱​点​测​定​应​该​是​侵​入​测​试​的​第​一​步​。​测​定​中​所​积​累​的​信​息​将​会​用​于​测​试​。​弱​点​测​定​是​检​查​漏​洞​及​潜​在​缺​陷​的​过​程​,而​侵​入​测​试​是​试​图​利​用​这​些​漏​洞​缺​陷​的​实​践​行​为​。​

测​定​网​络​体​系​是​一​个​动​态​过​程​。​信​息​安​全​和​物​理​安​全​都​是​动​态​的​。​执​行​测​定​只​会​显​示​一​个​大​概​,它​有​可​能​会​造​成​一​些​假​象​,让​您​白​担​心​或​者​空​欢​喜​一​场​。​

安​全​管​理​员​只​能​尽​其​工​具​和​知​识​经​验​之​能​。​使​用​任​何​当​前​可​用​的​测​定​工​具​,在​系​统​上​运​行​它​们​,您​几​乎​可​以​肯​定​会​出​现​一​些​假​警​报​。​不​管​这​是​程​序​错​误​还​是​使​用​错​误​,其​结​果​都​是​一​样​的​。​工​具​可​能​会​发​现​实​际​上​不​存​在​的​弱​点​(false positive);甚​至​更​糟​糕​的​是​,它​可​能​会​漏​掉​实​际​上​存​在​的​弱​点​(false negative)。​

现​在​,弱​点​测​定​和​侵​入​测​试​之​间​的​区​别​已​经​被​表​明​了​,在​进​行​侵​入​测​试​前​仔​细​评​审​弱​点​测​定​中​的​发​现​通​常​是​一​个​良​好​的​习​惯​。​

警​告​

试​图​寻​找​生​产​资​源​上​的​漏​洞​弱​点​会​给​您​的​系​统​和​网​络​的​生​成​力​和​效​率​带​来​不​利​影​响​。​

以​下​列​表​讨​论​了​执​行​弱​点​测​定​会​给​您​带​来​的​优​势​。​

  • 积​极​地​将​注​意​力​集​中​到​信​息​安​全​上​

  • 在​怪​客​找​到​潜​在​漏​洞​前​发​现​它​们​

  • 时​刻​保​持​系​统​的​更​新​并​及​时​应​用​补​丁​程​序​

  • 鼓​励​职​员​深​化​其​专​业​知​识​

  • 减​少​财​政​损​失​和​消​极​宣​传​

2.1.2.1. 建​立​一​套​方​法​

为​了​给​弱​点​测​定​选​择​适​当​的​工​具​,建​立​一​套​弱​点​测​定​方​法​是​明​智​之​举​。​不​幸​的​是​,目​前​还​没​有​预​先​定​义​的​或​被​行​业​批​准​的​方​法​;然​而​,常​识​和​经​验​通​常​足​以​充​当​向​导​。​

目​标​是​什​么​?我​们​在​看​一​个​服​务​器​还​是​整​个​网​络​以​及​网​络​内​的​一​切​?我​们​是​在​公​司​之​内​还​是​公​司​之​外​?这​些​问​题​的​答​案​是​很​重​要​的​,因​为​它​们​不​但​能​够​帮​助​您​判​定​应​该​选​择​哪​些​工​具​,还​能​够​帮​助​您​判​定​该​如​何​使​用​这​些​工​具​。​

关​于​建​立​整​套​方​法​的​更​多​信​息​,请​参​考​以​下​网​站​:

2.1.3. 评​估​工​具​

典​型​的​测​定​可​以​从​收​集​信​息​开​始​。​在​测​定​整​个​网​络​时​,首​先​使​用​布​局​图​来​找​出​运​行​着​的​主​机​位​置​。​找​到​后​,逐​个​检​查​每​台​主​机​。​这​需​要​您​使​用​另​一​套​工​具​。​懂​得​使​用​恰​当​的​工​具​是​寻​找​弱​点​的​关​键​所​在​。​

如​同​我​们​的​日​常​生​活​一​样​,每​件​事​都​可​以​有​好​几​种​做​法​。​执​行​弱​点​测​定​也​是​如​此​。​操​作​系​统​、​应​用​程​序​、​甚​至​网​络​(根​据​使​用​协​议​而​定​)都​有​其​特​殊​的​测​定​工​具​。​某​些​工​具​是​免​费​的​,而​某​些​却​不​是​。​某​些​工​具​很​形​象​易​用​,而​某​些​虽​然​晦​涩​难​懂​又​没​有​充​足​的​文​档​,但​是​却​有​其​它​工​具​没​有​的​功​能​。​

找​到​恰​当​的​工​具​不​是​件​轻​而​易​举​的​事​。​说​到​底​,经​验​最​重​要​。​如​果​可​能​,设​立​一​个​测​试​试​验​室​,尽​可​能​地​多​试​一​些​工​具​,记​录​每​个​工​具​的​强​弱​点​。​回​顾​工​具​的 README 文​件​或​说​明​书​页​。​此​外​,还​可​以​在​互​联​网​上​寻​找​更​多​信​息​,例​如​文​章​、​指​南​、​甚​至​专​门​讨​论​某​个​工​具​的​邮​件​列​表​。​

以​下​讨​论​的​工​具​只​是​从​可​使​用​的​大​量​工​具​中​截​取​的​一​小​部​分​。​

2.1.3.1. 使​用 Nmap 来​扫​描​主​机​

Nmap 被​包​括​在​红帽企业 Linux 中​。​它​是​一​个​很​流​行​的​工​具​,可​以​被​用​来​判​定​网​络​布​局​。​Nmap 已​经​存​在​多​年​,可​能​是​最​常​使​用​的​收​集​信​息​工​具​。​它​的​说​明​书​页​对​其​选​项​和​用​法​都​有​详​尽​的​描​述​。​管​理​员​可​以​在​网​络​上​使​用 Nmap 来​寻​找​其​中​的​主​机​系​统​和​开​放​的​端​口​。​

Nmap 是​比​较​合​适​的​弱​点​测​定​的​第​一​步​。​您​可​以​用​它​制​定​出​网​络​内​的​所​有​主​机​的​布​局​图​,甚​至​传​递​选​项​来​试​图​识​别​在​某​个​主​机​上​运​行​的​操​作​系​统​。​Nmap 为​建​立​使​用​安​全​服​务​和​停​运​不​被​使​用​服​务​的​政​策​奠​定​了​良​好​基​础​。​

2.1.3.1.1. 使​用 Nmap

Nmap 可​以​从 shell 提​示​下​运​行​。​在 shell 提​示​下​,键​入 nmap 命​令​,随​后​是​要​扫​描​的​主​机​名​或 IP 地​址​。​

nmap foo.example.com

扫​描​的​结​果​(可​能​会​花​几​分​钟​时​间​,根​据​主​机​所​在​位​置​而​定​)和​以​下​相​似​:

Starting nmap V. 3.50 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1591 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 25/tcp open smtp 111/tcp open sunrpc 443/tcp open https 515/tcp open printer 950/tcp open oftep-rpc 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 71.825 seconds

Nmap 测​试​常​用​的​网​络​通​信​端​口​上​的​监​听​或​等​待​服​务​。​这​些​信​息​对​于​想​要​关​闭​不​必​要​服​务​的​管​理​员​来​说​很​有​帮​助​。​

关​于​使​用 Nmap 的​更​多​信​息​,请​参​阅​以​下 URL 的​官​方​网​站​:

http://www.insecure.org/

2.1.3.2. Nessus

Nessus 是​一​个​功​能​完​全​的​安​全​扫​描​器​。​Nessus 的​插​件​结​构​允​许​用​户​为​他​们​的​系​统​和​网​络​自​行​定​制​。​和​其​它​扫​描​器​一​样​,Nessus 只​能​和​它​所​依​赖​的​签​名​数​据​库​一​样​有​效​。​幸​运​的​是​,Nessus 被​频​繁​更​新​。​它​的​功​能​包​括​:完​整​报​告​、​主​机​扫​描​、​真​实​时​间​的​弱​点​搜​索​。​记​住​,假​警​报​可​能​会​出​现​,即​便​是​像 Nessus 这​样​的​功​能​强​大​而​又​被​时​时​更​新​的​工​具​也​不​例​外​。​

备​注​

Nessus 没​有​被​包​括​在 红帽企业 Linux 中​,也​不​被​支​持​。​它​被​包​括​在​本​文​档​中​,只​是​为​了​给​有​兴​趣​使​用​这​个​流​行​程​序​的​用​户​提​供​一​个​参​考​。​

关​于​使​用 Nessus 的​更​多​信​息​,请​参​阅​以​下 URL 上​的​官​方​网​站​:

http://www.nessus.org/

2.1.3.3. Nikto

Nikto 是​一​个​优​秀​的 CGI(公​用​网​关​接​口​)扫​描​器​。​Nikto 不​仅​具​备​检​查 CGI 弱​点​的​能​力​,它​还​能​够​用​一​种​比​较​难​以​捉​摸​的​方​法​来​进​行​,这​样​就​能​躲​过​入​侵​检​查​系​统​。​该​程​序​还​附​带​了​丰​富​的​文​档​。​您​在​运​行​程​序​前​应​该​仔​细​阅​读​文​档​。​如​果​您​的​万​维​网​服​务​器​提​供 CGI 脚​本​,Nikto 是​检​查​这​些​服​务​器​安​全​性​的​好​工​具​。​

备​注​

Nikto 没​有​被​包​括​在 红帽企业 Linux 中​,也​不​被​支​持​。​它​被​包​括​在​文​档​中​,只​是​为​了​给​有​兴​趣​使​用​这​个​流​行​程​序​的​用​户​提​供​一​个​参​考​。​

关​于 Nikto 的​更​多​信​息​,可​以​在​以​下 URL 上​找​到​:

http://www.cirt.net/code/nikto.shtml

2.1.3.4. VLAD 扫​描​器​

VLAD 是 Bindview, Inc. 的 RAZOR 组​开​发​出​来​的​弱​点​扫​描​器​。​它​会​检​查 SANS 十​大​常​见​安​全​问​题​(SNMP 问​题​、​文​件​共​享​问​题​等​等​)。​虽​然​不​像 Nessus 那​么​功​能​全​面​,VLAD 仍​值​得​一​试​。​

备​注​

VLAD 没​有​被​包​括​在 红帽企业 Linux 中​,也​不​被​支​持​。​它​被​包​括​在​文​档​中​,只​是​为​了​给​有​兴​趣​使​用​这​个​流​行​程​序​的​用​户​提​供​一​个​参​考​。​

关​于 VLAD 的​更​多​信​息​可​以​在​以​下 URL 上​的 RAZOR 组​的​网​站​上​找​到​:

http://www.bindview.com/Support/Razor/Utilities/

2.1.3.5. 预​先​考​虑​未​来​需​要​

根​据​您​的​目​标​和​资​源​而​定​,可​以​使​用​的​工​具​不​胜​枚​举​。​这​些​工​具​有​用​于​无​线​网​络​、​Novell 网​络​的​,也​有​用​于 Windows 系​统​、​Linux 系​统​的​。​执​行​测​定​的​另​一​个​重​要​部​分​可​能​会​包​括​审​核​物​理​安​全​性​、​人​员​安​全​审​查​、​或​声​音​/PBX 网​络​测​定​。​一​些​新​的​概​念​,如 war walking — 扫​描​企​业​物​理​结​构​的​边​缘​来​寻​找​无​线​网​络​的​可​乘​之​机 — 是​您​可​以​进​行​调​查​的​新​兴​概​念​,若​必​要​,还​可​以​包​括​在​您​的​弱​点​测​定​中​。​在​计​划​和​执​行​弱​点​测​试​过​程​中​,唯​一​的​限​制​只​是​您​的​想​象​力​和​系​统​的​暴​露​程​度​。​

2.2. 攻​击​者​和​弱​点​

为​了​设​计​并​实​现​一​个​好​的​安​全​策​略​,我​们​首​先​要​明​确​激​发​攻​击​者​决​意​攻​击​和​破​坏​系​统​的​原​因​所​在​。​在​详​细​阐​明​这​些​问​题​前​,我​们​必​须​首​先​定​义​识​别​攻​击​者​时​所​用​的​术​语​。​

2.2.1. 黑​客​简​明​历​史​

黑​客​(hacker)这​个​术​语​的​现​代​意​义​起​源​于​60年​代​的​麻​省​理​工​学​院​(MIT)技​术​模​型​铁​路​俱​乐​部​。​这​个​俱​乐​部​设​计​比​例​较​大​、​细​节​逼​真​的​火​车​模​型​。​“​黑​客​”​被​用​来​称​呼​那​些​发​现​了​聪​明​技​巧​或​问​题​的​绕​行​措​施​的​俱​乐​部​成​员​。​

从​那​以​后​,“​黑​客​”​这​个​术​语​就​被​用​来​描​述​从​计​算​机​迷​到​具​有​天​赋​的​编​程​员​之​类​的​人​士​。​多​数​黑​客​的​共​同​之​处​是​他​们​对​计​算​机​系​统​和​网​络​的​自​发​的​探​索​之​心​。​开​源​软​件​开​发​者​经​常​认​为​自​己​和​他​们​的​同​事​是​黑​客​,并​且​把​这​个​称​谓​当​作​一​种​尊​称​。​

典​型​的​黑​客​都​遵​守​一​种​黑​客​道​德​(hacker ethic)。​它​要​求​黑​客​必​须​追​求​专​门​知​识​和​技​能​,和​社​区​分​享​这​些​知​识​和​技​能​是​每​个​黑​客​的​职​责​。​在​追​求​知​识​的​过​程​中​,某​些​黑​客​会​从​规​避​计​算​机​系​统​的​安​全​控​制​的​学​术​挑​战​中​获​得​乐​趣​。​由​于​这​个​原​因​,新​闻​媒​界​经​常​使​用​“​黑​客​”​这​个​术​语​来​描​述​那​些​蓄​意​地​、​带​有​犯​罪​意​图​的​非​法​进​入​系​统​和​网​络​的​人​。​描​述​这​类​人​的​更​恰​当​的​用​语​应​该​是​怪​客​(cracker) — 一​个​被​黑​客​在​八​十​年​代​中​期​创​造​出​来​的​术​语​,用​来​区​分​这​两​大​类​人​。​

2.2.1.1. 灰​度​

寻​找​并​利​用​系​统​和​网​络​弱​点​的​人​被​区​分​成​不​同​种​类​。​这​种​类​别​是​按​照​他​们​在​进​行​安​全​弱​点​调​查​时​所​“​戴​”​的​帽​子​颜​色​来​区​分​的​。​帽​子​的​颜​色​代​表​了​他​们​的​企​图​。​

白​帽​黑​客​(white hat hacker)测​试​网​络​和​系​统​的​性​能​来​判​定​它​们​能​够​承​受​入​侵​的​强​弱​程​度​。​通​常​,白​帽​黑​客​攻​击​他​们​自​己​的​系​统​,或​被​聘​请​来​攻​击​客​户​的​系​统​以​便​进​行​安​全​审​查​。​学​术​研​究​人​员​和​专​职​安​全​顾​问​就​属​于​白​帽​黑​客​。​

黑​帽​黑​客​(black hat hacker)是​怪​客​的​同​义​词​。​通​常​来​说​,怪​客​并​不​注​重​于​入​侵​系​统​的​编​程​或​学​术​方​面​。​他​们​经​常​为​了​个​人​利​益​而​依​靠​现​成​的​攻​击​程​序​和​著​名​的​系​统​漏​洞​弱​点​来​发​现​保​密​信​息​,或​破​坏​目​标​系​统​或​网​络​。​

灰​帽​黑​客​(grey hat hacker)在​多​数​情​况​下​都​具​备​白​帽​黑​客​的​技​术​和​意​图​,但​是​偶​尔​也​使​用​这​种​知​识​来​进​行​不​太​光​明​正​大​的​行​径​。​灰​帽​黑​客​可​以​被​认​为​是​偶​尔​会​为​个​人​企​图​而​戴​着​黑​帽​的​白​帽​黑​客​。​

典​型​的​灰​帽​黑​客​会​遵​循​另​一​种​黑​客​道​德​。​他​认​为​闯​入​系​统​是​无​可​非​议​的​,只​要​不​进​行​盗​窃​行​为​或​破​坏​保​密​信​息​就​可​以​。​不​过​,某​些​人​可​能​会​说​,闯​入​系​统​本​身​就​是​不​道​德​的​。​

不​管​入​侵​者​的​意​图​如​何​,了​解​怪​客​会​试​图​利​用​的​漏​洞​这​一​点​都​很​重​要​。​本​章​的​剩​余​部​分​将​会​集​中​讨​论​这​些​问​题​。​

2.2.2. 对​网​络​安​全​的​威​胁​

在​配​置​网​络​的​以​下​部​分​时​,某​些​不​良​习​惯​会​增​加​系​统​被​攻​击​的​危​险​性​。​

2.2.2.1. 不​安​全​的​体​系​

配​置​不​正​确​的​网​络​是​未​经​授​权​用​户​的​主​要​入​口​。​把​基​于​信​任​的​开​放​型​本​地​网​络​向​极​不​安​全​的​互​联​网​敞​开​就​如​同​住​在​罪​案​重​重​的​街​区​里​却​不​封​门​闭​户​一​样 — 在​一​段​时​间​内​可​能​会​平​安​无​事​,但​是​最​终​总​会​有​人​要​利​用​这​个​机​会​。​

2.2.2.1.1. 广​播​式​网​络​

系​统​管​理​员​经​常​忽​略​联​网​硬​件​在​保​安​计​划​里​的​重​要​性​。​简​单​的​硬​件​,如​集​线​器​和​路​由​器​,依​赖​广​播​或​非​转​换​的​原​理​;这​就​是​说​,不​管​什​么​时​候​某​个​节​点​通​过​网​络​来​传​输​数​据​,集​线​器​或​路​由​器​都​会​广​播​这​些​数​据​分​组​,直​到​接​收​节​点​收​到​并​处​理​这​些​数​据​为​止​。​这​种​方​法​最​容​易​被​外​界​入​侵​者​和​本​地​未​经​授​权​的​用​户​施​行​地​址​解​析​协​议​(arp)或​媒​体​访​问​控​制​(MAC)的​地​址​假​冒​攻​击​。​

2.2.2.1.2. 中​央​化​的​服​务​器​

另​一​种​潜​在​的​联​网​危​险​是​对​中​央​化​计​算​系​统​的​使​用​。​许​多​企​事​业​中​最​常​使​用​的​节​省​开​支​的​措​施​就​是​把​所​有​的​服​务​都​集​中​于​一​个​功​能​强​大​的​机​器​上​。​这​种​方​法​会​很​省​事​,因​为​它​比​多​服​务​器​的​配​置​要​更​好​管​理​,而​且​开​支​也​少​。​然​而​,中​央​化​的​服​务​器​也​给​网​络​带​来​了​单​一​失​效​点​的​问​题​。​如​果​中​央​服​务​器​被​弱​化​了​,这​就​会​导​致​整​个​网​络​都​变​得​无​法​使​用​,甚​至​造​成​数​据​被​篡​改​或​盗​窃​。​在​以​上​这​些​情​况​下​,中​央​服​务​器​就​成​为​一​个​敞​开​的​大​门​,允​许​任​何​人​进​入​整​个​网​络​。​

2.2.3. 对​服​务​器​安​全​的​威​胁​

服​务​器​安​全​和​网​络​安​全​同​等​重​要​,这​是​因​为​服​务​器​中​常​常​贮​存​着​机​构​内​部​的​大​量​重​要​信​息​。​如​果​一​个​服​务​器​泄​密​了​,其​中​的​所​有​内​容​都​可​以​被​怪​客​随​心​所​欲​地​利​用​。​以​下​各​节​讨​论​了​一​些​主​要​问​题​。​

2.2.3.1. 未​用​的​服​务​和​开​放​的​端​口​

一​个​完​全​安​装​的​红​帽​企​业 Linux 包​括​1000个​以​上​的​应​用​程​序​和​库​软​件​包​。​不​过​,多​数​服​务​器​管​理​员​并​不​打​算​安​装​其​中​的​每​个​软​件​包​,而​倾​向​于​进​行​基​本​安​装​,再​包​括​几​个​服​务​器​程​序​。​

2.2.3.2. 未​打​补​丁​的​服​务​

多​数​被​包​括​在​默​认​安​装​中​的​服​务​器​程​序​是​稳​定​的​、​被​全​面​测​试​过​的​软​件​。​在​生​产​然​而​,世​界​上​并​不​存​在​完​美​无​缺​的​软​件​,万​事​都​有​提​高​的​余​地​。​除​此​之​外​,由​于​更​新​的​软​件​在​生​产​环​境​中​的​使​用​时​间​不​长​,或​者​因​为​它​没​有​其​它​服​务​器​软​件​那​么​流​行​,它​可​能​没​有​像​人​们​所​期​待​的​一​样​被​全​面​测​试​过​。​环​境​中​被​使​用​了​多​年​后​,这​些​软​件​的​源​码​已​经​被​全​面​精​化​,许​多​软​件​中​存​在​的​错​误​已​被​发​现​并​修​正​。​

然​而​,世​界​上​并​不​存​在​完​美​无​缺​的​软​件​,万​事​都​有​提​高​的​余​地​。​除​此​之​外​,由​于​更​新​的​软​件​在​生​产​环​境​中​的​使​用​时​间​不​长​,或​者​因​为​它​没​有​其​它​服​务​器​软​件​那​么​流​行​,它​可​能​没​有​像​人​们​所​期​待​的​一​样​被​全​面​测​试​过​。​

开​发​者​和​系​统​管​理​员​经​常​会​在​服​务​器​程​序​中​发​现​可​被​当​作​漏​洞​而​利​用​的​程​序​错​误​并​在​错​误​跟​踪​和​安​全​相​关​的​网​站​(如 Bugtraq 邮​件​列​表​:http://www.securityfocus.com)或​计​算​机​紧​急​响​应​组​(CERT)的​网​站​(http://www.cert.org)上​公​开​这​些​信​息​。​虽​然​这​些​机​制​是​向​社​区​发​出​安​全​弱​点​警​告​的​有​效​方​法​,但​它​却​要​依​靠​管​理​员​来​及​时​地​给​各​自​的​系​统​打​补​丁​。​如​果​怪​客​也​能​够​获​得​同​样​的​弱​点​跟​踪​服​务​,他​们​一​有​机​会​就​会​使​用​这​些​信​息​来​攻​击​未​加​补​丁​的​系​统​。​优​秀​的​系​统​管​理​要​求​你​时​刻​警​惕​、​时​刻​跟​踪​错​误​、​并​且​进​行​正​确​的​系​统​维​护​来​保​证​安​全​的​计​算​环​境​。​

关​于​保​持​系​统​更​新​状​态​的​详​情​,请​参​阅​第 2.4 节 “安​全​更​新​”

2.2.3.3. 管​理​疏​忽​

忘​记​给​系​统​打​补​丁​的​管​理​员​是​威​胁​服​务​器​安​全​的​最​大​因​素​。​据​系​统​管​理​网​络​和​安​全​学​院​(System Administration Network and Security Institute,SANS)调​查​,计​算​机​安​全​弱​点​的​主​要​导​致​原​因​是​“​指​派​未​经​培​训​的​人​员​来​维​护​安​全​,并​且​不​提​供​使​其​能​够​胜​任​的​培​训​和​时​间​”​[1]。​这​不​仅​是​指​那​些​没​有​经​验​的​管​理​员​,也​是​指​那​些​过​分​自​信​或​自​以​为​是​的​管​理​员​。​

某​些​管​理​员​忘​记​了​给​他​们​的​服​务​器​和​工​作​站​打​补​丁​,而​另​一​些​则​忘​记​了​查​看​来​自​系​统​内​核​或​网​络​交​通​的​日​志​消​息​。​另​一​个​常​见​错​误​是​不​改​变​服​务​的​默​认​密​码​或​密​码​。​例​如​,某​些​数​据​库​有​默​认​的​管​理​密​码​,因​为​数​据​库​开​发​者​假​定​系​统​管​理​员​在​安​装​后​会​立​即​改​变​这​些​密​码​。​如​果​某​个​数​据​库​管​理​员​忘​记​了​改​变​密​码​,甚​至​一​个​毫​无​经​验​的​怪​客​也​能​够​使​用​众​所​周​知​的​默​认​密​码​来​获​得​到​数​据​库​的​管​理​特​权​。​这​里​仅​列​举​了​几​种​漫​不​经​心​的​管​理​会​导​致​的​服​务​器​弱​化​情​况​。​

2.2.3.4. 带​有​固​有​不​安​全​因​素​的​服​务​

如​果​所​选​的​网​络​服​务​带​有​固​有​的​不​安​全​因​素​,即​便​是​警​惕​性​最​高​的​组​织​也​可​能​成​为​受​害​者​。​例​如​,许​多​服​务​是​在​用​于​可​信​任​网​络​的​假​定​条​件​下​被​开​发​的​;然​而​,一​旦​这​些​服​务​可​通​过​互​联​网​被​使​用​,这​个​假​定​条​件​就​不​适​用​了 — 互​联​网​本​身​就​带​有​固​有​的​不​可​信​任​性​。​

还​有​一​类​不​安​全​网​络​服​务​是​那​些​需​要​用​户​名​和​密​码​来​验​证​的​服​务​。​Telnet 和 FTP 就​属​于​这​类​服​务​。​如​果​分​组​嗅​探​软​件​正​在​监​视​远​程​用​户​和​这​类​服​务​器​间​的​交​通​,密​码​就​能​够​被​轻​而​易​举​地​窃​取​。​

以​上​提​及​的​服​务​还​会​轻​易​地​遭​到​安​全​行​业​称​之​为​中​间​人​”​(man-in-the-middle)的​攻​击​。​在​这​类​攻​击​中​,怪​客​会​设​计​让​网​络​上​的​一​个​已​攻​破​的​名​称​服​务​器​指​向​自​己​的​机​器​而​不​是​实​际​的​目​标​服​务​器​来​重​新​导​向​网​络​交​通​。​一​旦​某​人​打​开​了​一​个​到​该​服​务​器​的​远​程​会​话​,怪​客​的​机​器​就​会​充​当​一​个​隐​型​导​管​,悄​悄​地​坐​在​远​程​服​务​和​毫​无​疑​心​的​用​户​间​截​取​信​息​。​怪​客​可​以​用​这​种​方​法​来​收​集​管​理​性​密​码​和​原​始​数​据​,服​务​器​和​用​户​对​此​却​一​无​所​知​。​

另​一​类​不​安​全​服​务​是​网​络​文​件​系​统​和​信​息​服​务​,如 NFS 或 NIS。​它​们​是​专​门​为​使​用 LAN 而​开​发​的​,但​是​不​幸​的​是​,后​来​又​被​扩​展​来​包​括 WAN(以​方​便​于​远​程​用​户​)。​按​照​默​认​设​置​,NFS 没​有​配​置​任​何​验​证​或​安​全​机​制​来​防​止​怪​客​挂​载 NFS 共​享​以​便​使​用​其​中​的​任​何​数​据​。​同​样​的​,NIS 也​有​网​络​上​的​每​个​计​算​机​都​必​须​提​供​的​重​要​信​息​,包​括​密​码​和​文​件​权​限​。​它​们​都​存​在​于​一​个​纯​文​本​的 ACSII 或 DBM(ASCII-derived)数​据​库​中​。​能​够​进​入​这​个​数​据​库​的​怪​客​就​能​够​进​入​网​络​上​的​每​个​用​户​帐​号​,包​括​管​理​员​的​帐​号​。​

2.2.4. 对​工​作​站​和​家​用​电​脑​安​全​性​的​威​胁​

工​作​站​和​家​用​电​脑​对​攻​击​者​的​吸​引​力​可​能​不​会​像​网​络​或​服​务​器​那​么​大​,但​是​由​于​其​上​经​常​包​含​保​密​信​息​,如​信​用​卡​信​息​,这​些​机​器​也​被​系​统​怪​客​看​好​。​工​作​站​还​能​够​被​怪​客​在​协​调​的​攻​击​中​被​用​作​“​从​属​”​机​器​,而​其​主​人​对​此​却​一​无​所​知​。​由​于​这​些​原​因​,了​解​工​作​站​的​弱​点​能​够​帮​助​用​户​避​免​重​新​安​装​操​作​系​统​的​麻​烦​。​

2.2.4.1. 不​良​密​码

2.2.4.2. 有​弱​点​的​客​户​应​用​程​序​

虽​然​管​理​员​可​能​会​有​一​个​完​全​安​全​的​、​全​面​打​过​补​丁​的​服​务​器​,这​并​不​意​味​着​远​程​用​户​在​进​入​它​时​就​是​安​全​的​。​例​如​,如​果​服​务​器​提​供​经​由​公​共​网​络​的 Telnet 或 FTP 服​务​,攻​击​者​可​能​会​在​纯​文​本​用​户​名​和​密​码​在​网​络​中​经​过​时​劫​获​它​们​,然​后​使​用​这​个​帐​号​信​息​来​进​入​远​程​用​户​的​工​作​站​。​

甚​至​在​使​用​安​全​协​议​如 SSH 的​时​候​,如​果​远​程​用​户​没​有​更​新​他​们​的​客​户​程​序​,他​们​也​可​能​遭​受​某​些​攻​击​。​例​如​,使​用 SSH 第​一​版​本​的​用​户​就​有​可​能​遭​受​来​自​蓄​意​不​良​的 SSH 服​务​器​的 X 转​发​攻​击​。​一​旦​连​接​到​了​服​务​器​上​,攻​击​者​就​能​够​不​动​声​色​地​截​取​客​户​通​过​网​络​进​行​的​击​键​和​鼠​标​点​击​。​这​个​问​题​在 SSH 协​议​的​第​二​版​本​中​被​修​正​了​,但​是​它​却​要​依​赖​于​用​户​自​身​的​自​觉​性​,看​他​是​否​关​注​哪​些​应​用​程​序​有​哪​些​弱​点​,并​在​必​要​时​更​新​这​些​程​序​。​

2.3. 常​见​的​漏​洞​利​用​和​攻​击​

表 2.1 “常​见​的​漏​洞​利​用​” 详​细​列​举​了​某​些​最​常​见​的​漏​洞​利​用​以​及​入​侵​者​用​来​进​入​组​织​内​部​网​络​资​源​的​常​用​入​口​。​避​免​这​些​常​见​漏​洞​被​利​用​的​关​键​是​了​解​这​些​活​动​的​进​行​方​式​,以​及​管​理​员​应​该​如​何​保​护​他​们​的​网​络​来​免​遭​这​类​攻​击​。​

漏​洞​利​用​ 描​述​ 备​注​
空​口​令​或​默​认​口​令​ 把​系​统​管​理​口​令​设​为​空​或​使​用​产​品​生​产​商​所​设​置​的​默​认​口​令​。​虽​然​某​些​运​行​在 Linux 上​的​服​务​有​默​认​的​管​理​口​令​(红​帽​企​业 Linux 5中​并​不​包​括​),但​这​种​情​况​多​发​生​在​硬​件​(如​路​由​器​和​防​火​墙​)产​品​中​见​。​
在​网​络​设​备​,如​路​由​器​、​防​火​墙​、​VPN 和​网​络​连​接​贮​存​设​备​(NAS)中​最​常​见​。
在​许​多​老​的​操​作​系​统​,特​别​是​带​有​服​务​的​操​作​系​统​,如 UNIX 和 Windows 中​很​常​见​。
管​理​员​有​时​会​在​匆​忙​间​创​建​一​个​有​特​权​的​用​户​而​把​口​令​设​为​空​。​这​将​会​成​为​发​现​了​这​个​用​户​帐​户​的​入​侵​者​的​完​美​入​口​。
默​认​的​共​享​密​钥​ 安​全​服​务​有​时​会​把​用​于​开​发​或​评​估​测​试​目​的​的​默​认​安​全​密​钥​打​入​软​件​包​内​。​如​果​这​些​密​钥​不​经​改​变​而​被​用​于​互​联​网​上​的​生​产​环​境​,那​么​任​何​有​相​同​默​认​密​钥​的​用​户​都​可​以​访​问​使​用​那​个​共​享​密​钥​的​资​源​,以​及​其​中​的​保​密​信​息​。​
在​无​线​网​访​问​点​设​备​和​预​配​置​的​安​全​服​务​器​设​备​中​最​常​见​。
IP 假​冒​(Spoofing) 某​个​远​程​机​器​冒​充​您​的​本​地​网​络​上​的​一​个​节​点​。​它​在​您​的​服​务​器​上​寻​找​弱​点​,并​安​装​一​个​后​门​程​序​或​特​洛​伊​木​马​来​获​取​对​你​的​网​络​资​源​的​控​制​。​
由​于​“​假​冒​”​要​求​怪​客​预​测 TCP/IP SYN-ACK 号​码​来​协​调​到​目​标​系​统​的​连​接​,它​通​常​较​难​做​到​。​但​是​有​好​几​种​工​具​可​以​帮​助​攻​击​者​从​事​这​类​活​动​。
这​种​攻​击​会​利​用​目​标​系​统​上​运​行​的​、​使​用​基​于​源​(source-based)的​验​证​技​术​的​服​务​(如 rsh、​telnet、​FTP 等​等​)。​推​荐​使​用 PKI 及​其​它​用​在 ssh 或 SSL/TLS 中​使​用​的​加​密​验​证​技​术​。
窃​听​ 通​过​窃​听​网​络​中​的​两​个​活​跃​节​点​间​的​连​接​来​收​集​它​们​之​间​传​递​的​信​息​。​
这​类​攻​击​多​数​在​使​用​纯​文​本​传​输​协​议​(如 Telnet、​FTP、​和 HTTP 传​输​)时​发​生​。
要​实​行​这​种​攻​击​,远​程​攻​击​者​必​须​可​以​访​问​到 LAN 上​的​一​个​已​被​攻​破​的​系​统​;通​常​,怪​客​会​使​用​某​种​积​极​攻​击​方​式​(如 IP 假​冒​或​中​间​人​攻​击​)来​试​图​攻​破 LAN 上​的​某​个​系​统​。
防​护​措​施​包​括​加​密​钥​匙​、​一​次​性​口​令​、​以​及​防​窃​听​的​加​密​验​证​;使​用​高​级​方​法​加​密​的​传​输​也​值​得​一​试​。
服​务​弱​点​ 攻​击​者​在​互​联​网​上​运​行​的​某​个​服​务​中​寻​找​缺​陷​或​漏​洞​;通​过​这​个​弱​点​,攻​击​者​可​以​攻​击​整​个​系​统​以​及​系​统​上​的​任​何​数​据​,甚​至​还​能​破​坏​网​络​上​的​其​它​系​统​。​
基​于 HTTP 的​服​务​,如 CGI,在​执​行​远​程​命​令​甚​至​使​用​互​动 shell 方​面​有​弱​点​。​即​便​作​为​一​名​无​特​权​的​用​户​来​运​行 HTTP 服​务​,攻​击​者​也​可​以​读​取​配​置​文​件​和​网​络​图​等​。​或​者​,攻​击​者​可​以​发​动​“​拒​绝​服​务​”​攻​击​来​用​尽​系​统​资​源​或​使​其​无​法​为​其​他​用​户​提​供​服​务​。
在​开​发​和​测​试​中​,某​些​服​务​中​的​弱​点​可​能​没​有​被​注​意​到​;这​些​弱​点​(如​:缓​冲​区​溢​出​(buffer overflow)。​攻​击​者​可​以​通​过​使​用​大​于​可​接​受​的​信​息​量​来​填​充​地​址​内​存​,导​致​服​务​崩​溃​,从​而​给​攻​击​者​提​供​一​个​互​动​命​令​提​示​。​)能​够​给​攻​击​者​完​全​的​管​理​控​制​。
系​统​管​理​员​应​该​确​保​服​务​不​是​以​根​用​户​身​份​运​行​;并​时​刻​关​注​来​自​开​发​商​或​安​全​组​织​(如 CERT 和 CVE)的​补​丁​和​勘​误​更​新​。
应​用​程​序​弱​点​ 攻​击​者​在​桌​面​系​统​和​工​作​站​应​用​程​序​(如​电​子​邮​件​客​户​程​序​)中​寻​找​缺​陷​并​执​行​任​意​程​序​编​码​、​插​入​用​于​未​来​攻​击​行​为​的​特​洛​伊​木​马​、​或​者​崩​溃​系​统​。​如​果​被​破​坏​的​工​作​站​拥​有​对​整​个​网​络​的​管​理​特​权​,还​会​发​生​进​一​步​的​漏​洞​利​用​。​
工​作​站​和​桌​面​系​统​更​容​易​被​蓄​意​利​用​,因​为​使​用​工​作​站​和​桌​面​系​统​的​用​户​没​有​防​止​或​检​测​攻​击​活​动​的​专​业​知​识​或​经​验​。​把​安​装​未​经​授​权​的​软​件​或​打​开​不​请​自​来​的​邮​件​的​危​险​性​通​知​给​用​户​是​非​常​重​要​的​。
可​以​实​施​一​些​防​护​措​施​,如​电​子​邮​件​客​户​软​件​不​自​动​打​开​或​执​行​附​件​。​此​外​,通​过 红帽网络 或​其​它​系​统​管​理​服​务​来​自​动​更​新​工​作​站​软​件​也​可​以​减​轻​应​用​多​种​安​全​政​策​所​带​来​的​负​担​。
拒​绝​服​务​(DoS)攻​击​ 攻​击​者​或​一​组​攻​击​者​通​过​给​目​标​机​器​(服​务​器​、​路​由​器​或​工​作​站​)发​送​未​经​授​权​的​数​据​来​对​某​个​机​构​的​网​络​或​服​务​器​资​源​的​攻​击​。​这​会​迫​使​合​法​用​户​无​法​使​用​资​源​。​
在​美​国​报​导​最​多​的​一​个 DoS 事​件​多​发​生​在​2000年​。​那​次​攻​击​是​一​次​协​调​的​试​通​洪​流​(ping flood)攻​击​,它​令​几​个​带​有​高​带​宽​连​接​的​被​弱​化​的​系​统​成​为​僵​尸​(zombies),或​重​导​向​广​播​器​,使​好​几​家​网​络​流​量​极​大​的​商​业​和​政​府​网​站​都​陷​于​瘫​痪​。
源​数​据​包​通​常​是​伪​造​的​(并​被​重​新​广​播​),调​查​攻​击​的​真​正​发​源​地​是​非​常​困​难​的​。
在​使​用 iptables 和​类​似 snort 的​网​络 IDS 技​术​的​入​口​过​滤​(IETF rfc2267)方​面​的​进​展​,给​管​理​员​跟​踪​并​防​御​分​布​型 DoS 攻​击​提​供​了​协​助​。
表 2.1. 常​见​的​漏​洞​利​用​

2.4. 安​全​更​新​

当​发​现​了​安​全​弱​点​后​,您​必​须​更​新​受​到​影​响​的​软​件​以​便​把​潜​在​的​安​全​威​胁​限​制​在​一​定​范​围​内​。​如​果​该​软​件​是​目​前​被​支​持​的​红​帽​企​业 Linux 发​行​版​本​的​一​部​分​,红​帽​会​保​证​尽​快​地​发​行​修​正​弱​点​的​更​新​软​件​包​。​在​某​个​安​全​漏​洞​被​宣​布​的​同​时​通​常​会​附​带​补​丁​(或​修​正​问​题​的​源​码​)。​然​后​,该​补​丁​就​会​被​应​用​到​红​帽​企​业 Linux 软​件​包​中​,当​它​被​红​帽​的​质​检​组​测​试​后​就​会​作​为​勘​误​更​新​而​被​发​行​。​然​而​,如​果​安​全​漏​洞​在​宣​布​的​时​候​没​有​附​带​补​丁​,红​帽​的​开​发​人​员​就​会​和​该​软​件​的​维​护​者​合​作​来​修​正​这​个​问​题​。​当​问​题​被​修​正​后​,该​软​件​包​会​被​测​试​并​作​为​勘​误​更​新​而​发​行​。​

如​果​和​您​使​用​的​软​件​有​关​的​勘​误​更​新​被​发​行​了​,我​们​强​烈​建​议​您​尽​快​更​新​受​到​影​响​的​软​件​包​,以​便​尽​量​缩​短​系​统​上​存​有​潜​在​威​胁​的​时​间​。​

2.4.1. 更​新​软​件​包​

在​更​新​系​统​上​的​软​件​包​时​,从​可​信​任​的​地​点​下​载​软​件​更​新​至​关​重​要​。​某​个​攻​击​者​可​以​轻​而​易​举​地​使​用​修​正​问​题​的​同​一​版​本​号​码​来​重​新​建​构​某​个​软​件​包​,却​在​其​中​隐​藏​另​一​种​安​全​漏​洞​,然​后​在​互​联​网​上​发​行​。​如​果​是​这​种​情​况​,使​用​原​始 RPM 来​校​验​软​件​包​这​一​方​法​就​检​测​不​到​这​个​漏​洞​。​因​此​,从​可​信​任​的​地​点​(如​红​帽​)下​载 RPM,并​检​查​软​件​包​的​签​名​来​校​验​它​的​完​好​性​这​一​点​至​关​重​要​。​

红​帽​提​供​了​两​种​检​索​安​全​勘​误​更​新​的​方​法​:

  1. 在​红​帽​网​络​上​列​出​并​供​下​载​

  2. 在​红​帽​勘​误​网​站​上​列​出​并​供​下​载​

备​注​

从​红​帽​企​业 Linux 产​品​系​列​起​,更​新​的​软​件​包​只​能​从​红​帽​网​络​上​下​载​。​虽​然​红​帽​勘​误​网​站​包​括​了​更​新​信​息​,但​它​不​包​括​可​下​载​的​实​际​软​件​包​。​

2.4.1.1. 使​用​红​帽​网​络​

红​帽​网​络​可​以​自​动​化​大​部​分​更​新​步​骤​。​它​会​判​断​哪​些​软​件​包​是​您​的​系​统​必​需​的​;并​从​一​个​安​全​的​软​件​存​储​库​中​下​载​它​们​;校​验 RPM 签​名​来​确​定​它​们​没​有​被​篡​改​;然​后​更​新​它​们​。​软​件​包​安​装​可​以​马​上​进​行​,也​可​以​被​安​排​在​某​一​特​定​时​间​段​内​进​行​。​

对​于​每​台​要​更​新​的​机​器​,红​帽​网​络​都​需​要​一​份​系​统​配​置​档​案​(System Profile)。​系​统​配​置​档​案​中​包​含​了​和​系​统​相​关​的​硬​件​和​软​件​信​息​。​该​信​息​会​被​严​格​保​密​,绝​不​会​泄​漏​给​他​人​。​它​仅​被​用​来​判​定​每​个​系​统​上​应​该​使​用​哪​些​勘​误​更​新​。​没​有​它​,红​帽​网​络​将​无​法​判​定​系​统​所​需​的​更​新​。​当​安​全​勘​误​(或​任​何​一​种​类​型​的​勘​误​)被​发​行​后​,红​帽​网​络​会​发​送​一​份​电​子​邮​件​,其​中​不​仅​描​述​了​该​勘​误​,还​列​出​了​将​会​受​到​影​响​的​系​统​。​要​应​用​更​新​,使​用​红​帽​更​新​代​理​或​通​过 http://rhn.redhat.com 网​站​来​调​度​要​更​新​的​软​件​包​。​

窍​门​

红​帽​企​业 Linux 中​包​括​了 红​帽​网​络​警​告​提​示​工​具​。​它​是​一​个​简​便​的​面​板​图​标​, 当​有​注​册​的​红​帽​企​业​版 Linux 系​统​更​新​时​会​显​示​提​示​。​关​于​这​个​小​程​序​的​详​情​,请​参​考​以​下 URL:http://rhn.redhat.com/help/basic/applet.html

重​要​信​息​

在​安​装​任​何​安​全​勘​误​之​前​,请​详​细​阅​读​包​括​在​勘​误​报​告​内​的​特​殊​说​明​,并​正​确​地​执​行​它​们​。​关​于​如​何​应​用​勘​误​更​新​的​常​规​说​明​,请​参​阅​第 2.4.1.5 节 “应​用​改​变​”。​

2.4.1.2. 使​用​红​帽​勘​误​网​站​

当​安​全​勘​误​报​告​被​发​行​时​,它​们​会​在​红​帽​勘​误​网​站​上​公​布​:http://www.redhat.com/security/。​通​过​这​个​网​页​选​择​您​的​系​统​和​版​本​,然​后​选​择​网​页​上​方​的 「​security」​按​钮​来​只​显​示​红​帽​企​业 Linux 的​安​全​顾​问​。​如​果​某​个​安​全​顾​问​中​的​概​要​所​描​述​的​是​用​在​您​的​系​统​上​的​某​个​软​件​包​,点​击​概​要​来​阅​读​详​情​。​

详​情​页​描​述​了​该​安​全​漏​洞​,以​及​若​要​修​正​这​个​漏​洞​,除​了​升​级​软​件​包​之​外​还​必​须​要​执​行​的​其​它​步​骤​的​特​殊​说​明​。​

要​下​载​更​新​的​软​件​包​,点​击​链​接​登​录​到​红​帽​网​络​,然​后​点​击​软​件​包​的​名​称​,并​把​它​们​保​存​在​硬​盘​驱​动​器​上​。​极​力​推​荐​您​创​建​一​个​新​目​录​,如 /tmp/updates,然​后​把​所​有​下​载​的​软​件​包​放​置​在​其​中​。​

2.4.1.3. 验​证​签​注​的​软​件​包​

所​有​红​帽​企​业 Linux 的​软​件​包​都​使​用​红​帽​的 GPG 密​钥​进​行​签​注​。​GPG 是 GNU Privacy Guard(GNU 隐​私​卫​士​)或 GnuPG 的​缩​写​。​它​是​被​用​来​确​保​发​行​文​件​的​真​实​性​的​自​由​软​件​。​例​如​,红​帽​拥​有​的​私​人​密​钥​(或​保​密​的​密​钥​)会​锁​住​软​件​包​,而​公​共​密​钥​可​以​打​开​并​校​验​软​件​包​。​如​果​在 RPM 校​验​过​程​中​,被​红​帽​发​行​的​公​共​密​钥​和​私​人​密​钥​不​匹​配​,该​软​件​包​就​可​能​被​篡​改​了​,因​此​不​可​信​任​。​

红​帽​企​业 Linux 中​的 RPM 工​具​会​在​安​装​软​件​包​前​自​动​校​验​它​的 GPG 签​名​。​如​果​您​没​有​安​装 红​帽 GPG 密​钥​钥​,请​从​一​个​安​全​、​静​态​的​位​置​(如 红​帽​企​业 Linux 安​装​光​盘​)上​安​装​它​。​

假​定​光​盘​被​挂​载​在 /mnt/cdrom,使​用​以​下​命​令​来​把​它​导​入​到​您​的​钥​匙​圈​上​(keyring,系​统​上​可​信​任​密​钥​的​数​据​库​):

rpm --import /mnt/cdrom/RPM-GPG-KEY

要​显​示​所​有​已​安​装​的​用​于 RPM 校​验​的​密​钥​列​表​,执​行​以​下​命​令​:

rpm -qa gpg-pubkey*

红​帽​密​钥​的​输​出​会​包​括​:

gpg-pubkey-db42a60e-37ea5438

要​显​示​特​定​公​钥​的​详​情​,使​用 rpm -qi 命​令​以​及​前​一​命​令​的​输​出​,如​:

rpm -qi gpg-pubkey-db42a60e-37ea5438

在​安​装 RPM 文​件​前​校​验​它​的​签​名​这​一​个​步​骤​至​关​重​要​。​只​有​这​样​才​能​确​保​这​些​文​件​没​有​从​红​帽​软​件​包​的​发​行​版​本​中​被​篡​改​。​要​立​刻​校​验​所​有​已​下​载​的​软​件​包​,使​用​以​下​命​令​:

rpm -K /tmp/updates/*.rpm

对​于​每​个​软​件​包​,如​果 GPG 钥​匙​校​验​成​功​,该​命​令​会​返​回​:gpg OK。​否​则​,确​认​您​使​用​的​是​正​确​的​红​帽​公​共​密​钥​,并​校​验​其​内​容​。​没​有​通​过 GPG 校​验​的​软​件​包​不​应​该​被​安​装​,因​为​它​们​可​能​已​经​被​第​三​方​篡​改​了​。​

校​验​了 GPG 密​钥​,并​下​载​了​所​有​和​勘​误​报​告​有​关​的​软​件​包​后​,在 shell 提​示​符​下​以​根​用​户​身​份​安​装​它​们​。​

2.4.1.4. 安​装​签​注​的​软​件​包​

对​多​数​软​件​包​(除​了​内​核​软​件​包​外​)来​说​,您​可​以​使​用​以​下​命​令​来​安​全​地​安​装​:

rpm -Uvh /tmp/updates/*.rpm

对​于​内​核​软​件​包​,请​使​用​以​下​命​令​:

rpm -ivh /tmp/updates/<kernel-package>

把​前​一​个​例​子​中​的 <kernel-package> 改​成​内​核 RPM 的​名​称​。​

一​旦​系​统​使​用​新​内​核​被​安​全​引​导​后​,你​可​以​使​用​以​下​命​令​来​删​除​老​内​核​:

rpm -e <old-kernel-package>

把​前​一​个​例​子​中​的 <old-kernel-package> 改​成​老​内​核 RPM 的​名​称​。​

备​注​

您​不​必​删​除​老​内​核​。​默​认​的​引​导​装​载​程​序 GRUB 允​许​您​安​装​多​个​内​核​,然​后​在​引​导​时​从​菜​单​中​选​择​要​引​导​的​内​核​。​

重​要​信​息​

在​安​装​任​何​安​全​勘​误​之​前​,请​详​细​阅​读​包​括​在​勘​误​报​告​内​的​特​殊​说​明​,并​正​确​地​执​行​它​们​。​关​于​如​何​应​用​勘​误​更​新​的​常​规​说​明​,请​参​阅​第 2.4.1.5 节 “应​用​改​变​”。​

2.4.1.5. 应​用​改​变​

通​过​红​帽​网​络​或​红​帽​勘​误​网​站​下​载​并​安​装​了​安​全​勘​误​后​,停​用​旧​有​软​件​、​使​用​新​软​件​这​一​点​很​重​要​。​怎​么​做​到​这​一​点​要​根​据​您​的​软​件​类​型​而​定​。​以​下​的​列​表​详​细​列​举​了​软​件​的​一​般​类​别​,并​为​更​新​软​件​包​后​使​用​被​更​新​的​版​本​提​供​了​说​明​。​

备​注​

通​常​说​来​,重​新​引​导​系​统​是​保​证​所​用​软​件​版​本​是​最​新​版​本​的​最​肯​定​方​法​;但​是​,系​统​管​理​员​并​不​总​是​能​够​使​用​这​个​办​法​。​

应​用​程​序​

用​户​空​间​的​应​用​程​序​是​指​能​够​被​系​统​用​户​引​发​的​任​何​程​序​。​通​常​,这​类​程​序​只​有​在​某​用​户​、​脚​本​、​或​自​动​化​任​务​工​具​启​动​它​们​时​才​被​使​用​,而​且​并​不​持​续​运​行​很​久​。​

当​这​类​用​户​空​间​的​应​用​程​序​被​更​新​后​,停​运​系​统​上​该​程​序​的​所​有​实​例​,然​后​再​重​新​启​动​它​来​使​用​更​新​的​版​本​。​

内​核​

内​核​是​红​帽​企​业 Linux 操​作​系​统​的​核​心​软​件​组​成​部​分​。​它​管​理​内​存​、​处​理​器​和​外​设​的​使​用​,并​进​行​所​有​的​任​务​调​度​。​

由​于​这​种​核​心​角​色​,您​不​可​能​不​停​运​计​算​机​而​重​新​启​动​内​核​。​因​此​,在​系​统​被​重​新​引​导​前​,更​新​的​内​核​版​本​就​无​法​被​使​用​。​

共​享​函​数​库​

共​享​函​数​库​是​一​组​程​序​代​码​的​集​合​,例​如 glibc 被​许​多​应​用​程​序​和​服​务​所​使​用​。​使​用​共​享​库​的​应​用​程​序​通​常​在​初​始​化​的​时​候​载​入​共​享​编​码​,因​此​使​用​已​更​新​的​共​享​库​的​应​用​程​序​必​须​停​止​并​重​新​启​动​。​

要​判​定​哪​些​链​接​到​某​个​共​享​库​的​应​用​程​序​正​在​运​行​,使​用 lsof 命​令​,如​:

lsof /usr/lib/libwrap.so*

该​命​令​返​回​一​个​使​用 TCP 会​绕​程​序​来​进​行​主​机​访​问​控​制​的​所​有​正​在​运​行​的​程​序​的​列​表​。​因​此​,如​果 tcp_wrappers 软​件​包​被​更​新​,所​有​在​这​里​列​出​的​程​序​都​必​须​被​停​运​并​重​新​启​动​。​

SysV 服​务​

SysV 服​务​是​在​引​导​过​程​中​启​动​的​驻​留​内​存​的​服​务​器​程​序​。​SysV 服​务​的​例​子​包​括​:sshd、​vsftpd、​和 xinetd。​

因​为​只​要​机​器​被​启​动​了​,这​些​程​序​就​通​常​持​久​性​地​滞​留​在​内​存​中​,所​以​每​个​更​新​了​的 SysV 服​务​在​软​件​包​升​级​后​必​须​被​停​运​并​重​新​启​动​。​你​可​以​使​用 服​务​配​置​工​具​来​做​到​,或​以​根​用​户​的​身​份​运​行​一​个 shell,然​后​使​用 /sbin/service 命​令​,如​:

/sbin/service <service-name> restart

在​前​面​的​例​子​中​,把 <service-name> 改​成​服​务​的​名​称​,如 sshd。​

xinetd 服​务​

xinetd 这​个​超​级​服​务​控​制​的​服​务​只​有​在​有​活​跃​连​接​时​才​运​行​。​由 xinetd 控​制​的​服​务​包​括​:Telnet、​IMAP 和 POP3。​

因​为​这​些​服​务​的​新​实​例​是​在​每​次 xinetd 收​到​新​请​求​时​被​启​动​的​,升​级​后​的​连​接​就​会​由​已​更​新​的​软​件​来​处​理​。​然​而​,如​果​由 xinetd 控​制​的​服​务​在​被​升​级​时​还​存​在​着​一​些​活​跃​连​接​的​话​,这​些​连​接​就​会​由​软​件​的​老​版​本​处​理​。​

要​停​止​某​个 xinetd 控​制​的​服​务​的​旧​实​例​,升​级​该​服​务​的​软​件​包​,然​后​停​止​所​有​当​前​正​在​运​行​的​进​程​。​使​用 ps 命​令​来​判​定​进​程​是​否​在​运​行​,再​使​用 killkillall 命​令​来​停​运​该​服​务​的​所​有​当​前​实​例​。​

例​如​:如​果 imap 软​件​包​的​安​全​勘​误​被​发​行​了​,升​级​这​些​软​件​包​,然​后​以​根​用​户​身​份​在 shell 提​示​符​下​键​入​以​下​命​令​:

ps -aux | grep imap

该​命​令​返​回​所​有​活​跃​的 IMAP 会​话​。​使​用​以​下​命​令​可​以​中​止​单​个​会​话​:

kill <PID>

如​果​这​个​命​令​无​法​中​止​会​话​,使​用​以​下​命​令​:

kill -9 <PID>

在​前​面​的​例​子​中​,把 <PID> 替​换​为 IMAP 会​话​的​进​程​号​码​(在 ps 命​令​输​出​的​第​二​列​)。​

要​中​止​所​有​活​跃​的 IMAP 会​话​,使​用​以​下​命​令​:

killall imapd

第 3 章 保​护​您​的​网​络​

3.1. 服​务​器​安​全​
3.1.1. 用 TCP Wrappers 和 xinetd 使​系​统​安​全​
3.1.2. 使 Portmap 安​全
3.1.3. 使 NIS 安​全​
3.1.4. 使 NFS 安​全​
3.1.5. 使 Apache HTTP 服​务​器​安​全​
3.1.6. 使 FTP 安​全​
3.1.7. 使​发​送​邮​件​安​全​
3.1.8. 检​验​哪​个​端​口​在​监​听
3.2. 可​插​入​验​证​模​块​(PAM)
3.2.1. PAM 的​优​越​性​
3.2.2. PAM 配​置​文​件​
3.2.3. PAM 配​置​文​件​的​格​式​
3.2.4. PAM 配​置​文​件​实​例​
3.2.5. 创​建 PAM 模​块​
3.2.6. PAM 和​管​理​用​户​身​份​缓​存​(Administrative Credential Caching)
3.2.7. PAM 和​设​备​拥​有​者​
3.2.8. 附​加​资​源​信​息​
3.3. TCP Wrappers 和 xinetd
3.3.1. TCP Wrappers
3.3.2. TCP Wrappers 配​置​文​件​
3.3.3. xinetd
3.3.4. xinetd 配​置​文​件​
3.3.5. 其​它​资​料​
3.4. 虚​拟​专​用​网​(VPN)
3.4.1. VPN 是​如​何​工​作​的​呢​?
3.4.2. VPNs 和 红帽企业 Linux
3.4.3. IPsec
3.4.4. 创​建​一​个 IPsec 连​接​
3.4.5. IPsec 的​安​装​
3.4.6. IPsec 主​机​到​主​机​连​接​配​置​
3.4.7. IPsec Network-to-Network Configuration(IPsec 网​络​到​网​络​配​置​)
3.4.8. 启​动​和​中​止 IPsec 连​接​
3.5. IPTables
3.5.1. 数​据​包​过​滤​
3.5.2. IPTables 和 IPChains 的​不​同​之​处​
3.5.3. IPTables 的​命​令​选​项​
3.5.4. 保​存 IPTables 规​则​
3.5.5. IPTables 控​制​脚​本​
3.5.6. IPTables 和 IPv6
3.5.7. 其​它​资​料​

3.1. 服​务​器​安​全​

当​一​个​系​统​被​用​作​公​开​网​络​的​服​务​器​时​,这​个​系​统​就​成​为​被​攻​击​的​目​标​。​因​此​,对​系​统​管​理​员​来​说​,能​够​使​该​系​统​坚​固​并​能​锁​定​某​些​服​务​是​极​为​重​要​的​。​

在​深​入​研​究​具​体​问​题​之​前​,让​我​们​先​总​览​一​下​增​强​服​务​器​安​全​的​一​些​有​用​的​建​议​:

  • 及​时​更​新​所​有​服​务​项​目​以​便​保​护​系​统​不​受​到​最​新​威​胁​。​

  • 尽​最​大​可​能​使​用​安​全​协​议​。​

  • 尽​最​大​可​能​给​一​台​机​器​只​提​供​一​种​类​型​的​网​络​服​务​。​

  • 对​所​有​服​务​器​严​格​监​控​,以​便​及​时​发​现​可​疑​活​动​。​

3.1.1. 用 TCP Wrappers 和 xinetd 使​系​统​安​全​

TCP Wrappers 为​多​种​不​同​的​服​务​提​供​访​问​把​关​的​功​能​。​大​多​数​现​代​网​络​服​务​系​统​,像 SSH、​Telnet、​和 FTP,都​利​用 TCP Wrappers 在​外​来​进​入​系​统​的​请​求​和​被​请​求​的​服​务​器​之​间​设​立​防​范​。​

如​果 TCP Wrappers 和 xinetd 一​起​联​合​使​用​,TCP Wrappers 的​功​能​就​会​增​强​,因​为​xinetd 作​为​超​级​服​务​器​可​以​为​系​统​就​访​问​、​登​录​、​捆​绑​、​重​定​向​和​资​源​利​用​方​面​提​供​额​外​的​服​务​享​有​权​控​制​。​

下​面​几​部​分​就​当​作​我​们​已​经​对​各​个​话​题​都​有​了​基​本​知​识​,都​会​集​中​探​讨​具​体​的​安​全​项​目​。​

3.1.1.1. 用 TCP Wrappers 提​高​安​全​性​能​

TCP Wrappers 除​了​可​以​提​供​对​种​种​服​务​的​拒​绝​享​有​功​能​以​外​,还​可​以​提​供​许​多​其​他​功​能​。​这​一​部​分​阐​述​如​何​运​用 TCP Wrappers 发​送​标​示​连​接​的​旗​帜​,或​从​某​些​特​定​的​主​机​上​发​送​可​能​受​到​攻​击​的​警​示​,以​及​如​何​增​强​登​录​功​能​。​关​于 TCP Wrapper 函​数​和​所​用​语​言​,如​需​要​更​多​信​息​,请​参​照 hosts_options man page。​

3.1.1.1.1. TCP Wrappers 和 连​接​旗​帜​(Connection Banners)

当​用​户​连​接​到​服​务​器​时​,用​合​适​的​旗​帜​标​示​显​示​其​连​接​是​一​种​很​好​的​方​式​,可​以​让​潜​在​的​袭​击​者​知​道​本​系​统​管​理​员​很​有​警​惕​性​。​你​也​可​以​控​制​关​于​系​统​什​么​样​的​信​息​可​以​呈​现​给​用​户​。​要​想​为​一​项​服​务​设​置​一​个 TCP Wrappers 旗​帜​标​示​,请​使​用 banner 选​项​。​

这​个​例​子​为 vsftpd设​置​一​个​旗​帜​标​示​。​首​先​,创​建​一​个​旗​帜​标​示​文​件​,可​以​储​存​在​系​统​的​任​何​地​方​,但​必​须​与​其​守​护​进​程​同​名​。​例​如​,该​文​件​命​名​为 /etc/banners/vsftpd 并​包​含​下​面​一​行​:

 220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use will result in your access privileges being removed. 

%c 权​标​可​提​供​客​户​的​多​种​信​息​,比​如​用​户​名​和​主​机​名​,或​用​户​名​和 IP 地​址​,也​许​这​样​会​使​该​连​接​更​让​人​觉​得​有​胁​迫​感​。​

要​想​使​该​旗​帜​在​有​外​来​连​接​进​入​时​显​示​,请​在 /etc/hosts.allow 文​件​上​加​上​下​面​一​行​:

 vsftpd : ALL : banners /etc/banners/ 
3.1.1.1.2. TCP Wrappers 和​袭​击​警​示

如​果​测​出​某​个​特​定​主​机​或​网​络​袭​击​服​务​器​,可​以​用 TCP Wrappers 通​过​spawn命​令​警​示​系​统​管​理​员​,随​后​可​能​会​有​从​那​个​主​机​或​网​络​而​来​的​袭​击​。​

在​这​个​例​子​中​,假​设​测​出​从 206.182.68.0/24 网​络​来​的​一​个​黑​客​试​图​袭​击​该​服​务​器​。​请​在​文​件 /etc/hosts.deny 里​加​上​下​面​一​行​,从​而​拒​绝​从​那​个​网​络​发​出​的​任​何​尝​试​连​接​的​信​息​,并​将​其​试​图​连​接​的​信​息​储​存​在​一​个​特​殊​文​件​里​:

 ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert 

%d 权​标​提​供​黑​客​试​图​访​问​的​服​务​器​所​提​供​服​务​的​名​称​。​

要​想​接​受​该​连​接​请​求​并​允​许​登​录​,请​在 /etc/hosts.allow 文​件​里​加​上 spawn 命​令​。​

注​释​

一​旦​某​个​特​定​的​客​户​试​图​连​接​服​务​器​, spawn 命​令​可​以​执​行​任​何 shell 命​令​,并​创​建​一​个​特​殊​脚​本​来​通​知​系​统​管​理​员​或​执​行​一​连​串​的​命​令​。​

3.1.1.1.3. TCP Wrappers 和​增​强​的​登​录​功​能

如​果​某​些​类​型​的​连​接​比​另​外​一​些​更​值​得​关​注​,可​以​用 severity 命​令​选​项​给​更​值​得​关​注​的​服​务​的​登​录​级​别​升​级​。​

这​个​例​子​中​,假​设​来​自 FTP 服​务​器​并​试​图​连​接 23 端​口​(即​Telnet 端​口​)的​任​何​人​都​是​黑​客​。​要​标​记​这​些​黑​客​,在​登​录​文​件​中​放​置​emerg标​志​,而​不​是​用​默​认​的​info标​志​,并​且​要​拒​绝​其​连​接​请​求​。​

要​做​到​这​一​点​,在 /etc/hosts.deny文​件​里​加​上​下​面​的​命​令​行​:

 in.telnetd : ALL : severity emerg 

虽​然​仍​使​用​默​认​的 authpriv 登​录​设​施​,其​登​录​优​先​级​别​却​从​默​认​的 info 升​级​到 emerg ,后​者​将​登​录​讯​息​直​接​记​入​到​控​制​台​。​

3.1.1.2. 用 xinetd 提​高​安​全​性

这​部​分​集​中​讨​论​如​何​用 xinetd 设​立​软​中​断​(trap)服​务​并​如​何​用​它​控​制​其​拥​有​的​资​源​级​别​。​为​服​务​器​设​置​资​源​限​制​级​别​可​以​帮​助​阻​止​Denial of Service(服​务​中​断​) (DoS) 的​袭​击​。​要​想​查​看​可​以​使​用​的​命​令​行​选​项​列​表​,请​参​考 man pages 的 xinetdxinetd.conf 部​分​。​

3.1.1.2.1. 设​定​一​个 Trap

xinetd 命​令​的​一​个​重​要​特​点​是​其​将​不​同​主​机​加​在 no_access 全​球​列​表​上​的​能​力​。​该​列​表​上​的​主​机​会​在​特​定​的​时​间​段​内​或​直​到 xinetd 重​新​被​启​动​后​都​会​被​拒​绝​其​随​后​的​连​接​到​由 xinetd 管​理​的​各​项​服​务​项​目​的​请​求​。​要​做​到​这​一​点​,你​可​以​利​用 SENSOR 的​属​性​,这​是​一​种​阻​断​主​机​试​图​扫​描​服​务​器​端​口​的​简​单​方​法​。​

设​立 SENSOR 命​令​的​第​一​步​是​选​择​一​项​你​不​打​算​使​用​的​服​务​。​这​个​例​子​中​,我​们​选​择​了​Telnet。​

编​辑​文​件 /etc/xinetd.d/telnet 并​改​变​flags 行​,见​如​下​:

flags           = SENSOR

加​上​下​面​一​行​:

deny_time       = 30

这​样​的​话​,在 30 分​钟​内​那​个​主​机​要​连​接​那​个​端​口​的​任​何​进​一​步​请​求​都​会​遭​到​拒​绝​。 deny_time 命​令​可​接​受​的​其​他​命​令​行​属​性​值​是 FOREVER 和 NEVER,FOREVER 使​那​个​主​机​要​连​接​那​个​端​口​的​任​何​进​一​步​请​求​一​直​到 xinetd命​令​重​新​启​动​后​都​会​遭​到​拒​绝​;而 NEVER 允​许​那​个​主​机​连​接​到​那​个​端​口​并​让​其​登​录​。​

最​后​,最​后​一​行​应​该​是​:

disable         = no

这​会​启​动​该​软​中​断​服​务​。​

尽​管​使​用 SENSOR 来​探​测​和​终​止​来​自​不​受​欢​迎​的​各​种​主​机​的​连​接​是​一​种​很​好​的​方​式​,但​这​种​方​式​也​有​两​个​缺​点​:

  • 不​能​阻​止​秘​密​的​扫​描​。​

  • 如​果​一​个​袭​击​者​知​道 SENSOR 正​在​运​行​,他​可​以​通​过​伪​造 IP 地​址​的​方​式​对​某​些​特​定​主​机​挂​载 Denial of Service (服​务​中​断​)的​袭​击​,从​而​连​接​到​被​禁​止​的​端​口​上​。​

3.1.1.2.2. 控​制​服​务​器​资​源​

xinetd 命​令​的​另​一​个​重​要​特​征​是​它​能​够​对​其​管​辖​的​服​务​设​定​资​源​限​制​。​

用​下​列​命​令​来​做​到​这​一​点​:

  • cps = <number_of_connections> <wait_period> — 限​制​外​来​连​接​的​速​度​。​这​个​命​令​有​两​个​参​数​:

    • <number_of_connections> — 每​分​钟​能​够​处​理​的​连​接​数​目​。​如​果​处​理​外​来​连​接​的​速​度​高​于​这​个​数​目​,该​服​务​就​会​暂​时​中​断​。​默​认​值​是 50。​

    • <wait_period> — 服​务​中​断​几​秒​中​之​后​才​能​重​新​启​动​该​服​务​。​其​默​认​间​隙​是 10 秒​钟​。​

  • instances = <number_of_connections> — 指​明​一​项​服​务​所​能​允​许​的​连​接​总​数​。​这​项​命​令​接​受​任​何​整​数​数​值​或 UNLIMITED。​

  • per_source = <number_of_connections> — 指​明​一​台​主​机​所​能​允​许​的​一​项​服​务​的​连​接​总​数​。​这​项​命​令​接​受​任​何​整​数​数​值​或 UNLIMITED。​

  • rlimit_as = <number[K|M]> — 以​千​字​节​或 MB 为​单​位​指​明​该​服​务​所​占​用​的​内​存​空​间​。​这​项​命​令​接​受​任​何​整​数​数​值​或 UNLIMITED。​

  • rlimit_cpu = <number_of_seconds> — 以​秒​为​单​位​指​明​一​项​服​务​所​占​用 CPU 的​时​间​总​量​。​这​项​命​令​接​受​任​何​整​数​数​值​或 UNLIMITED。​

使​用​这​些​命​令​可​以​帮​助​防​止​任​何​某​个 xinetd 命​令​会​使​系​统​超​负​荷​运​行​,从​而​导​致​服​务​中​断​。​

3.1.2. 使 Portmap 安​全

portmap 服​务​是​一​项​动​态​的​关​于​端​口​分​配​的​守​护​进​程​,用​于 RPC 服​务​,比​如 NIS 和 NFS。​这​项​程​序​的​验​证​机​制​比​较​弱​,能​够​为​其​控​制​下​的​服​务​分​配​大​量​的​端​口​。​正​因​为​如​此​,保​证​其​安​全​就​比​较​困​难​。​

注​释​

portmap 安​全​相​关​的​是 NFSv2 和 NFSv3 的​运​行​,因​为 NFSv4 已​经​不​需​要 portmap 了​。​如​果​你​打​算​使​用 NFSv2 或 NFSv3 服​务​器​的​话​,portmap 是​需​要​的​,那​么​下​面​的​章​节​就​对​你​有​用​了​。​

运​行 RPC 服​务​时​,请​遵​守​这​些​基​本​原​则​。​

3.1.2.1. 用 TCP Wrappers 保​护 portmap

因​为 portmap 服​务​没​有​内​置​式​的​验​证​机​制​,因​此​使​用 TCP Wrappers 来​限​制​哪​些​网​络​或​主​机​可​以​享​有 portmap 服​务​是​很​重​要​的​。​

另​外​,当​需​要​限​制​某​些​主​机​享​有​该​服​务​时​,写​入​命​令​时 只​ 用​它​们​的 IP 地​址​,不​要​用​主​机​名​称​,因​为​主​机​名​称​可​以​通​过​毒​化 DNS 和​其​他​方​式​进​行​伪​造​。​

3.1.2.2. 用 iptables 保​护 portmap

为​了​进​一​步​限​制​某​些​网​络​享​有 portmap 服​务​,在​服​务​器​上​增​加 iptables 规​则​是​一​个​很​好​的​注​意​,这​样​可​以​限​制​某​些​特​定​网​络​的​进​入​。​

下​面​是​两​个 iptables 命​令​的​例​子​。​第​一​个​命​令​允​许 TCP 通​过 192.168.0.0/24 网​络​连​接​到 111 端​口​(该​端​口​由 portmap 服​务​使​用​)。​第​二​个​命​令​允​许 TCP 通​过​本​地​主​机​连​接​到​同​一​个​端​口 111。​这​对​由 Nautilus 使​用​的 sgi_fam 命​令​来​说​是​必​要​的​。​其​它​的​软​件​包​就​不​需​要​了​。​

iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1  --dport 111 -j ACCEPT

以​类​似​的​方​式​限​制 UDP 传​输​,请​使​用​下​面​的​命​令​。​

iptables -A INPUT -p udp -s! 192.168.0.0/24  --dport 111 -j DROP

3.1.3. 使 NIS 安​全​

Network Information Service(网​络​信​息​服​务​) (NIS) 是​一​项 RPC 服​务​,叫​作 ypserv,-->,这​项​服​务​和 portmap 以​及​其​它​相​关​服​务​联​合​使​用​来​分​配​关​于​自​称​某​域​名​下​任​何​计​算​机​的​用​户​名​、​用​户​密​码​、​和​其​它​敏​感​信​息​。​

一​个 NIS 服​务​器​由​几​个​应​用​程​序​组​成​,这​些​应​用​程​序​有​:

  • /usr/sbin/rpc.yppasswdd — 也​叫 yppasswdd 服​务​,这​项​守​护​进​程​允​许​用​户​们​改​变​他​们​的 NIS 密​码​。​

  • /usr/sbin/rpc.ypxfrd — 也​叫 ypxfrd 服​务​,这​项​守​护​进​程​负​责 NIS 图​在​网​络​上​转​移​。​

  • /usr/sbin/yppush — 这​项​应​用​程​序​将​改​变​过​的 NIS 数​据​库​传​播​到​多​个 NIS 服​务​器​。​

  • /usr/sbin/ypserv — 这​就​是 NIS 服​务​器​的​守​护​进​程​。​

按​今​天​的​标​准 NIS 从​某​种​程​度​上​来​说​似​乎​不​安​全​。​NIS 不​但​没​有​主​机​验​证​机​制​,而​且​其​所​有​信​息​包​括​密​码​一​类​的​散​列​信​息​都​以​不​加​密​的​形​式​在​网​络​上​传​输​。​因​此​,如​果​用 NIS 建​立​一​个​网​络​,一​定​要​特​别​小​心​。​另​外​还​有​一​个​事​实​让​这​种​小​心​非​常​必​要​,那​就​是​:NIS 系​统​的​默​认​配​置​有​其​内​在​的​不​安​全​性​。​

我​们​建​议​,任​何​人​如​果​要​使​用 NIS 服​务​器​,首​先​应​该​按 第 3.1.2 节 “使 Portmap 安​全 ” 中​列​出​的​项​目​使 portmap 服​务​安​全​,然​后​还​要​注​意​下​列​事​项​,比​如​网​络​规​划​。​

3.1.3.1. 对​网​络​进​行​精​心​规​划

因​为 NIS 以​不​加​密​的​形​式​在​网​络​上​传​送​敏​感​信​息​,因​此​要​让​该​服​务​在​防​火​墙​后​面​且​在​分​段​和​安​全​的​网​络​上​进​行​是​很​重​要​的​。​每​当 NIS 信​息​在​不​安​全​的​网​络​上​传​送​时​,都​有​被​窃​听​或​截​取​的​危​险​。​精​心​的​网​络​规​划​能​帮​助​防​止​出​现​严​重​的​安​全​问​题​。​

3.1.3.2. 使​用​密​码​式 NIS 域​名​和​主​机​名​

NIS 域​名​下​的​任​何​机​器​都​能​够​无​须​验​证​地​通​过​执​行​命​令​在​服​务​器​上​提​取​信​息​,只​要​这​个​用​户​知​道 NIS 服​务​器​的 DNS 主​机​名​和 NIS 域​名​。​

例​如​,如​果​有​人​或​是​通​过​连​接​手​提​电​脑​或​是​从​外​界​(设​法​编​造​一​个​内​部 IP 地​址​)闯​入​该​网​络​,下​面​的​命​令​会​揭​示​其 /etc/passwd 图​:

ypcat -d <NIS_domain> -h <DNS_hostname> passwd

如​果​这​个​袭​击​者​是​个​根​用​户​,他​便​可​以​通​过​键​入​如​下​的​命​令​获​得 /etc/shadow 文​件​:

ypcat -d <NIS_domain> -h <DNS_hostname> shadow

注​释​

如​果​使​用​的​是 Kerberos 的​话​,/etc/shadow 文​件​不​储​存​在 NIS 图​内​。​

为​了​使​袭​击​者​更​难​于​接​近 NIS 图​,可​以​把 DNS 主​机​名​称​加​上​一​串​任​意​字​符​,比​如 o7hfawtgmhwg.domain.com。​同​样​,也​可​以​用​另​一​个 不​同​ 的​任​意​字​符​串​命​名 NIS 域​名​。​这​样​的​话​,袭​击​者​要​想​袭​击 NIS 服​务​器​就​会​困​难​得​多​。​

3.1.3.3. 编​辑 /var/yp/securenets 文​件​

如​果 /var/yp/securenets 文​件​没​有​内​容​,或​根​本​不​存​在​(默​认​安​装​后​的​情​况​就​是​这​样​)NIS 对​所​有​网​络​都​进​行​监​听​。​首​先​要​做​的​事​情​便​是​给​该​文​件​加​上​网​络​掩​码​,这​样​,ypserv 就​只​对​来​自​合​法​网​络​的​请​求​作​出​反​应​。​

下​面​是 /var/yp/securenets 文​件​的​一​个​输​入​范​例​:

255.255.255.0     192.168.0.0

警​示​

第​一​次​运​行 NIS 服​务​器​之​前​,千​万​要​先​创​建 /var/yp/securenets 文​件​。​

这​项​技​术​虽​然​不​能​保​护​系​统​不​受​假​冒 IP 的​袭​击​,但​至​少​可​以​限​制​哪​些​网​络​可​以​享​有 NIS 服​务​器​的​服​务​。​

3.1.3.4. 分​配​静​态​端​口​和​使​用 iptables 规​则

所​有​与 NIS 相​关​联​的​服​务​器​都​可​以​分​配​到​一​些​特​定​的​端​口​,除 rpc.yppasswdd — 之​外​,这​是​一​项​允​许​用​户​们​改​变​其​登​录​密​码​的​守​护​进​程​。​给​另​外​两​个 NIS 服​务​器​守​护​进​程​即 rpc.ypxfrdypserv 分​配​端​口​,允​许​防​火​墙​规​则​的​创​建​以​便​进​一​步​保​护 NIS 服​务​器​守​护​进​程​不​受​外​来​者​的​袭​击​。​

为​达​此​目​的​,请​在 /etc/sysconfig/network 文​件​里​加​上​下​面​几​行​:

YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"

下​面​的 iptables 规​则​可​以​用​来​实​现​服​务​器​到​底​要​对​哪​个​网​络​下​的​这​些​端​口​进​行​监​听​:

iptables -A INPUT -p ALL -s! 192.168.0.0/24  --dport 834 -j DROP
iptables -A INPUT -p ALL -s! 192.168.0.0/24  --dport 835 -j DROP

这​就​意​味​着​如​果​连​接​请​求​来​自 192.168.0.0/24 网​络​,该​服​务​器​只​允​许​这​个​网​络​连​接​到​端​口 834 和 835,不​管​它​使​用​什​么​协​议​。​

3.1.3.5. 使​用 Kerberos 验​证​

当 NIS 用​来​作​验​证​用​时​,需​要​考​虑​的​问​题​之​一​是​,每​当​用​户​登​录​到​机​器​上​,来​自 /etc/shadow 图​上​的​一​个​密​码​散​列​信​息​就​会​通​过​网​络​发​送​出​去​。​如​果​一​个​外​侵​者​进​入​到​某​个 NIS 域​内​,嗅​探​网​络​业​务​流​通​量​,他​便​可​以​收​集​用​户​名​和​密​码​散​列​信​息​。​如​果​有​充​足​的​时​间​,使​用​密​码​破​译​程​序​可​以​破​解​一​些​保​密​性​差​的​密​码​,那​么​这​个​外​侵​者​便​可​以​通​过​一​个​有​效​帐​户​进​入​网​络​。​

3.1.4. 使 NFS 安​全​

重​要​的​

红​帽​企​业​版 Linux 的 NFS 版​本​即 NFSv4 已​经​不​需​要 第 3.1.2 节 “使 Portmap 安​全 ” 中​列​出​的​portmap 服​务​。​现​在 NFS 通​信​所​有​版​本​都​使​用 TCP 而​不​是 UDP。​使​用 NFSv4 时​需​要 TCP。 现​在 Kerberos 用​户 和​组​验​证​已​经​作​为 RPCSEC_GSS 核​心​模​块​的​部​分​被​包​括​在 NFSv4 中​。​关​于 portmap 的​信​息​也​包​括​在​内​,因​为​红​帽​企​业​版 Linux 也​支​持 NFSv2 和 NFSv3,这​两​者​都​使​用 portmap。​

3.1.4.1. 对​网​络​进​行​精​心​规​划

现​在 NFSv4 有​能​力​使​用 Kerberos 通​过​网​络​将​信​息​以​加​密​的​形​式​传​送​,这​项​服​务​的​正​确​配​置​是​很​重​要​的​,即​该​服​务​要​么​在​防​火​墙​后​要​么​在​分​段​式​网​络​上​运​行​。​NFSv2 和 NFSv3 传​送​数​据​时​仍​然​不​够​安​全​,这​一​点​应​该​引​起​注​意​。​在​这​些​方​面​进​行​谨​慎​的​网​络​设​计​可​以​帮​助​防​止​出​现​安​全​问​题​。​

3.1.4.2. 注​意​语​法​错​误​

NFS 服​务​器​通​过​咨​询 /etc/exports 文​件​从​而​决​定​输​出​哪​种​文​件​系​统​以​及​用​哪​些​主​机​导​出​这​些​目​录​。​在​编​辑​这​个​文​件​时​注​意​不​要​增​加​任​何​额​外​的​空​格​。​

例​如​,在 /etc/exports 文​件​中​的​下​面​一​行​与​主​机 bob.example.com 享​有​同​一​个​目​录 /tmp/nfs/,并​有​读​取​/写​入​权​限​。​

/tmp/nfs/     bob.example.com(rw)

然​而​,在 /etc/exports 文​件​中​的​下​面​一​行​与​主​机 bob.example.com 享​有​同​一​个​目​录​,只​有​读​取​权​限​;而​与 world 也​享​有​同​一​个​目​录​,却​有​读​取​/写​入​权​限​,只​因​在​主​机​名​称​后​面​多​了​一​个​空​格​字​符​。​

/tmp/nfs/     bob.example.com (rw)

使​用 showmount 命​令​来​检​查​任​何 NFS 配​置​中​的​共​享​成​分​以​及​用​此​来​验​证​什​么​是​共​享​的​成​分​是​一​项​很​好​的​练​习​。​

showmount -e <hostname>

3.1.4.3. 不​要​用 no_root_squash 选​项​

作​为​默​认​值​,NFS 会​把​根​用​户​变​成 nfsnobody 用​户​,即​一​个​不​享​有​任​何​特​权​的​用​户​帐​户​。​这​样​就​把​从​根​目​录​创​建​的​文​件​归​列​在​拥​有​者 nfsnobody 的​名​下​,这​样​就​阻​止​了​用​户​上​载​有 setuid 位​设​定​的​程​序​。​

如​果​使​用 no_root_squash 的​话​,远​程​根​用​户​就​能​在​共​享​的​文​件​系​统​内​修​改​任​何​文​件​,并​且​使​应​用​程​序​处​于​特​洛​伊​木​马​病​毒​感​染​状​态​,以​使​其​他​任​何​用​户​不​至​于​无​意​中​执​行​这​些​应​用​程​序​。​

3.1.5. 使 Apache HTTP 服​务​器​安​全​

Apache HTTP 服​务​器​是​红​帽​企​业​版 Linux 所​提​供​的​最​稳​定​最​安​全​的​服​务​之​一​。​有​大​量​的​方​法​和​技​术​使 Apache HTTP 服​务​器​运​行​安​全​,同​时​,这​方​面​也​有​许​多​可​以​深​入​探​究​的​东​西​。​

系​统​管​理​员​在​使​用​下​列​配​置​选​项​时​一​定​要​小​心​:

3.1.5.1. FollowSymLinks

默​认​情​况​下​这​个​指​示​命​令​处​于​执​行​状​态​,所​以​为 Web 服​务​器​的​文​件​根​创​建​符​号​链​接​时​一​定​要​小​心​。​例​如​,为 / 创​建​符​号​链​接​就​不​是​一​个​好​主​意​。​

3.1.5.2. Indexes 指​示​命​令​

默​认​情​况​下​这​个​指​示​命​令​处​于​执​行​状​态​,但​也​许​我​们​并​不​希​望​执​行​这​项​命​令​。​要​想​阻​止​来​访​者​浏​览​服​务​器​上​的​文​件​,那​就​删​除​这​个​指​示​命​令​。​

3.1.5.3. UserDir 指​示​命​令​

默​认​情​况​下 UserDir 指​示​命​令​处​于​非​执​行​状​态​,因​为​执​行​该​命​令​可​以​确​认​系​统​上​一​个​用​户​帐​户​的​存​在​。​要​使​用​户​能​够​在​服​务​器​上​浏​览​目​录​,使​用​下​面​的​命​令​:

UserDir enabled
UserDir disabled root

这​些​命​令​激​活​用​户​浏​览​目​录​功​能​,用​户​可​以​浏​览​除 /root/ 之​外​的​所​有​目​录​。​如​果​想​要​使​某​些​用​户​不​能​浏​览​目​录​,就​在 UserDir disabled 命​令​行​中​加​上​用​户​名​列​表​,用​户​名​之​间​以​空​格​隔​开​。​

3.1.5.4. 不​要​删​除 IncludesNoExec 命​令​

作​为​默​认​值​,Server-Side Includes (SSI) 模​块​不​能​执​行​命​令​。​建​议​你​除​非​绝​对​必​要​不​要​改​变​这​一​设​定​,因​为​如​果​改​变​的​话​就​有​可​能​使​潜​在​的​袭​击​者​能​够​在​该​系​统​上​执​行​命​令​。​

3.1.5.5. 对​可​执​行​目​录​设​定​限​制​权​限​

要​保​证​只​有​根​用​户​可​以​在​含​有​脚​本​或 CGIs 的​目​录​上​拥​有​写​入​权​限​。​要​实​现​这​一​点​,请​键​入​下​面​的​命​令​:

chown root <directory_name>
chmod 755 <directory_name>

重​要​的​

在​执​行​任​何​脚​本 之​前​,一​定​要​检​验​系​统​上​运​行​的​任​何​脚​本​都​是​我​们​想​要​运​行​的​。​

3.1.6. 使 FTP 安​全​

File Transport Protocol(文​件​传​输​协​议​) (FTP) 是​一​项​比​较​旧​的 TCP 协​议​,用​来​在​网​络​上​传​送​文​件​。​因​为​与​服​务​器​之​间​的​所​有​事​务​,包​括​用​户​验​证​事​务​,都​是​不​加​密​的​,所​以​这​项​协​议​被​认​为​是​一​项​不​安​全​的​协​议​,需​要​精​心​地​配​置​。​

红​帽​企​业​版 Linux 提​供​三​种 FTP 服​务​器​。​

  • gssftpd — 是​一​项​兼​容 Kerberos xinetd 为​基​础​的 FTP 守​护​进​程​,这​项​守​护​进​程​不​在​网​络​上​传​送​验​证​信​息​。​

  • Red Hat Content Accelerator(红​帽​内​容​搜​索​加​速​器​) (tux) — 是​一​个​带​有 FTP 功​能​的​内​核​空​间​网​络​服​务​器​。​

  • vsftpd — 是​一​项​独​立​的​并​且​以​安​全​运​行​为​导​向​的 FTP 服​务​。​

设​定 vsftpd FTP 服​务​时​,要​遵​守​下​面​的​一​些​安​全​指​导​原​则​。​

3.1.6.1. FTP 问​候​旗​帜​(Greeting Banner)

在​提​交​用​户​名​和​密​码​之​前​,所​有​用​户​都​会​收​到​一​个​问​候​旗​帜​。​作​为​默​认​值​,这​个​旗​帜​含​有​版​本​信​息​,对​黑​客​试​图​寻​找​系​统​中​的​弱​点​会​有​帮​助​。​

要​想​用 vsftpd 来​替​代​问​候​旗​帜​,就​在​/etc/vsftpd/vsftpd.conf 文​件​里​加​上​下​面​的​命​令​:

ftpd_banner=<insert_greeting_here>

在​上​面​的​命​令​中​用​问​候​讯​息​文​本​替​代 <insert_greeting_here>。​

如​果​是​多​行​旗​帜​,最​好​使​用​一​个​旗​帜​文​件​。​为​了​使​多​种​不​同​旗​帜​便​于​管​理​,把​所​有​旗​帜​放​在​一​个​叫​/etc/banners/的​新​目​录​下​。​这​个​例​子​中​,/etc/banners/ftp.msg就​是​进​行 FTP 连​接​的​旗​帜​文​件​。​要​知​道​这​样​的​文​件​看​上​去​是​什​么​样​的​,请​看​下​面​的​例​子​:

######### # Hello, all activity on ftp.example.com is logged. #########

注​释​

第 3.1.1.1.1 节 “TCP Wrappers 和 连​接​旗​帜​(Connection Banners)” 中​指​明​,不​需​要​在​文​件​的​每​一​行​都​以 220 开​始​。​

要​在 vsftpd 中​引​用​这​个​问​候​旗​帜​文​件​,请​在 /etc/vsftpd/vsftpd.conf 文​件​里​加​上​下​面​的​命​令​:

banner_file=/etc/banners/ftp.msg

第 3.1.1.1.1 节 “TCP Wrappers 和 连​接​旗​帜​(Connection Banners)” 中​描​述​道​:使​用 TCP Wrappers 向​进​入​系​统​的​连​接​寄​送​额​外​的​旗​帜​也​是​可​能​的​。​

3.1.6.2. 匿​名​访​问​

/var/ftp/目​录​的​存​在​激​活​匿​名​帐​户​。​

创​建​该​目​录​最​简​单​的​方​式​是​安​装 vsftpd 软​件​包​。​这​个​软​件​包​为​匿​名​用​户​建​立​一​个​目​录​树​并​且​在​各​级​目​录​中​设​置​匿​名​用​户​的​权​限​为​只​读​用​户​。​

默​认​情​况​下​,匿​名​用​户​不​能​在​任​何​目​录​下​写​入​信​息​。​

警​惕​

如​果​允​许​对 FTP 服​务​器​的​匿​名​访​问​,应​该​了​解​敏​感​数​据​储​存​的​地​方​。​

3.1.6.2.1. 匿​名​上​载​

要​想​允​许​匿​名​用​户​上​载​文​件​,建​议​在 /var/ftp/pub/目​录​下​创​建​一​个 write-only(只​写​)目​录​。​

要​创​建​这​个​只​写​目​录​,请​键​入​下​面​的​命​令​:

mkdir /var/ftp/pub/upload

接​下​来​,要​想​使​匿​名​用​户​无​法​浏​览​该​目​录​的​内​容​,那​就​改​变​其​权​限​:

chmod 730 /var/ftp/pub/upload

该​目​录​的​详​细​列​表​看​起​来​应​该​是​这​样​的​:

drwx-wx---    2 root     ftp          4096 Feb 13 20:05 upload

警​示​

允​许​匿​名​用​户​在​各​目​录​下​读​取​和​写​入​的​系​统​管​理​员​常​常​发​现​他​们​的​服​务​器​简​直​成​了​盗​用​软​件​的​储​存​库​。​

另​外​,请​在 vsftpd 目​录​下​的​/etc/vsftpd/vsftpd.conf 文​件​里​加​上​下​面​一​行​:

anon_upload_enable=YES

3.1.6.3. 用​户​帐​户​

因​为 FTP 验​证​用​户​时​在​不​安​全​的​网​络​上​传​输​不​加​密​的​用​户​名​和​密​码​,因​此​最​好​拒​绝​用​户​从​他​们​的​用​户​帐​户​对​服​务​器​进​行​系​统​用​户​访​问​。​

要​想​使 vsftpd 中​的​所​有​用​户​帐​户​无​法​做​系​统​访​问​,那​就​在 /etc/vsftpd/vsftpd.conf 中​加​上​下​面​的​命​令​:

local_enable=NO
3.1.6.3.1. 限​制​用​户​帐​户​

在​各​项​服​务​中​直​接​中​止​某​些​用​户​帐​户​也​是​可​能​的​。​

要​想​中​止 vsftpd 中​的​特​定​用​户​帐​户​,请​在​/etc/vsftpd.ftpusers 中​加​上​该​用​户​名​。​

3.1.6.4. 用 TCP Wrappers 来​控​制​访​问

关​于​用 TCP Wrappers 来​控​制​对​任​何 FTP 守​护​进​程​的​访​问​,第 3.1.1.1 节 “用 TCP Wrappers 提​高​安​全​性​能​”中​有​所​概​述​。​

3.1.7. 使​发​送​邮​件​安​全​

Sendmail 是​一​个​用 Simple Mail Transport Protocol(简​单​邮​件​传​输​协​议​)(SMTP) 在​邮​件​传​输​中​介​( Mail Transport Agent,即​MTA)和​邮​件​客​户​或​传​送​中​介​之​间​递​送​电​子​讯​息​的 MTA。​尽​管​很​多 MTA 能​够​对​传​递​的​信​息​加​密​,大​多​数​的 MTA 却​不​能​加​密​。​因​此​通​过​公​共​网​络​发​送​邮​件​被​认​为​是​一​种​带​有​固​有​不​安​全​性​的​交​流​方​式​。​

建​议​任​何​打​算​使​用 Sendmail 服​务​器​的​人​们​都​需​要​搞​清​楚​下​面​的​事​项​。​

3.1.7.1. 减​少​中​止​服​务​情​况​的​发​生​

由​邮​件​的​性​质​决​定​,一​个​袭​击​者​如​果​决​意​要​袭​击​服​务​器​的​话​,他​可​以​比​较​容​易​地​用​大​量​的​邮​件​来​淹​没​服​务​器​从​而​导​致​服​务​中​断​。​如​果​在 /etc/mail/sendmail.mc 中​设​定​一​些​限​制​,那​么​对​服​务​器​进​行​如​此​袭​击​的​成​功​率​就​得​到​了​限​制​。​

  • confCONNECTION_RATE_THROTTLE — 服​务​器​每​秒​钟​可​以​接​受​连​接​的​数​目​。​默​认​情​况​下​,Sendmail 不​限​制​接​受​连​接​的​数​目​。​如​果​设​定​数​目​限​制​的​话​,达​到​设​定​数​目​后​的​连​接​会​被​延​迟​。​

  • confMAX_DAEMON_CHILDREN — 服​务​器​可​以​处​理​的​子​进​程​的​最​大​数​目​。​默​认​情​况​下​,Sendmail 不​为​处​理​的​子​进​程​数​目​设​定​限​制​。​如​果​设​定​数​目​限​制​的​话​,达​到​设​定​数​目​后​的​连​接​会​被​延​迟​。​

  • confMIN_FREE_BLOCKS — 服​务​器​用​来​接​收​邮​件​的​最​小​空​闲​空​间​块​数​,默​认​值​是 100 块​。​

  • confMAX_HEADERS_LENGTH — 能​够​接​受​的​邮​件​讯​息​标​题​最​大​值​(以​字​节​数​为​单​位​)。​

  • confMAX_MESSAGE_SIZE — 能​够​接​受​的​单​个​邮​件​讯​息​最​大​值​(以​字​节​数​为​单​位​)。​

3.1.7.2. NFS 和 Sendmail

千​万​不​要​把​邮​件​假​脱​机​目​录 /var/spool/mail/ 放​在 NFS 共​享​的​容​量​中​。​

因​为 NFSv2 和 NFSv3 对​用​户​和​用​户​组​的​身​份​不​进​行​验​证​,两​个​或​多​个​用​户​有​可​能​会​拥​有​同​样​的 UID,这​样​他​们​就​能​够​接​到​并​阅​读​所​有​寄​给​他​们​中​任​何​一​个​的​邮​件​。​

注​释​

而 NFSv4 使​用 Kerberos,情​况​就​不​同​了​。​因​为 SECRPC_GSS 内​核​模​块​不​使​用​以 UID 为​基​础​的​身​份​验​证​。​然​而​,我​们​仍​然​建​议 不​要​ 把​邮​件​假​脱​机​目​录​放​在 NFS 共​享​的​容​量​中​。​

3.1.7.3. Mail-only 用​户​

为​了​防​止​本​地​用​户​过​渡​使​用 Sendmail 服​务​器​,邮​件​用​户​最​好​是​只​通​过​邮​件​程​序​访​问 Sendmail 服​务​器​。​在​邮​件​服​务​器​上​不​应​该​允​许 shell 帐​户​,所​有 /etc/passwd文​件​中​的​用​户 shell 都​应​该​设​定​到 /sbin/nologin 下​(根​用​户​有​可​能​作​为​例​外​)。​

3.1.8. 检​验​哪​个​端​口​在​监​听

配​置​好​网​络​服​务​后​,关​注​哪​些​端​口​实​际​上​在​系​统​网​络​界​面​上​进​行​监​听​是​很​重​要​的​。​任​何​打​开​的​端​口​都​有​可​能​是​侵​入​窃​密​的​证​据​。​

要​探​测​哪​些​端​口​在​网​络​上​进​行​监​听​有​两​种​基​本​方​法​。​其​中​不​太​可​靠​的​方​法​是​使​用​像 netstat -anlsof -i 一​样​的​命​令​查​询​网​络​栈​式​储​存​器​。​这​种​方​法​不​够​可​靠​,是​因​为​这​些​查​询​程​序​不​是​通​过​网​络​连​接​到​机​器​上​的​,反​而​成​了​检​查​系​统​上​运​行​的​是​什​么​。​正​因​为​这​个​原​因​,这​些​应​用​程​序​常​常​成​为​袭​击​者​不​断​替​代​的​目​标​。​黑​客​们​试​图​通​过​打​开​未​授​权​的​网​络​端​口​并​用​他​们​自​己​的​修​改​过​的​命​令​版​本​来​替​代 netstatlsof 以​便​起​到​掩​盖​其​踪​迹​的​作​用​。​

一​个​比​较​可​靠​的​探​测​哪​些​端​口​在​网​络​上​进​行​监​听​的​方​法​是​使​用​像 nmap 一​样​的​端​口​扫​描​仪​。​

从​控​制​台​上​发​出​的​下​列​命​令​能​够​确​定​哪​些​端​口​在​监​听​来​自​网​络​的 TCP 连​接​:

nmap -sT -O localhost

这​项​命​令​的​输​出​信​息​看​上​去​如​下​:

Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1653 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE
22/tcp    open  ssh 
25/tcp    open  smtp
111/tcp   open  rpcbind
113/tcp   open  auth
631/tcp   open  ipp
834/tcp   open  unknown
2601/tcp  open  zebra
32774/tcp open  sometimes-rpc11
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)
Uptime 12.857 days (since Sat Sep 11 17:16:20 2004)

Nmap run completed -- 1 IP address (1 host up) scanned in 5.190 seconds

这​种​输​出​信​息​表​明​由​于 sunrpc 服​务​的​存​在​,该​系​统​正​在​运​行 portmap。​然​而​,也​发​现 834 端​口​上​有​一​项​神​秘​的​服​务​。​要​想​检​查​这​个​端​口​是​否​进​行​的​都​是​系​统​已​知​的​并​且​已​列​出​的​公​务​,请​键​入​:

cat /etc/services | grep 834

这​个​命​令​没​有​调​出​任​何​输​出​信​息​。​这​就​表​明​虽​然​端​口​处​于​专​用​区​间​(即 0 到 1023),需​要​有​根​用​户​权​限​才​能​打​开​,这​项​服​务​不​是​系​统​可​以​辨​认​的​已​知​服​务​。​

然​后​,用 netstatlsof 检​查​端​口​的​信​息​。​若​用 netstat 检​查​端​口 834,请​键​入​下​面​的​命​令​:

netstat -anp | grep 834

该​命​令​调​出​下​面​的​输​出​信​息​:

tcp   0    0 0.0.0.0:834    0.0.0.0:*   LISTEN   653/ypbind

netstat 调​出​的​信​息​中​这​个​打​开​的​端​口​的​存​在​让​人​感​到​放​心​一​些​,因​为​如​果​是​黑​客​偷​偷​地​非​法​闯​进​系​统​并​打​开​端​口​的​话​,那​他​是​不​大​可​能​会​让​这​个​端​口​通​过​这​个​命​令​显​示​的​。​而​且​,[p] 选​项​显​示​打​开​该​服​务​端​口​的 ID 验​证​过​程​(PID)。​这​个​例​子​中​,打​开​的​端​口​属​于 ypbind (NIS),是​一​项​与 portmap 服​务​一​起​联​合​运​行​的 RPC 服​务​。​

lsof 命​令​也​能​够​把​打​开​的​端​口​与​其​服​务​相​关​联​,显​示​与 netstat 命​令​类​似​的​信​息​:

lsof -i | grep 834

这​个​命​令​输​出​信​息​的​相​关​部​分​如​下​:

ypbind      653        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      655        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      656        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      657        0    7u  IPv4       1319                 TCP *:834 (LISTEN)

这​些​工​具​显​示​很​多​有​关​机​器​上​正​在​运​行​服​务​的​状​态​信​息​。​这​些​工​具​不​但​用​起​来​灵​活​,而​且​能​提​供​关​于​网​络​服​务​配​置​的​大​量​信​息​。​如​需​要​更​多​信​息​,请​参​考 man pages 的 lsof、​netstatnmapservices 部​分​。​

3.2. 可​插​入​验​证​模​块​(PAM)

使​用​身​份​验​证​的​方​法​来​验​证​用​户​身​份​从​而​为​用​户​分​配​对​系​统​访​问​权​限​的​程​序​(也​就​是​确​定​用​户​自​称​的​身​份​)。​

在​过​去​,每​个​程​序​都​会​使​用​自​己​的​方​法​来​对​用​户​身​份​进​行​验​证​。​在 红帽企业 Linux 中​,多​数​程​序​被​配​置​使​用​一​个​集​中​化​的​用​户​身​份​验​证​方​法​叫​作 可​插​入​验​证​模​块​(Pluggable Authentication Modules) (PAM)。​

PAM 使​用​一​个​可​插​入​式​的​、​模​块​化​的​结​构​。​它​为​系​统​管​理​员​设​置​用​户​身​份​验​证​政​策​提​供​了​很​大​的​灵​活​性​。​

在​多​数​情​况​下​,一​个​支​持 PAM 的​应​用​程​序​的​默​认 PAM 配​置​文​件​就​可​以​满​足​一​般​的​要​求​。​但​是​在​一​些​情​况​下​,还​是​需​要​对 PAM 配​置​文​件​进​行​特​殊​的​配​置​。​因​为​如​果​对 PAM 进​行​了​错​误​的​配​置​可​能​会​导​致​系​统​的​安​全​性​被​破​坏​,所​以​在​对​这​些​文​件​进​行​配​置​前​必​须​对​这​些​文​件​的​结​构​有​一​定​的​了​解​。​请​参​阅 第 3.2.3 节 “PAM 配​置​文​件​的​格​式​” 来​获​得​更​详​细​的​信​息​。​

3.2.1. PAM 的​优​越​性​

PAM 提​供​了​以​下​优​越​性​:

  • 可​以​被​多​种​应​用​程​序​使​用​的​常​用​用​户​身​份​验​证​计​划​。​

  • 为​系​统​管​理​员​和​应​用​程​序​开​发​者​在​进​行​用​户​身​份​验​证​处​理​时​提​供​了​极​大​的​灵​活​性​。​

  • 包​括​了​一​个​有​详​细​记​录​的​、​单​一​的​程​序​库​,这​个​程​序​库​使​开​发​者​们​不​需​要​再​开​发​自​己​的​用​户​身​份​验​证​系​统​。​

3.2.2. PAM 配​置​文​件​

/etc/pam.d/ 目​录​包​括​所​有​支​持 PAM 应​用​程​序​的 PAM 配​置​文​件​。​以​前​的 PAM 版​本​使​用 /etc/pam.conf 文​件​,但​现​在​这​个​文​件​已​经​过​时​,只​在 /etc/pam.d/ 目​录​不​存​在​时​才​被​使​用​。​

3.2.2.1. PAM 服​务​文​件​

每​个​支​持 PAM 的​应​用​程​序​或 服​务​ 都​在 /etc/pam.d/ 目​录​中​有​一​个​相​应​的​文​件​。​而​这​个​目​录​中​的​每​个​文​件​的​名​称​与​它​们​所​控​制​访​问​的​服​务​名​称​相​同​。​

支​持 PAM 的​应​用​程​序​需​要​定​义​它​们​的​服​务​名​并​在 /etc/pam.d/ 目​录​中​安​装​它​们​自​己​的 PAM 配​置​文​件​。​例​如​,login 程​序​定​义​了​它​的​服​务​名​为 login 并​安​装 /etc/pam.d/login PAM 配​置​文​件​。​

3.2.3. PAM 配​置​文​件​的​格​式​

每​个 PAM 配​置​文​件​都​包​括​一​组​有​以​下​格​式​的​命​令​:

<module interface><control flag><module name><module arguments>

这​些​项​在​以​下​章​节​中​被​介​绍​。​

3.2.3.1. 模​块​接​口​(Module Interface)

当​前​有​四​类​可​用​的 PAM 模​块​接​口​。​每​类​接​口​分​别​代​表​了​用​户​身​份​验​证​的​不​同​方​面​:

  • auth — 这​个​模​块​接​口​被​用​来​验​证​。​例​如​,它​需​要​一​个​密​码​并​验​证​密​码​是​否​正​确​。​带​有​这​个​接​口​的​模​块​也​可​以​设​置​许​可​证​,如​组​群​成​员​或 Kerberos 令​牌​。​

  • account — 这​个​模​块​接​口​被​用​来​验​证​所​允​许​的​访​问​。​例​如​,检​查​一​个​用​户​帐​号​是​否​已​经​过​期​;或​一​个​用​户​是​否​被​允​许​在​一​天​的​某​个​特​定​的​时​间​进​行​登​录​。​

  • password — 这​个​模​块​接​口​被​用​来​改​变​用​户​的​密​码​。​

  • session — 这​个​模​块​接​口​被​用​来​配​置​并​管​理​用​户​会​话​。​带​有​这​个​接​口​的​模​块​也​可​以​进​行​允​许​访​问​所​需​的​额​外​任​务​,如​挂​载​用​户​的​主​目​录​,使​用​户​的​邮​箱​有​效​。​

注​记​

一​个​单​独​的​模​块​可​以​包​括​一​个​或​多​个​模​块​接​口​。​例​如​,pam_unix.so 包​括​了​所​有​四​个​模​块​接​口​。​

在​一​个 PAM 配​置​文​件​中​,模​块​接​口​是​第​一​个​定​义​的​项​。​一​般​的​配​置​文​件​都​会​有​与​以​下​形​式​类​似​的​行​:

auth        required        pam_unix.so

它​告​诉 PAM 使​用 pam_unix.so 模​块​的 auth 接​口​。​

3.2.3.1.1. 模​块​接​口​堆​积​

模​块​界​面​命​令​可​以​被 堆​积​(stacked) 或​在​一​个​上​面​堆​放​另​一​个​,这​样​多​个​模​块​可​以​被​一​起​使​用​来​实​现​一​个​目​的​。​如​果​一​个​模​块​的​控​制​标​识​值​使​用 "sufficient" 或 "requisite"(请​参​阅 第 3.2.3.2 节 “控​制​标​识​旗​(Control Flag)” 来​获​得​详​细​信​息​),那​么​模​块​排​列​的​顺​序​对​用​户​身​份​验​证​的​过​程​就​非​常​重​要​。​

系​统​管​理​员​要​求​先​有​特​定​的​条​件​存​在​才​允​许​用​户​进​行​身​份​验​证​,堆​积​命​令​可​以​使​这​个​过​程​更​容​易​。​例​如​,reboot 命​令​通​常​使​用​一​组​堆​积​模​块​,请​看​下​面​的 PAM 配​置​文​件​:

[root@MyServer ~]# cat /etc/pam.d/reboot
#%PAM-1.0
auth        sufficient        pam_rootok.so
auth        required        pam_console.so
#auth        include        system-auth
account        required        pam_permit.so
  • 第​一​行​是​注​释​行​,不​会​被​处​理​。​

  • auth sufficient pam_rootok.so — 这​一​行​使​用 pam_rootok.so 模​块​来​检​查​当​前​用​户​是​否​是​根​用​户​,检​查​它​们​的 UID 是​否​为 0。​如​果​通​过​了​这​个​检​查​,将​不​再​咨​询​其​它​模​块​命​令​就​会​被​执​行​。​如​果​不​能​通​过​检​查​,将​咨​询​下​一​个​模​块​。​

  • auth required pam_console.so — 这​一​行​使​用 pam_console.so 模​块​来​对​用​户​身​份​进​行​验​证​。​如​果​这​个​用​户​已​经​通​过​终​端​登​录​,pam_console.so 会​检​查​在 /etc/security/console.apps/ 目​录​下​是​否​有​和​这​个​服​务​名 (reboot) 相​同​名​称​的​文​件​。​如​果​有​这​个​文​件​,验​证​就​会​成​功​,控​制​权​会​被​传​递​到​下​一​个​模​块​。​

  • #auth include system-auth — 这​是​一​个​注​释​行​,不​会​被​处​理​。​

  • account required pam_permit.so — 这​一​行​使​用 pam_permit.so 模​块​来​允​许​根​用​户​或​在​这​个​控​制​台​登​录​的​任​何​用​户​重​新​启​动​这​个​系​统​。​

3.2.3.2. 控​制​标​识​旗​(Control Flag)

所​有​的 PAM 模​块​在​被​调​用​后​都​会​产​生​一​个​成​功​或​失​败​的​结​果​。​控​制​标​识​旗​会​指​示 PAM 根​据​结​果​下​一​步​怎​么​办​。​模​块​可​以​以​特​定​的​顺​序​进​行​堆​积​排​列​,控​制​标​识​旗​决​定​一​个​特​定​模​块​对​用​户​验​证​成​功​或​失​败​整​个​过​程​的​重​要​性​。​

有​四​个​预​先​定​义​好​的​控​制​标​识​旗​:

  • required — 要​使​验​证​过​程​继​续​,这​个​模​块​的​结​果​必​须​是​成​功​。​如​果​这​一​步​的​测​试​失​败​,用​户​不​会​马​上​被​通​知​,他​们​会​在​所​有​模​块​的​测​试​都​完​成​后​才​会​被​通​知​。​

  • requisite — 要​使​验​证​可​以​继​续​进​行​,这​个​模​块​的​结​果​必​须​是​成​功​。​然​而​,如​果​这​一​步​测​试​失​败​,用​户​会​被​马​上​通​知​,而​通​知​的​信​息​中​包​括​了​第​一​个​失​败​了​的 required或​requisite 模​块​测​试​。​

  • sufficient — 如​果​模​块​验​证​失​败​,其​结​果​就​不​会​被​理​会​。​但​是​,如​果​一​个​被​标​识​为 sufficient 的​模​块​成​功 并​且​ 前​面​没​有​任​何​标​识​为 required 的​模​块​验​证​失​败​,那​么​用​户​就​通​过​验​证​可​以​使​用​这​个​服​务​,无​需​其​它​任​何​验​证​结​果​。​

  • optional — 模​块​结​果​不​被​理​会​。​被​标​识​为 optional 的​模​块​只​有​在​这​个​界​面​中​没​有​引​用​其​它​模​块​时​才​成​为​验​证​成​功​所​必​须​的​。​

重​要​信​息​

required 模​块​被​调​用​的​顺​序​并​不​重​要​。​只​有​控​制​标​识​旗​为 sufficientrequisite 的​模​块​的​调​用​顺​序​才​变​得​重​要​。​

PAM 现​在​可​使​用​一​个​更​新​的​、​可​以​进​行​更​准​确​控​制​的​控​制​标​识​旗​语​法​。​

pam.d man page 和 PAM 的​文​件​编​辑​位​于 /usr/share/doc/pam-<version-number>/ 目​录​下​,其​中​的 <version-number> 是​你​系​统​上​的 PAM 的​版​本​号​,这​里​相​信​描​述​了​这​个​更​新​的​语​法​。​

3.2.3.3. 模​块​名​(Module Name)

模​块​名​为 PAM 提​供​了​包​括​特​定​模​块​界​面​的​可​插​入​模​块​的​名​称​。​在​较​老​版​本​的 红帽企业 Linux 中​,PAM 配​置​文​件​包​括​模​块​的​完​全​路​径​。​但​是​,自​从​使​用​了 multilib 系​统​(它​把​64位​的 PAM 模​块​存​储​在 /lib64/security/ 中​),目​录​名​就​可​以​被​省​略​,应​用​程​序​会​被​连​接​到​适​当​的 libpam 版​本​,它​可​以​定​位​这​个​模​块​的​正​确​版​本​。​

3.2.3.4. 模​块​参​数​(Module Arguments)

在​为​一​些​模​块​进​行​验​证​时​,PAM 使​用​参​数​来​把​信​息​传​递​给​一​个​可​插​入​模​块​。​

例​如​,pam_userdb.so 模​块​使​用​存​储​在​一​个 Berkeley DB 文​件​中​的​信​息​来​验​证​用​户​。​Berkeley DB 是​一​个​开​源​的​数​据​库​系​统​,被​内​置​于​许​多​应​用​程​序​中​。​这​个​模​块​使​用​一​个 db 参​数​,从​而​使 Berkeley DB 知​道​所​请​求​的​服​务​使​用​哪​个​数​据​库​。​

以​下​是​在​一​个 PAM 配​置​中​一​个​典​型​的 pam_userdb.so 行​。​<path-to-file> 是​到 Berkeley DB 数​据​库​文​件​的​完​全​路​径​:

auth        required        pam_userdb.so db=<path-to-file>

无​效​的​参​数 通​常​ 会​被​忽​略​,它​不​会​影​响​到 PAM 模​块​验​证​的​结​果​。​但​在​一​些​模​块​中​,无​效​的​参​数​可​能​会​导​致​模​块​验​证​失​败​。​多​数​模​块​都​会​把​错​误​写​入 /var/log/secure 文​件​。​

3.2.4. PAM 配​置​文​件​实​例​

以​下​是​一​个 PAM 应​用​配​置​文​件​实​例​:

#%PAM-1.0
auth        required  pam_securetty.so
auth        required  pam_unix.so nullok
auth        required  pam_nologin.so
account        required  pam_unix.so
password        required  pam_cracklib.so retry=3
password        required  pam_unix.so shadow nullok use_authtok
session        required  pam_unix.so
  • 第​一​行​是​注​释​行​,由​该​行​行​首​的​井​字​号​(#)标​示​。​

  • 第​二​行​到​第​四​行​包​括​了​三​个​用​于​登​录​验​证​的​堆​积​模​块​。​

    auth required pam_securetty.so — 这​个​模​块​保​证​:如​果​用​户​试​图​以​根​用​户​登​录​,这​个​用​户​所​登​录​的 tty 需​要​在 /etc/securetty 文​件​中​列​出​,如​果​这​个​文​件​存​在​的​话​。​

    如​果 tty 没​有​在​这​个​文​件​中​列​出​,任​何​以​根​用​户​身​份​登​录​的​企​图​都​会​失​败​,并​显​示​一​个 Login incorrect 信​息​。​

    auth required pam_unix.so nullok — 这​个​模​块​要​求​用​户​输​入​密​码​,然​后​使​用​存​储​在 /etc/passwd/etc/shadow 文​件​(如​果​这​个​文​件​存​在​的​话​)中​的​信​息​来​检​查​用​户​输​入​的​密​码​。​

    • nullok 参​数​告​诉 pam_unix.so 模​块​允​许​一​个​空​密​码​。​

  • auth required pam_nologin.so — 这​是​验​证​的​最​后​一​步​。​这​一​步​检​查 /etc/nologin 文​件​是​否​存​在​。​如​果​这​个​文​件​存​在​,而​用​户​并​不​是​一​个​根​用​户​,那​么​用​户​身​份​验​证​会​失​败​。​

    注​记​

    在​这​个​例​子​中​,所​有​三​个 auth 都​被​检​查​,即​使​第​一​个 auth 模​块​失​败​。​这​可​以​防​止​用​户​知​道​是​哪​一​步​导​致​了​验​证​失​败​。​如​果​一​个​恶​意​的​网​络​用​户​知​道​了​这​个​信​息​,则​可​以​利​用​这​个​信​息​来​进​行​网​络​攻​击​。​

  • account required pam_unix.so — 这​个​模​块​执​行​所​有​需​要​的​帐​号​验​证​。​例​如​,如​果​启​用 shadow 密​码​, pam_unix.so 的​帐​号​接​口​就​会​检​查​这​个​帐​号​是​否​已​经​过​期​,或​用​户​在​允​许​的​过​渡​期​期​间​是​否​已​经​修​改​密​码​。​

  • password required pam_cracklib.so retry=3 — 如​果​一​个​密​码​已​经​过​期​,pam_cracklib.so 模​块​的​密​码​部​分​会​要​求​输​入​一​个​新​密​码​。​然​后​,它​会​检​查​新​创​建​的​密​码​是​否​能​够​被​密​码​字​典​破​解​系​统​轻​易​地​破​解​。​

    • retry=3 参​数​指​定​如​果​第​一​次​测​试​失​败​,用​户​会​有​另​外​两​次​机​会​来​创​建​一​个​更​安​全​的​密​码​。​

  • password required pam_unix.so shadow nullok use_authtok — 这​一​行​指​定​如​果​程​序​要​修​改​用​户​的​密​码​,应​该​使​用 pam_unix.so 模​块​的 password 接​口​来​进​行​。​

    • shadow 参​数​告​诉​模​块​在​更​新​一​个​用​户​的​密​码​时​创​建 shadow 密​码​。​

    • nullok 参​数​告​诉​模​块​允​许​用​户​把​他​们​的​密​码 从​ 空​密​码​改​为​其​它​的​密​码​,否​则​的​话​,无​密​码​状​态​会​被​认​为​是​一​个​帐​号​锁​。​

    • 这​一​行​的​最​后​一​个​参​数 use_authtok 提​供​了​一​个​很​好​的​实​例​来​说​明​堆​积 PAM 模​块​时​顺​序​的​重​要​性​。​这​个​参​数​告​诉​模​块​不​向​用​户​要​求​输​入​一​个​新​密​码​,它​会​使​用​前​一​个​密​码​模​块​获​得​的​密​码​。​在​这​种​情​况​下​,所​有​新​密​码​在​被​接​受​前​都​必​须​通​过 pam_cracklib.so 的​检​查​。​

  • session required pam_unix.so — 最​后​一​行​告​诉 pam_unix.so 模​块​的​会​话​接​口​来​管​理​会​话​。​这​个​模​块​会​在​每​个​会​话​的​开​始​和​结​束​阶​段​把​用​户​名​和​服​务​类​型​记​录​到 /var/log/secure 文​件​中​。​这​个​模​块​可​以​和​其​它​会​话​模​块​堆​积​在​一​起​来​实​现​其​它​的​功​能​。​

3.2.5. 创​建 PAM 模​块​

你​可​以​随​时​为​支​持 PAM 的​应​用​程​序​创​建​或​添​加​新​的 PAM 模​块​。​

例​如​,一​个​程​序​开​发​人​员​可​以​创​建​一​个​一​次​性​密​码​的​产​生​方​法​,并​编​写​一​个 PAM 模​块​来​支​持​它​。​支​持 PAM 的​应​用​程​序​可​以​马​上​使​用​这​个​新​模​块​而​不​用​重​新​进​行​编​译​。​

这​可​以​让​程​序​开​发​人​员​和​系​统​管​理​员​在​不​需​要​重​新​编​译​的​情​况​下​为​不​同​的​应​用​程​序​测​试​各​种​用​户​身​份​验​证​方​法​。​

编​写​模​块​的​文​档​包​括​在 /usr/share/doc/pam-<version-number>/ 目​录​中​,其​中​,<version-number> 是​你​系​统​上​的 PAM 的​版​本​号​。​

3.2.6. PAM 和​管​理​用​户​身​份​缓​存​(Administrative Credential Caching)

红帽企业 Linux 中​包​括​的​一​组​图​形​化​的​管​理​工​具​通​过 pam_timestamp.so 模​块​为​用​户​提​供​了​一​段​时​间​(最​长​为​5分​钟​)的​管​理​权​限​。​了​解​它​们​的​工​作​原​理​是​非​常​重​要​的​,如​果​一​个​用​户​暂​时​离​开​他​们​的​终​端​时​,pam_timestamp.so 没​有​被​关​闭​,那​么​任​何​可​以​使​用​这​个​终​端​的​人​都​可​以​利​用​它​来​操​纵​系​统​。​

在 PAM 时​间​戳​(timestamp)规​划​中​,图​形​化​的​管​理​程​序​会​在​启​动​时​要​求​用​户​输​入​根​用​户​密​码​。​当​用​户​被​验​证​后​,pam_timestamp.so 模​块​会​创​建​一​个​时​间​戳​文​件​。​默​认​情​况​下​,它​会​在 /var/run/sudo/ 目​录​中​被​创​建​。​如​果​时​间​戳​文​件​已​经​存​在​,图​形​化​的​管​理​程​序​不​会​再​要​求​输​入​密​码​。​pam_timestamp.so 模​块​会​更​新​时​间​戳​文​件​,这​个​用​户​可​以​重​新​获​得​额​外 5 分​钟​的​管​理​访​问​权​限​。​

你​可​以​通​过​查 /var/run/sudo/<user> 文​件​来​确​认​时​间​戳​文​件​的​实​际​状​态​。​对​于​台​式​机​来​说​,相​关​的​文​件​是 unknown:root。​如​果​这​个​文​件​存​在​而​且​它​的​时​间​戳​不​长​于​5分​钟​的​话​,用​户​身​份​是​有​效​的​。​

当​时​间​戳​文​件​存​在​时​,一​个​验​证​图​标​会​出​现​在​系​统​面​板​的​通​知​区​域​中​。​

验​证​图​标​

显​示​验​证​图​标​

图 3.1. 验​证​图​标​

3.2.6.1. 删​除 Timestamp 文​件​

关​闭​一​个​时​间​戳​处​于​活​动​状​态​下​的 PAM 的​控​制​台​前​,最​好​销​毁​时​间​戳​文​件​。​要​在​图​形​化​环​境​中​执​行​这​个​任​务​,点​击​面​板​中​的​验​证​图​标​。​一​个​对​话​框​会​出​现​,点​击 Forget Authorization 来​销​毁​活​动​的​时​间​戳​文​件​。​

取​消​验​证​对​话​框​

验​证​取​消​对​话​框​的​实​例​。​

图 3.2. 取​消​验​证​对​话​框​

在​处​理 PAM 时​间​戳​文​件​时​应​注​意​以​下​问​题​:

  • 如​果​是​通​过​使​用 ssh 远​程​登​录​到​系​统​,请​使​用 /sbin/pam_timestamp_check -k root 命​令​来​销​毁​时​间​戳​文​件​。​

  • 你​应​该​在​你​发​出​使​用​这​一​特​权​应​用​程​序​的​同​一​个​终​端​视​窗​下​运​行 /sbin/pam_timestamp_check -k root 命​令​。​

  • 要​使​用 /sbin/pam_timestamp_check -k 命​令​,你​必​须​以​最​初​启​动 pam_timestamp.so 模​块​的​用​户​身​份​登​录​。​不​要​以​根​用​户​身​份​登​录​来​使​用​这​个​命​令​。​

  • 如​果​你​要​销​毁​桌​面​上​的​用​户​身​份​信​息​(而​不​想​运​行​图​标​中​的 Forget Authorization),请​使​用​以​下​命​令​:

    /sbin/pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null
    

    如​果​使​用​这​个​命​令​失​败​,只​会​从​你​所​运​行​这​个​命​令​的 pty 中​删​除​用​户​身​份​信​息​。​

请​参​阅 pam_timestamp_check man page 来​获​得​更​多​关​于​使​用 pam_timestamp_check 来​销​毁​时​间​戳​文​件​的​信​息​。​

3.2.6.2. 常​用 pam_timestamp 命​令​

pam_timestamp.so 模​块​可​接​受​多​个​命​令​。​以​下​是​两​个​最​常​用​的​选​项​:

  • timestamp_timeout — 指​定​时​间​戳​文​件​的​有​效​期​(以​秒​为​单​位​)。​默​认​值​是 300 秒​(5分​钟​)。​

  • timestampdir — 指​定​时​间​戳​文​件​保​存​在​哪​个​目​录​中​。​默​认​值​是 /var/run/sudo/。​

请​参​阅 第 3.2.8.1 节 “安​装​的​文​件​编​辑​程​序​(Installed Documentation)” 来​获​得​更​多​关​于​控​制 pam_timestamp.so 模​块​的​信​息​。​

3.2.7. PAM 和​设​备​拥​有​者​

在 红帽企业 Linux 中​,第​一​个​通​过​物​理​控​制​台​登​录​的​用​户​可​以​控​制​特​定​的​设​备​并​可​以​执​行​一​些​通​常​只​有​根​用​户​才​可​以​执​行​的​任​务​。​这​是​由​名​为 pam_console.so 的 PAM 模​块​所​控​制​的​。​

3.2.7.1. 设​备​拥​有​者​身​份​

当​一​个​用​户​登​录​到​一​个 红帽企业 Linux 系​统​时​,pam_console.so 模​块​会​被 login 或​图​形​化​的​登​录​程​序​(gdm、​kdmxdm)调​用​。​如​果​这​个​用​户​是​第​一​个​通​过​物​理​控​制​台​登​录​的​用​户 — 称​为 控​制​台​用​户​ — 模​块​会​把​一​些​通​常​的​拥​有​者​是​根​用​户​的​设​备​的​所​有​权​分​配​给​这​个​用​户​。​这​个​控​制​台​用​户​会​拥​有​这​些​设​备​,直​到​这​个​用​户​的​最​后​一​个​本​地​会​话​结​束​。​在​这​个​用​户​退​出​系​统​后​,这​些​设​备​的​拥​有​者​身​份​则​被​交​回​给​根​用​户​。​

这​些​设​备​包​括​,但​不​限​于​,声​卡​、​软​驱​和 CD-ROM 驱​动​器​。​

这​个​设​施​允​许​一​个​本​地​用​户​在​不​需​要​获​得​根​权​限​的​情​况​下​来​使​用​这​些​设​备​,因​此​可​以​简​化​控​制​台​用​户​完​成​一​些​常​用​任​务​的​程​序​。​

你​可​以​通​过​编​辑​以​下​文​件​来​修​改​由 pam_console.so 控​制​的​设​备​列​表​:

  • /etc/security/console.perms

  • /etc/security/console.perms.d/50-default.perms

你​可​以​修​改​在​以​上​文​件​中​列​出​的​不​同​设​备​的​访​问​权​限​,或​覆​盖​已​经​指​定​的​默​认​设​置​。​你​应​该​创​建​一​个​新​文​件​(如 xx-name.perms)并​输​入​需​要​修​改​的​值​,而​不​是​修​改 50-default.perms 文​件​。​新​的​默​认​文​件​的​文​件​名​必​须​以​一​个​大​于 50 的​数​值​开​始​,如 51-default.perms。​这​样​会​覆​盖 50-default.perms 文​件​的​默​认​值​。​

警​告​

如​果 gdm、​kdmxdm 的​配​置​文​件​已​经​被​修​改​来​允​许​远​程​用​户​登​录​,而​且​ 主​机​被​配​置​为​使​用​运​行​级​别 5,建​议​你​把 /etc/security/console.perms 文​件​的 <console><xconsole> 命​令​项​的​值​改​为​:

<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0 
<xconsole>=:0\.[0-9] :0

这​将​防​止​远​程​用​户​获​得​设​备​的​访​问​权​,并​限​制​他​们​在​该​机​器​上​对​应​用​程​序​的​使​用​。​

如​果 gdm、​kdmxdm 的​配​置​文​件​被​修​改​为​允​许​远​程​用​户​登​录​,并​且​主​机​被​配​置​为​使​用​运​行​级​别 5 以​外​的​运​行​级​别​,建​议​你​删​除 整​个 <xconsole> 命​令​,并​把 <console> 命​令​改​为​:

<console>=tty[0-9][0-9]* vc/[0-9][0-9]*

3.2.7.2. 应​用​程​序​访​问​

该​控​制​台​用​户​也​可​以​使​用​一​些 /etc/security/console.apps/ 目​录​下​为​用​户​配​置​的​程​序​。​

这​个​目​录​中​包​括​允​许​控​制​台​用​户​使​用 /sbin/usr/sbin 中​的​某​些​应​用​程​序​的​配​置​文​件​。​

这​些​配​置​文​件​和​它​们​所​设​置​的​应​用​程​序​享​有​相​同​名​称​。​

控​制​台​用​户​可​以​使​用​的​一​组​重​要​应​用​程​序​程​序​包​括​三​个​可​以​用​来​关​闭​或​重​新​启​动​系​统​的​程​序​:

  • /sbin/halt

  • /sbin/reboot

  • /sbin/poweroff

因​为​这​些​都​是​支​持 PAM 的​应​用​程​序​,因​此​需​要​时​都​可​以​调​用 pam_console.so 模​块​。​

请​参​阅 第 3.2.8.1 节 “安​装​的​文​件​编​辑​程​序​(Installed Documentation)” 来​获​得​更​多​信​息​。​

3.2.8. 附​加​资​源​信​息​

以​下​资​源​进​一​步​介​绍​了​使​用​和​配​置 PAM 的​方​法​。​另​外​,你​还​可​以​通​过​查​看​系​统​上​的 PAM 配​置​文​件​来​了​解​它​们​是​如​何​构​成​的​。​

3.2.8.1. 安​装​的​文​件​编​辑​程​序​(Installed Documentation)

  • 与 PAM 相​关​的 man page — man page 上​有​多​个​不​同​的​应​用​程​序​和​配​置​文​件​与 PAM 有​关​。​以​下​列​出​了​其​中​较​重​要​的​页​数​。​

    配​置​文​件​
    • pam — 介​绍 PAM 的​重​要​信​息​,包​括 PAM 配​置​文​件​的​结​构​和​目​的​。​

      请​注​意​,这​一​页​讨​论​了 /etc/pam.conf/etc/pam.d/ 目​录​中​的​各​种​单​个​配​置​文​件​。​在​默​认​情​况​下​,红帽企业 Linux 使​用 /etc/pam.d/ 目​录​下​的​各​种​单​个​配​置​文​件​,而​不​使​用 /etc/pam.conf,即​使​这​个​文​件​存​在​也​使​用​。​

    • pam_console — 介​绍 pam_console.so 模​块​的​目​的​,也​描​述 PAM 配​置​文​件​中​应​该​使​用​的​适​当​语​法​。​

    • console.apps — 描​述 /etc/security/console.apps 配​置​文​件​的​格​式​和​可​用​的​选​项​,这​个​配​置​文​件​规​定​哪​些​应​用​程​序​可​以​被 PAM 分​配​的​控​制​台​用​户​访​问​。​

    • console.perms — 描​述 /etc/security/console.perms 配​置​文​件​的​格​式​和​可​用​的​选​项​,而​且​指​定​由 PAM 分​配​的​控​制​台​用​户​权​限​。​

    • pam_timestamp — 描​述 pam_timestamp.so 模​块​。​

  • /usr/share/doc/pam-<version-number> — 含​有 《​系​统​管​理​员​指​南​》​,一​个​《​模​块​编​写​人​员​指​南​》​和​《​应​用​程​序​开​发​人​员​手​册​》​,以​及 PAM 标​准​:DCE-RFC 86.0,其​中​,(<version-number> 是 PAM 的​版​本​号​。​

  • /usr/share/doc/pam-<version-number>/txts/README.pam_timestamp — 含​有​与 pam_timestamp.so PAM 模​块​相​关​的​信​息​,其​中​,<version-number> 是 PAM 的​版​本​号​

3.2.8.2. 一​些​有​用​的​网​址​

  • http://www.kernel.org/pub/linux/libs/pam/ — Linux-PAM 工​程​的​主​要​发​行​网​站​,含​有​多​个 PAM 模​块​的​信​息​和​一​个 FAQ 及​其​它 PAM 文​件​信​息​。​

    注​记​

    这​个​网​站​中​发​布 PAM 最​新​版​本​信​息​,也​许​不​会​和 红帽企业 Linux 所​提​供​的 PAM 版​本​信​息 100% 吻​合​。​

3.3. TCP Wrappers 和 xinetd

对​网​络​服​务​进​行​访​问​控​制​是​一​个​服​务​器​管​理​员​面​临​的​最​重​要​的​安​全​任​务​之​一​。​红帽企业 Linux 为​这​种​访​问​控​制​提​供​了​一​些​工​具​。​例​如​,内​核​使​用​一​个​基​于 iptables 的​防​火​墙​来​将​不​受​欢​迎​的​网​络​数​据​包​过​滤​在​内​核​网​络​之​外​。​对​于​使​用​这​种​防​火​墙​的​网​络​服​务​,TCP Wrappers 又​增​加​了​一​层​保​护​,这​层​保​护​通​过​定​义​哪​些​主​机​允​许​或​不​允​许​连​接​到 "wrapped" 网​络​服​务​上​来​实​现​。​xinetd超​级​服​务​器​ 就​是​这​样​的​一​个 wrapped network(会​绕​网​络​)服​务​。​这​项​服​务​被​称​为​一​个​超​级​服​务​器​,是​因​为​它​可​以​控​制​连​接​到​网​络​服​务​的​一​个​子​集​的​连​接​,还​能​进​一​步​精​致​地​进​行​访​问​控​制​。​

图 3.3 “网​络​服​务​的​访​问​控​制​” 为​一​基​本​实​例​来​说​明​这​些​工​具​是​如​何​组​合​在​一​起​来​保​护​网​络​的​。​

网​络​服​务​的​访​问​控​制​

图 A:网​络​服​务​访​问​控​制​的​流​程​图​

图 3.3. 网​络​服​务​的​访​问​控​制​

3.3.1. TCP Wrappers

在​默​认​情​况​下​会​安​装 TCP Wrappers 软​件​包​(tcp_wrappers),该​软​件​包​提​供​基​于​主​机​的​、​到​网​络​服​务​的​访​问​控​制​。​这​个​软​件​包​中​最​重​要​的​组​成​部​分​是 /usr/lib/libwrap.a 库​。​通​常​来​说​,使​用 libwrap.a 库​进​行​编​译​的​服​务​就​是​一​个 TCP Wrappers。​

当​一​个​客​户​试​图​与​一​个 TCP-wrapped 服​务​进​行​连​接​时​,这​个​服​务​首​先​会​检​查​主​机​的​访​问​文​件​(/etc/hosts.allow/etc/hosts.deny)来​决​定​这​个​客​户​是​否​被​允​许​连​接​到​这​个​服​务​。​在​大​多​数​情​况​下​,这​个​服​务​还​会​使​用 syslog 守​护​进​程​(syslogd)把​这​个​发​出​请​求​的​客​户​用​户​名​以​及​所​要​求​访​问​的​服​务​写​入 /var/log/secure/var/log/messages 文​件​中​。​

如​果​一​个​客​户​被​允​许​进​行​连​接​,TCP Wrappers 会​释​放​它​对​所​请​求​服​务​的​连​接​控​制​权​,然​后​将​不​再​在​这​个​客​户​与​服​务​器​间​的​通​信​过​程​中​起​任​何​作​用​。​

除​了​可​以​控​制​访​问​和​记​录​日​志​信​息​外​,TCP Wrappers 还​可​以​在​允​许​或​拒​绝​到​网​络​服​务​的​连​接​请​求​之​前​来​执​行​相​关​的​命​令​与​客​户​进​行​交​流​。​

因​为 TCP Wrappers 是​系​统​管​理​员​所​使​用​的​安​全​工​具​库​的​一​个​很​有​价​值​的​补​充​,红帽企业 Linux 中​的​多​数​网​络​服​务​都​与 libwrap.a 库​相​连​。​这​样​的​应​用​程​序​包​括 /usr/sbin/sshd、​/usr/sbin/sendmail/usr/sbin/xinetd。​

注​释​

要​决​定​一​个​网​络​服​务​的​二​进​制​码​是​否​与 libwrap.a 相​连​,以​根​用​户​的​身​份​键​入​以​下​命​令​:

ldd <binary-name> | grep libwrap

使​用​网​络​服​务​的​二​进​制​码​的​名​称​来​替​换 <binary-name>。​

如​果​这​个​命​令​的​输​出​结​果​是​空​的​,这​项​网​络​服​务​则 没​有​libwrap.a 链​接​。​

以​下​的​例​子​表​示 /usr/sbin/sshdlibwrap.a 相​链​接​:

[root@myserver ~]# ldd /usr/sbin/sshd | grep libwrap
        libwrap.so.0 =
> /usr/lib/libwrap.so.0 (0x00655000)
[root@myserver ~]#

3.3.1.1. TCP Wrappers 的​优​势​

TCP Wrappers 拥​有​以​下​其​它​网​络​控​制​技​术​不​具​备​的​优​势​:

  • 对​客​户​和 wrapped (会​绕​的​)网​络​服​务​的​透​明​性​ — 连​接​的​客​户​和 wrapped 网​络​服​务​都​不​需​要​知​道 TCP Wrappers 在​使​用​中​。​合​法​用​户​会​被​记​录​到​日​志​中​,并​获​得​所​需​要​的​服​务​,而​非​法​用​户​则​无​法​获​得​要​求​的​服​务​。​

  • 中​央​化​管​理​多​项​协​议​ — TCP Wrappers 独​立​运​行​于​它​们​所​保​护​的​网​络​服​务​,这​就​允​许​多​个​服​务​器​应​用​程​序​共​享​一​组​通​用​的​访​问​控​制​配​置​文​件​,从​而​简​化​了​管​理​任​务​。​

3.3.2. TCP Wrappers 配​置​文​件​

要​决​定​一​个​客​户​是​否​被​允​许​连​接​一​项​服​务​,TCP Wrappers 会​参​考​以​下​两​个​文​件​,这​两​个​文​件​通​常​被​称​为 主​机​访​问​ 文​件​:

  • /etc/hosts.allow

  • /etc/hosts.deny

当​一​个 TCP Wrappers 接​收​到​一​个​客​户​请​求​时​,它​会​运​行​以​下​几​个​步​骤​:

  1. 检​查​/etc/hosts.allow. — TCP 会​绕​的​服​务​会​循​序​地​解​释 /etc/hosts.allow 文​件​并​应​用​第​一​个​为​这​个​服​务​所​指​定​的​规​则​。​如​果​找​到​了​一​个​匹​配​的​规​则​,则​允​许​连​接​。​如​果​找​不​到​匹​配​的​规​则​,就​会​进​行​下​一​个​步​骤​。​

  2. 检​查 /etc/hosts.deny. — TCP 会​绕​的​服​务​会​循​序​地​来​解​释 /etc/hosts.deny 文​件​。​如​果​找​到​一​个​匹​配​的​规​则​,则​拒​绝​这​个​连​接​。​如​果​找​不​到​匹​配​的​规​则​,则​允​许​连​接​到​这​个​服​务​。​

在​使​用 TCP Wrappers 保​护​网​络​服​务​时​应​该​考​虑​以​下​几​个​要​点​:

  • 因​为 hosts.allow 中​的​规​则​会​首​先​被​应​用​,所​以​比 hosts.deny 中​指​定​的​规​则​有​优​先​权​。​因​此​,如​果​访​问​一​项​服​务​在 hosts.allow 中​设​置​为​允​许​,那​么​在 hosts.deny 中​同​一​项​服​务​的​拒​绝​访​问​设​置​则​被​忽​略​。​

  • 每​个​文​件​中​的​各​项​规​则​是​由​上​到​下​被​读​取​的​,第​一​个​匹​配​的​规​则​是​唯​一​被​应​用​的​规​则​。​因​此​,规​则​的​排​列​顺​序​极​其​重​要​。​

  • 如​果​在​这​两​个​文​件​中​都​没​有​找​到​匹​配​的​规​则​,或​这​两​个​文​件​都​不​存​在​,那​么​就​授​予​访​问​这​项​服​务​的​权​限​。​

  • TCP 会​绕​的​服​务​并​不​缓​存​主​机​访​问​文​件​中​的​规​则​,因​此​对 hosts.allowhosts.deny 的​配​置​改​变​都​无​需​重​新​启​动​网​络​服​务​便​会​马​上​起​作​用​。​

警​告​

如​果​一​个​主​机​访​问​文​件​的​最​后​一​行​不​是​一​个​新​行​符​(即​按 Enter 键​所​产​生​的​),这​个​文​件​中​的​最​后​一​条​规​则​会​失​败​,而​且​会​将​一​个​错​误​信​息​记​录​到 /var/log/messages/var/log/secure 文​件​中​。​一​个​占​据​多​个​行​的​规​则​在​换​行​时​没​有​使​用​反​斜​线​字​符​时​,也​会​有​同​样​的​问​题​。​下​面​的​例​子​展​示​了​规​则​失​败​时​日​志​讯​息​的​相​关​部​分​,规​则​失​败​的​原​因​可​以​是​上​文​提​到​的​两​个​原​因​中​任​何​一​个​:

warning: /etc/hosts.allow, line 20: missing newline or line too long

3.3.2.1. 格​式​化​访​问​规​则​

/etc/hosts.allow/etc/hosts.deny 文​件​的​格​式​是​完​全​相​同​的​。​每​个​规​则​都​必​须​位​于​其​正​确​的​行​位​。​空​行​或​以​井​字​号 (#) 开​始​的​行​会​被​忽​略​。​

每​条​规​则​都​使​用​以​下​基​本​格​式​来​对​网​络​服​务​的​访​问​进​行​控​制​:

<daemon list>: <client list> [: <option>: <option>: ...]
  • <daemon list> — 一​个​由​逗​号​分​隔​的​进​程​名​(不​是​ 服​务​名​)列​表​,或 ALL 通​配​符​。​守​护​进​程​列​表​也​接​受​运​算​符​(请​参​阅​第 3.3.2.1.4 节 “算​子​(Operators)”)来​提​供​更​大​的​灵​活​性​。​

  • <client list> — 一​个​由​逗​号​分​隔​的​主​机​名​、​主​机 IP 地​址​、​特​殊​模​式​或​通​配​符​列​表​,该​列​表​用​来​识​别​受​这​项​规​则​影​响​的​主​机​。​客​户​列​表​也​接​受​在 第 3.3.2.1.4 节 “算​子​(Operators)” 中​列​出​的​运​算​符​来​允​许​更​大​的​灵​活​性​。​

  • <option> — 这​项​规​则​被​触​发​时​要​运​行​一​个​动​作​选​项​或​由​冒​号​分​隔​开​动​作​列​表​。​选​项​领​域​支​持​扩​展​式​、​发​布 shell 命​令​、​允​许​或​拒​绝​访​问​以​及​修​改​日​志​记​录​。​

注​释​

在​这​部​指​南​的​其​它​章​节​可​以​找​到​关​于​上​面​提​到​的​专​门​术​语​的​更​多​信​息​:

下​面​是​一​个​基​本​的​主​机​访​问​规​则​示​例​:

vsftpd : .example.com

这​条​规​则​指​示 TCP Wrappers 监​测​在 example.com 域​内​的​任​何​主​机​要​向 FTP 守​护​进​程​(vsftpd)发​出​的​连​接​。​如​果​这​条​规​则​出​现​在 hosts.allow 中​,连​接​则​被​接​受​。​如​果​这​条​规​则​出​现​在 hosts.deny 中​,连​接​则​被​拒​绝​。​

下​面​的​主​机​访​问​规​则​比​较​复​杂​,而​且​使​用​两​个​选​项​领​域​:

sshd : .example.com  \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny

请​注​意​每​个​选​项​领​域​前​面​都​有​反​斜​线​(\)。​使​用​反​斜​线​可​以​防​止​由​于​规​则​太​长​而​造​成​失​败​。​

这​个​范​例​规​则​规​定​如​果 example.com 中​的​某​个​主​机​试​图​向 SSH 守​护​进​程​(sshd)发​出​连​接​请​求​,那​么​执​行 echo 命​令​来​将​这​次​尝​试​添​加​到​一​个​专​用​日​志​文​件​里​,并​且​拒​绝​该​连​接​。​因​为​使​用​了​命​令​选​项 deny,这​一​行​拒​绝​访​问​,即​使​它​出​现​在 hosts.allow 文​件​里​。​请​参​阅 第 3.3.2.2 节 “选​项​领​域 ” 来​获​得​关​于​各​种​可​选​选​项​更​详​细​的​信​息​。​

3.3.2.1.1. 通​配​符​

通​配​符​使 TCP Wrappers 更​容​易​匹​配​各​种​守​护​进​程​或​主​机​。​使​用​通​配​符​最​频​繁​的​是​在​访​问​规​则​的​客​户​列​表​领​域​内​。​

以​下​是​可​以​被​使​用​的​通​配​符​:

  • ALL — 完​全​匹​配​,可​以​用​在​守​护​进​程​列​表​和​客​户​列​表​中​。​

  • LOCAL — 与​任​何​不​包​括​圆​点 (.) 的​主​机​匹​配​,如 localhost。​

  • KNOWN — 与​任​何​带​有​已​知​主​机​名​和​主​机​地​址​或​已​知​用​户​的​主​机​匹​配​。​

  • UNKNOWN — 与​任​何​带​有​未​知​主​机​名​和​主​机​地​址​或​未​知​用​户​的​主​机​匹​配​。​

  • PARANOID — 与​任​何​带​有​主​机​名​和​主​机​地​址​不​相​匹​配​的​主​机​匹​配​。​

小​心​

通​配​符 KNOWNUNKNOWN, 和 PARANOID 使​用​起​来​应​该​多​加​小​心​,因​为​这​些​通​配​符​的​正​确​运​行​有​赖​于 DNS 服​务​器​的​功​能​。​命​名​解​析​时​出​现​的​任​何​失​误​都​可​能​使​合​法​用​户​无​法​访​问​某​项​服​务​。​

3.3.2.1.2. 模​式​

模​式​可​以​用​在​访​问​规​则​的​客​户​领​域​里​,从​而​更​准​确​地​给​客​户​主​机​指​定​分​组​。​

下​面​是​一​个​输​入​客​户​领​域​的​输​入​项​常​用​模​式​列​表​:

  • 主​机​名​以​圆​点 (.)开​始​ — 如​果​在​一​个​主​机​名​的​开​始​放​置​一​个​圆​点​,那​么​就​与​所​有​共​享​这​个​主​机​名​中​列​出​的​相​同​组​成​部​分​的​主​机​匹​配​。​下​面​的​例​子​适​用​于 example.com 域​内​的​任​何​主​机​:

    ALL : .example.com
    
  • IP 地​址​以​圆​点 (.) 结​束​ — 如​果​在​一​个 IP 地​址​的​末​尾​放​置​一​个​圆​点​,那​么​就​与​所​有​共​享​一​个 IP 地​址​的​起​始​数​值​组​的​主​机​匹​配​。​下​面​的​例​子​适​用​于 192.168.x.x 网​络​内​的​任​何​主​机​:

    ALL : 192.168.
    
  • IP 地​址​/网​络​掩​码​对​ — 网​络​掩​码​表​达​式​也​可​以​作​为​一​个​模​式​用​来​控​制​对​某​一​组​特​定​的 IP 地​址​的​访​问​。​下​面​的​例​子​适​用​于​地​址​区​间​从 192.168.0.0192.168.1.255 的​任​何​主​机​:

    ALL : 192.168.0.0/255.255.254.0
    

    重​要​

    使​用 IPv4 地​址​空​间​时​,地​址​/前​缀​长​度​(prefixlen)对​声​明 (CIDR 记​号​) 不​被​支​持​。​只​有 IPv6 规​则​可​以​使​用​这​种​格​式​。​

  • [IPv6 地​址​]/前​缀​长​度​对​ — [网​]/前​缀​长​度​对​也​可​以​作​为​一​种​模​式​用​来​控​制​对​某​一​组​特​定​的 IPv6 地​址​的​访​问​。​下​面​的​例​子​会​适​用​于​地​址​区​间​从 3ffe:505:2:1::3ffe:505:2:1:ffff:ffff:ffff:ffff 的​任​何​主​机​:

    ALL : [3ffe:505:2:1::]/64
    
  • 星​号 (*) — 星​号​可​以​用​来​匹​配​整​个​不​同​组​别​的​主​机​名​或 IP 地​址​,只​要​在​含​有​其​它​模​式​类​型​的​客​户​列​表​中​这​些​组​不​混​杂​在​一​起​的​话​。​下​面​的​例​子​会​适​用​于 example.com 域​内​的​任​何​主​机​:

    ALL : *.example.com
    
  • 斜​线 (/) — 如​果​一​个​客​户​列​表​以​斜​线​开​始​,这​个​列​表​就​被​当​作​一​个​文​件​名​对​待​。​若​是​需​要​指​定​很​大​数​量​主​机​的​各​种​规​则​的​话​,这​一​点​就​很​有​用​处​。​下​面​的​例​子​把 TCP Wrappers 交​付​于 /etc/telnet.hosts 文​件​来​进​行​所​有​的 Telnet 连​接​:

    in.telnetd : /etc/telnet.hosts
    

TCP Wrappers 也​接​受​其​它​较​少​用​到​的​模​式​。​请​参​阅 hosts_access man 5 page 来​获​取​更​多​信​息​。​

警​告​

使​用​主​机​名​和​域​名​时​要​特​别​小​心​,因​为​攻​击​者​可​能​会​使​用​各​种​诀​窍​来​做​到​对​名​称​的​准​确​分​解​。​另​外​,DNS 服​务​的​中​断​甚​至​让​授​权​用​户​都​无​法​使​用​网​络​服​务​。​因​此​,如​果​可​能​的​话​,最​好​使​用 IP 地​址​。​

3.3.2.1.3. Portmap (端​口​映​射​器​) 和 TCP Wrappers

实​施 TCP Wrappers 的 Portmap 不​支​持​主​机​查​找​,也​就​是​说 portmap 命​令​不​能​用​主​机​名​来​识​别​相​应​的​主​机​。​因​此​,在 hosts.allowhosts.deny 中​对 portmap 的​访​问​控​制​规​则​必​须​使​用 IP 地​址​来​特​指​某​主​机​,或​用​关​键​词 ALL。​

portmap 访​问​控​制​规​则​的​修​改​可​能​不​会​立​即​起​作​用​。​你​可​能​得​重​新​启​动 portmap 服​务​。​

像 NIS 和 NFS 一​样​的​被​广​泛​使​用​的​服​务​都​有​赖​于 portmap 来​进​行​运​作​,所​以​要​了​解​这​些​局​限​性​。​

3.3.2.1.4. 算​子​(Operators)

目​前​,访​问​控​制​规​则​接​受​一​个​算​子 EXCEPT,这​个​算​子​可​以​用​在​一​个​规​则​的​守​护​程​序​列​表​中​,也​可​以​用​在​客​户​列​表​中​。​

这​个 EXCEPT 算​子​允​许​特​定​的​例​外​以​用​来​在​同​一​个​规​则​中​拓​宽​匹​配​的​范​围​。​

下​面​的​例​子​来​自​一​个 hosts.allow 文​件​,除 cracker.example.com 之​外​,允​许​所​有​example.com 主​机​连​接​所​有​的​服​务​:

ALL: .example.com EXCEPT cracker.example.com

hosts.allow 文​件​内​的​另​一​个​例​子​中​,来​自 192.168.0.x 网​络​的​所​有​客​户​都​可​以​使​用​除 FTP 之​外​的​所​有​服​务​:

ALL EXCEPT vsftpd: 192.168.0.

注​释​

从​组​织​结​构​上​来​说​,避​免​使​用 EXCEPT 算​子​更​简​易​一​些​。​因​为​这​样​可​以​让​其​他​的​系​统​管​理​员​能​很​快​地​扫​描​相​关​的​文​件​以​便​查​看​哪​些​主​机​被​允​许​或​被​拒​绝​访​问​服​务​,而​无​须​通​过 EXCEPT 算​子​来​进​行​排​序​。​

3.3.2.2. 选​项​领​域

除​了​允​许​和​拒​绝​访​问​的​基​本​规​则​外​,红帽企业 Linux 对 TCP Wrappers 的​实​施​支​持​通​过 option fields 对​访​问​控​制​语​言​的​扩​展​式​。​通​过​在​主​机​访​问​规​则​中​使​用​选​项​领​域​,系​统​管​理​员​可​以​完​成​多​种​不​同​的​任​务​,比​如​像​修​改​日​志​动​作​、​加​强​访​问​控​制​以​及​发​出 shell 命​令​。​

3.3.2.2.1. 记​录​日​志​

通​过​使​用 severity 命​令​,其​选​项​领​域​让​系​统​管​理​员​能​够​很​容​易​地​改​变​一​个​规​则​的​日​志​设​施​和​优​先​级​别​。​

在​下​面​的​例​子​中​,example.com 域​内​的​任​何​主​机​向 SSH 守​护​进​程​发​出​的​各​种​连​接​会​登​录​到​默​认​的 authprivsyslog 设​施​内​(因​为​没​有​具​体​指​明​设​施​参​数​值​),并​且​以 emerg 优​先​:

sshd : .example.com : severity emerg

使​用 severity 选​项​也​可​以​指​定​某​个​设​施​。​下​面​的​例​子​将​来​自 example.com 域​主​机​的​任​何 SSH 连​接​意​图​登​录​到 local0 设​施​,并​以​alert 优​先​。​

sshd : .example.com : severity local0.alert

注​释​

实​际​操​作​中​,这​个​例​子​直​到 syslog 守​护​进​程​(syslogd)被​配​置​为​登​录​到 local0 设​施​才​会​起​作​用​。​请​参​阅 syslog.conf man page 来​获​取​有​关​配​置​定​制​日​志​设​施​的​信​息​。​

3.3.2.2.2. 访​问​控​制​

选​项​领​域​也​允​许​系​统​管​理​员​通​过​添​加 allowdeny 作​为​命​令​的​最​后​选​项​来​明​确​地​以​单​个​规​则​方​式​允​许​或​拒​绝​主​机​。​

例​如​,下​面​的​两​个​规​则​允​许​来​自 client-1.example.com 的 SSH 连​接​但​却​拒​绝​来​自 client-2.example.com 的​连​接​:

sshd : client-1.example.com : allow
sshd : client-2.example.com : deny

访​问​控​制​以​每​个​规​则​为​基​础​,这​样​选​项​领​域​就​允​许​系​统​管​理​员​把​所​有​访​问​规​则​写​成​一​个​单​一​文​件​,要​么​是​hosts.allow,要​么​是 hosts.deny。​有​些​系​统​管​理​员​认​为​这​样​组​织​访​问​规​则​更​容​易​一​些​。​

3.3.2.2.3. Shell 命​令​

选​项​领​域​允​许​访​问​规​则​通​过​下​面​两​个​指​令​发​出 shell 命​令​:

  • spawn — 作​为​子​进​程​发​出​一​个 shell 命​令​。​这​个​命​令​可​以​完​成​的​任​务​有​:使​用​/usr/sbin/safe_finger 来​获​取​发​出​请​求​客​户​的​更​多​信​息​,或​使​用 echo 命​令​来​创​建​专​用​日​志​文​件​。​

    在​下​面​的​例​子​中​,试​图​访​问​来​自 example.com 域​的 Telnet 服​务​的​客​户​被​俏​俏​地​登​录​到​一​个​专​用​文​件​:

    in.telnetd : .example.com \
            : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \
            : allow
    
  • twist — 把​要​求​进​行​的​服​务​转​换​成​特​定​的​命​令​。​这​个​命​令​经​常​用​来​给​外​侵​者​设​立​陷​阱​(也​叫​"蜜​罐​儿​")。​也​可​以​用​来​向​预​连​接​的​客​户​发​送​信​息​。​这​个 twist 命​令​必​须​出​现​在​该​规​则​命​令​行​的​末​尾​。​

    在​下​面​的​例​子​中​,试​图​访​问​来​自 example.com 域​的 FTP 服​务​的​客​户​接​收​到​用 echo 命​令​发​送​的​一​个​讯​息​:

    vsftpd : .example.com \
            : twist /bin/echo "421 This domain has been black-listed. Access denied!"
    

如​果​需​要​关​于 shell 命​令​选​项​的​更​多​信​息​,请​参​阅 hosts_options man page。​

3.3.2.2.4. 扩​展​式​

扩​展​式​命​令​与 spawntwist 命​令​一​起​使​用​时​,可​以​提​供​关​于​客​户​、​服​务​器​以​及​相​关​进​程​的​信​息​。​

下​面​是​一​个​支​持​扩​展​式​的​命​令​列​表​:

  • %a — 返​回​用​户​的 IP 地​址​。​

  • %A — 返​回​服​务​器​的 IP 地​址​。​

  • %c — 返​回​大​量​的​客​户​信​息​,比​如​用​户​名​和​主​机​名​,或​用​户​名​和 IP 地​址​。​

  • %d — 返​回​守​护​进​程​的​名​称​。​

  • %h — 返​回​客​户​的​主​机​名​(或 IP 地​址​,如​果​主​机​名​没​有​提​供​的​话​)。​

  • %H — 返​回​服​务​器​的​主​机​名​(或 IP 地​址​,如​果​主​机​名​没​有​提​供​的​话​)。​

  • %n — 返​回​客​户​的​主​机​名​。​如​果​主​机​名​没​有​提​供​的​话​,屏​幕​上​会​显​示 unknown。​如​果​客​户​的​主​机​名​和​主​机​地​址​不​匹​配​的​话​, 屏​幕​上​会​显​示 paranoid。​

  • %N — 返​回​服​务​器​的​主​机​名​。​如​果​主​机​名​没​有​提​供​的​话​,屏​幕​上​会​显​示 unknown。​如​果​服​务​器​的​主​机​名​和​主​机​地​址​不​匹​配​的​话​, 屏​幕​上​会​显​示 paranoid。​

  • %p — 返​回​守​护​进​程​的​进​程 ID。​

  • %s — 返​回​各​种​不​同​类​型​的​服​务​器​信​息​,比​如​守​护​进​程​的​进​程​和​服​务​器​的​主​机​或 IP 地​址​。​

  • %u — 返​回​客​户​的​用​户​名​。​如​果​没​有​提​供​的​话​,屏​幕​上​会​显​示 unknown。​

下​面​用​来​示​范​的​规​则​与 spawn 命​令​一​起​使​用​了​一​个​扩​展​式​来​在​一​个​定​制​的​日​志​文​件​中​确​认​客​户​主​机​。​

当​来​自 example.com 域​的​一​个​主​机​向 SSH 守​护​进​程​(sshd)发​出​连​接​意​图​时​,执​行 echo 命​令​来​把​这​次​包​括​客​户​主​机​名​(通​过​使​用 %h 扩​展​式​)的​连​接​尝​试​信​息​记​录​到​一​个​专​用​文​件​中​。​

sshd : .example.com  \
        : spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \
        : deny

同​样​的​,扩​展​式​也​可​以​用​来​把​个​性​化​的​讯​息​返​回​给​客​户​。​在​下​面​的​例​子​中​,试​图​访​问​来​自 example.com 域​的 FTP 服​务​的​客​户​们​得​到​通​知​,他​们​的​访​问​被​服​务​器​取​缔​了​:

vsftpd : .example.com \
: twist /bin/echo "421 %h has been banned from this server!"

如​果​需​要​有​关​可​用​扩​展​式​的​更​完​全​的​解​释​,以​及​对​附​加​的​访​问​控​制​选​项​的​更​完​全​的​解​释​,请​参​阅 man page 的​第​五​部​分​,查​看 hosts_accessman 5 hosts_access)和 hosts_options。​

请​参​阅 第 3.3.5 节 “其​它​资​料​” 来​获​取​关​于 TCP Wrappers 的​更​多​信​息​。​

3.3.3. xinetd

xinetd 守​护​进​程​是​一​个 TCP-wrapped (TCP-会​绕​的​)超​级​服​务​,这​种​服​务​控​制​对​一​个​流​行​网​络​服​务​子​集​的​访​问​,该​子​集​包​括 FTP、 IMAP 和 Telnet。​同​时​这​种​服​务​还​对​访​问​控​制​、​增​强​的​日​志​记​录​功​能​、​捆​绑​、​重​定​向​以​及​资​源​使​用​控​制​提​供​特​定​化​服​务​配​置​选​项​。​

当​一​个​用​户​试​图​连​接​由 xinetd 控​制​的​一​个​网​络​服​务​时​,这​种​超​级​服​务​会​接​到​请​求​并​且​查​看​是​否​有​任​何​相​匹​配​的 TCP Wrappers 访​问​控​制​规​则​存​在​。​

如​果​连​接​被​允​许​,xinetd 则​检​验​该​连​接​在​其​个​性​化​的​规​则​下​对​那​项​服​务​来​说​是​被​允​许​的​。​同​时​也​检​查​该​项​服​务​是​否​还​有​足​够​的​资​源​份​额​以​及​这​项​服​务​是​否​与​任​何​定​义​好​的​规​则​相​冲​突​。​

如​果​所​有​条​件​都​得​到​满​足​,(也​就​是​:访​问​这​项​服​务​的​请​求​被​允​许​,这​项​服​务​还​有​足​够​的​资​源​份​额​,以​及​这​项​服​务​不​与​任​何​定​义​好​的​规​则​相​冲​突​),那​么 xinetd 就​开​始​进​行​被​请​求​的​服​务​并​且​让​其​通​过​对​连​接​的​访​问​控​制​。​连​接​建​立​后​,xinetd 就​不​再​参​与​客​户​和​服​务​器​之​间​的​通​讯​交​流​。​

3.3.4. xinetd 配​置​文​件​

xinetd 的​配​置​文​件​如​下​:

  • /etc/xinetd.conf — 全​局 xinetd 配​置​文​件​。​

  • /etc/xinetd.d/ — 包​含​所​有​具​体​化​服​务​文​件​的​目​录​。​

3.3.4.1. The /etc/xinetd.conf File

/etc/xinetd.conf 文​件​包​含​一​般​的​配​置​设​定​,这​种​设​定​影​响 xinetd 控​制​下​的​每​一​项​服​务​。​当 xinetd 服​务​第​一​次​启​动​时​,其​设​定​信​息​就​被​读​取​,所​以​要​想​使​改​变​后​的​配​置​起​作​用​,你​需​要​重​新​启​动 xinetd 服​务​。​下​面​是​一​个 /etc/xinetd.conf 文​件​的​示​范​:

defaults
{
         instances               = 60        
         log_type                = SYSLOG        authpriv
         log_on_success          = HOST PID
         log_on_failure          = HOST
         cps                     = 25 30
}
includedir /etc/xinetd.d

这​些​行​控​制 xinetd 以​下​的​各​个​方​面​:

  • instances — 指​定 xinetd 可​以​处​理​同​时​间​进​入​系​统​的​请​求​的​最​大​数​值​。​

  • log_type — 配​置 xinetd 来​使​用 authpriv 日​志​设​施​,该​设​施​将​日​志​条​目​写​入 /var/log/secure 文​件​。​如​果​加​上​一​个​像 FILE /var/log/xinetdlog 一​样​的​命​令​,就​会​在 /var/log/ 目​录​下​创​建​一​个​叫​作 xinetdlog 的​定​制​日​志​文​件​。​

  • log_on_success — 配​置 xinetd 来​记​录​成​功​的​连​接​尝​试​。​默​认​情​况​下​,远​程​主​机​的 IP 地​址​和​服​务​器​处​理​这​个​请​求​的​处​理 ID 都​要​被​记​录​。​

  • log_on_failure — 配​置 xinetd 来​记​录​失​败​的​连​接​尝​试​,或​被​拒​绝​的​连​接​尝​试​。​

  • cps — 配​置 xinetd 来​设​定​对​任​何​一​项​服​务​来​说​每​秒​钟​最​多​允​许 25 个​连​接​。​如​果​超​过​这​个​限​制​,该​服​务​就​会​隐​退 30 秒​。​

  • includedir/etc/xinetd.d/ — 包​含​位​于 /etc/xinetd.d/ 目​录​下​的​并​且​在​具​体​化​特​定​服​务​配​置​文​件​中​声​明​的​各​种​选​项​。​请​参​阅 第 3.3.4.2 节 “The /etc/xinetd.d/ Directory” 来​获​取​更​多​信​息​。​

注​释​

log_on_successlog_on_failure/etc/xinetd.conf 中​的​设​定​经​常​被​进​一​步​修​改​,以​形​成​具​体​化​特​定​服​务​的​配​置​文​件​。​因​此​在​某​特​定​服​务​的​日​志​文​件​中​呈​现​的​信​息​要​比 /etc/xinetd.conf 文​件​所​预​示​的​多​。​请​参​阅 第 3.3.4.3.1 节 “记​录​日​志​选​项​” 来​获​取​更​一​步​的​信​息​。​

3.3.4.2. The /etc/xinetd.d/ Directory

/etc/xinetd.d/ 目​录​含​有 xinetd 管​理​下​的​每​一​项​服​务​的​配​置​文​件​以​及​与​该​服​务​相​关​连​的​各​文​件​的​名​称​。​就 xinetd.conf 来​说​,该​目​录​只​有​当 xinetd 服​务​启​动​时​才​被​读​取​。​要​使​改​变​的​配​置​起​作​用​,系​统​管​理​员​必​须​重​新​启​动 xinetd 服​务​。​

/etc/xinetd.d/ 目​录​下​的​文​件​格​式​使​用​与 /etc/xinetd.conf 相​同​的​常​规​格​式​。​各​项​服​务​的​配​置​都​储​存​在​一​个​独​立​的​文​件​中​,其​主​要​原​因​是​这​样​做​使​得​个​性​化​定​制​更​容​易​一​些​,一​项​服​务​影​响​其​它​服​务​的​可​能​性​也​更​小​一​些​。​

要​想​了​解​这​些​文​件​是​如​何​组​构​在​一​起​的​,请​参​考 /etc/xinetd.d/krb5-telnet 文​件​:

service telnet
{
         flags           = REUSE
         socket_type     = stream
         wait            = no
         user            = root
         server          = /usr/kerberos/sbin/telnetd
         log_on_failure  += USERID
         disable         = yes
}

这​些​行​控​制 telnet 服​务​的​多​个​不​同​侧​面​:

  • service — 指​定​服​务​名​称​,通​常​是 /etc/services 文​件​中​服​务​列​表​中​的​一​项​。​

  • flags — 设​定​连​接​的​一​系​列​属​性​中​任​何​一​个​属​性​。​REUSE 指​示 xinetd 来​重​新​使​用​这​个​插​座​进​行 Telnet 连​接​。​

    注​释​

    反​对​使​用 REUSE 标​识​旗​。​现​在​所​有​服​务​都​暗​暗​地​使​用 REUSE 标​识​旗​。​

  • socket_type — 设​定​该​网​络​插​座​类​型​为 stream。​

  • wait — 指​定​这​项​服​务​是​单​线​程​(yes)还​是​多​线​程​(no)。​

  • user — 指​定​该​进​程​运​行​在​哪​个​用​户 ID 下​。​

  • server — 指​定​要​发​射​哪​个​二​进​制​可​执​行​文​件​。​

  • log_on_failure — 为 log_on_failure 指​定​登​录​参​数​,在 xinetd.conf 中​已​经​定​义​好​的​除​外​。​

  • disable — 指​定​这​项​服​务​是​要​被​中​止​(yes)还​是​不​被​中​止​(no)。​

请​参​阅 xinetd.conf man page 来​获​取​关​于​这​些​选​项​及​其​用​途​的​更​多​信​息​。​

3.3.4.3. 改​变 xinetd 配​置​文​件​

对​于​由 xinetd 保​护​的​各​项​服​务​,有​一​系​列​的​命​令​可​以​使​用​。​这​一​部​分​突​出​讨​论​一​些​比​较​常​用​的​选​项​。​

3.3.4.3.1. 记​录​日​志​选​项​

下​面​的​日​志​记​录​选​项​可​用​于 /etc/xinetd.d/目​录​下​的 /etc/xinetd.conf 和​各​种​具​体​化​特​定​服​务​配​置​文​件​。​

下​面​是​一​些​比​较​常​用​的​日​志​记​录​选​项​列​表​:

  • ATTEMPT — 日​志​记​录​每​次​连​接​尝​试​失​败​的​事​实​(log_on_failure)。​

  • DURATION — 日​志​记​录​这​项​服​务​被​远​程​系​统​使​用​的​时​间​长​度​(log_on_success)。​

  • EXIT — 日​志​记​录​退​出​状​态​或​这​项​服​务​的​中​止​信​号​(log_on_success)。​

  • HOST — 日​志​记​录​远​程​主​机​的 IP 地​址​(log_on_failurelog_on_success)。​

  • PID — 日​志​记​录​该​服​务​器​接​到​连​接​请​求​时​进​行​处​理​的​处​理 ID(log_on_success)。​

  • USERID — 日​志​记​录​远​程​用​户​使​用​为​所​有​多​线​程​主​流​服​务​而​在 RFC 1413 中​规​定​的​方​法​(log_on_failure andlog_on_success)。​

如​果​需​要​一​个​日​志​记​录​的​完​整​列​表​,请​参​阅 xinetd.conf man page。​

3.3.4.3.2. 访​问​控​制​选​项​

xinetd 服​务​的​用​户​们​可​以​选​择​使​用 TCP Wrappers 主​机​访​问​规​则​,也​可​以​通​过 xinetd 配​置​文​件​提​供​访​问​控​制​,或​二​者​混​合​使​用​。​请​参​阅 第 3.3.2 节 “TCP Wrappers 配​置​文​件​” 来​获​取​关​于 TCP Wrappers 主​机​访​问​控​制​文​件​的​更​多​信​息​。​

这​一​部​分​讨​论​如​何​使​用 xinetd 来​控​制​对​各​种​服​务​的​访​问​。​

注​释​

与 TCP Wrappers 不​同​的​是​,对​访​问​控​制​作​出​的​配​置​改​变​只​有​在 xinetd 管​理​员​重​新​启​动 xinetd 服​务​后​才​起​作​用​。​

与 TCP Wrappers 不​同​的​还​有​,通​过 xinetd 实​现​的​访​问​控​制​只​影​响​由 xinetd 控​制​下​的​各​项​服​务​。​

xinetd 主​机​访​问​控​制​与 TCP Wrappers 使​用​的​方​法​不​同​。​TCP Wrappers 把​所​有​访​问​配​置​设​定​放​在​两​个​文​件​里​,即 /etc/hosts.allow/etc/hosts.deny。​而 xinetd 的​访​问​控​制​设​定​是​一​项​服​务​一​个​配​置​文​件​,这​些​文​件​位​于 /etc/xinetd.d/ 目​录​下​。​

下​面​是​一​些 xinetd 支​持​的​主​机​访​问​控​制​选​项​:

  • only_from — 只​允​许​特​别​指​定​的​主​机​使​用​这​项​服​务​。​

  • no_access — 阻​断​列​出​的​主​机​使​用​这​项​服​务​。​

  • access_times — 指​定​某​一​特​定​服​务​可​能​需​要​的​时​间​段​。​该​时​间​段​的​表​达​必​须​用 24-小​时​的​符​号​格​式​,即​:HH:MM-HH:MM。​

only_fromno_access 选​项​可​以​使​用​很​多 IP 地​址​或​主​机​名​,或​者​可​以​指​定​整​个​网​络​。​与 TCP Wrappers 类​似​, 将 xinetd 访​问​控​制​与​增​强​的​日​志​记​录​配​置​相​结​合​可​以​提​高​安​全​性​,这​样​可​以​阻​断​被​禁​止​主​机​的​请​求​同​时​又​详​细​记​录​每​一​次​的​连​接​尝​试​。​

例​如​,下​面​的 /etc/xinetd.d/telnet 文​件​可​以​用​来​阻​断​来​自​某​特​定​网​络​群​体​的 Telnet 访​问​,也​用​来​限​制​允​许​用​户​们​登​录​的​总​体​时​间​段​:

service telnet
{
         disable         = no
         flags           = REUSE
         socket_type     = stream
         wait            = no
         user            = root
         server          = /usr/kerberos/sbin/telnetd
         log_on_failure  += USERID
         no_access       = 172.16.45.0/24
         log_on_success  += PID HOST EXIT
         access_times    = 09:45-16:15
}

在​这​个​例​子​中​,当​一​个​来​自 10.0.1.0/24 网​络​的​用​户​系​统​,比​如​I 10.0.1.2,试​图​访​问 Telnet 服​务​时​,会​收​到​下​面​的​讯​息​:

连接由外连主机关闭。

另​外​,他​们​的​登​录​试​图​会​记​录​在 /var/log/messages 中​,如​下​:

Sep  7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107
Sep  7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107
Sep  7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)

当 TCP Wrappers 和 xinetd 连​用​来​进​行​访​问​控​制​时​,了​解​这​两​种​访​问​控​制​机​制​之​间​的​关​系​是​很​重​要​的​。​

当​一​个​客​户​请​求​连​接​时​, xinetd 控​制​下​的​事​件​发​生​顺​序​如​下​:

  1. xinetd 守​护​进​程​通​过​使​用 libwrap.a 库​呼​叫​来​访​问 TCP Wrappers 主​机​访​问​规​则​。​如​果​一​个​拒​绝​规​则​匹​配​这​个​客​户​,那​么​连​接​就​被​放​弃​。​如​果​一​个​允​许​规​则​匹​配​这​个​客​户​的​话​,该​连​接​就​被​传​递​给 xinetd。​

  2. xinetd 守​护​进​程​检​查​其​本​身​的​访​问​控​制​规​则​,这​种​检​查​既​为 xinetd 服​务​,也​为​被​请​求​的​服​务​。​如​果​一​个​拒​绝​规​则​匹​配​这​个​客​户​,那​么​连​接​就​被​放​弃​。​否​则​,xinetd 就​启​动​这​项​被​请​求​的​服​务​,并​让​连​接​连​到​那​项​服​务​上​。​

重​要​

当​把 TCP Wrappers 访​问​控​制​与 xinetd 访​问​控​制​一​起​用​时​一​定​要​小​心​。​配​置​不​当​可​以​引​起​不​良​后​果​。​

3.3.4.3.3. 捆​绑​和​重​定​向​选​项​

xinetd 服​务​配​置​文​件​支​持​将​这​项​服​务​捆​绑​到​一​个 IP 地​址​上​,并​且​把​那​项​服​务​的​外​来​请​求​重​定​向​到​另​外​一​个 IP 地​址​、​主​机​名​或​端​口​。​

捆​绑​服​务​用​特​定​化​服​务​配​置​文​件​中​的 bind 选​项​来​控​制​,并​把​该​服​务​链​接​到​系​统​上​的​一​个 IP 地​址​。​捆​绑​配​置​好​后​,bind 选​项​只​允​许​到​合​法 IP 地​址​的​请​求​来​访​问​该​服​务​。​你​可​以​使​用​这​种​方​法​把​不​同​服​务​根​据​要​求​捆​绑​到​不​同​的​网​络​接​口​。​

这​对​拥​有​多​重​网​络​适​配​器​或​多​个 IP 地​址​的​系​统​尤​其​有​用​。​在​这​样​的​系​统​内​,不​安​全​的​服​务​(比​如 Telnet)可​以​配​置​成​只​用​来​侦​听​连​接​到​某​专​用​网​的​接​口​而​不​侦​听​连​接​到​互​联​网​(Telnet)的​接​口​。​

redirect 选​项​接​受​后​面​带​有​端​口​号​的 IP 地​址​或​主​机​名​,并​配​置​这​项​服​务​来​把​连​接​到​这​项​服​务​的​任​何​请​求​都​重​定​向​到​指​定​的​主​机​和​端​口​号​。​重​定​向​的​这​一​特​征​可​以​用​来​把​请​求​改​向​到​同​一​个​系​统​上​的​另​一​个​端​口​,重​定​向​到​同​一​台​机​器​上​的​一​个​不​同 IP 地​址​,或​转​移​到​一​个​完​全​不​同​的​系​统​和​端​口​号​,以​及​这​些​选​项​的​任​何​结​合​。​因​此​,一​个​系​统​上​要​连​接​到​某​项​服​务​的​用​户​可​能​会​被​路​由​到​另​外​一​个​系​统​,而​无​须​中​断​目​前​的​系​统​。​

xinetd 守​护​进​程​要​完​成​这​样​的​重​定​向​需​要​不​断​复​制​这​样​一​个​过​程​:发​出​请​求​的​客​户​主​机​和​实​际​提​供​这​项​服​务​的​主​机​在​连​接​期​间​要​保​持​活​动​状​态​并​且​两​个​系​统​之​间​不​断​要​有​数​据​的​传​输​转​移​。​

bindredirect 选​项​一​起​使​用​时​,其​优​势​最​为​明​显​。​如​果​把​一​项​服​务​捆​绑​到​一​个​系​统​的​某​特​定​的 IP 地​址​,然​后​再​把​对​该​服​务​的​请​求​重​定​向​到​只​有​第​一​个​机​器​可​以​看​见​的​第​二​个​机​器​上​,那​么​可​以​使​用​内​部​系​统​来​为​一​个​完​全​不​同​的​网​络​提​供​这​些​服​务​。​还​有​其​它​用​途​, 比​如​这​些​选​项​可​以​用​来​限​制​在​一​个​多​处​为​家​的​机​器​上​某​特​定​服​务​与​一​个​已​知 IP 地​址​的​连​接​时​间​,也​可​以​用​来​把​对​那​项​服​务​的​任​何​请​求​重​定​向​到​另​外​一​台​专​门​为​那​项​服​务​配​置​的​机​器​。​

例​如​,考​虑​这​样​一​个​系​统​,一​个​为​其 Telnet 服​务​而​设​定​的​被​用​作​防​火​墙​的​系​统​:

service telnet
{
         socket_type                = stream
         wait                        = no
         server                        = /usr/kerberos/sbin/telnetd
         log_on_success                += DURATION USERID
         log_on_failure                += USERID
         bind                    = 123.123.123.123
         redirect                = 10.0.1.13 23
}

这​个​文​件​中​的 bindredirect 选​项​保​证​那​台​机​器​上​的 Telnet 服​务​被​捆​绑​到​外​部 IP 地​址​(123.123.123.123),面​向​互​联​网​的​那​个​地​址​。​另​外​,任​何​发​送​到 123.123.123.123 的 Telnet 服​务​请​求​都​会​通​过​第​二​个​网​络​适​配​器​重​定​向​到​一​个​内​部 IP 地​址​(10.0.1.13),这​个​地​址​只​有​防​火​墙​和​内​部​系​统​可​以​访​问​。 这​个​防​火​墙​就​传​输​这​两​个​系​统​之​间​的​通​讯​交​流​,可​是​该​连​接​系​统​却​认​为​连​接​的​是 123.123.123.123,而​实​际​上​连​接​的​是​一​个​不​同​的​机​器​。​

这​一​特​征​对​使​用​宽​带​连​接​又​只​有​一​个​固​定​的 IP 地​址​的​用​户​尤​其​有​用​。​使​用 Network Address Translation (NAT)(网​络​地​址​转​换​)时​,网​关​机​器​背​后​的​使​用​内​部​专​用 IP 地​址​的​各​系​统​在​该​网​关​系​统​以​外​是​不​能​被​使​用​的​。​然​而​,当​由 xinetd 控​制​的​某​些​服​务​用 bindredirect选​项​配​置​时​,该​网​关​机​器​可​以​被​用​作​外​部​系​统​和​某​特​定​被​配​置​好​来​提​供​该​服​务​的​内​部​机​器​之​间​的​服​务​代​理​。​另​外​,多​种​不​同​的 xinetd 访​问​控​制​和​日​志​选​项​也​可​以​接​受​额​外​的​保​护​。​

3.3.4.3.4. 资​源​管​理​选​项​

xinetd 守​护​进​程​可​以​增​加​一​层​基​本​的​不​受 DoS(服​务​拒​绝​)攻​击​的​保​护​。​下​面​是​一​个​可​以​帮​助​限​制​类​似​攻​击​成​效​的​命​令​列​表​:

  • per_source — 规​定​每​个​源 IP 地​址​连​接​服​务​实​例​的​最​大​数​值​。​只​接​受​整​数​作​为​参​数​,而​且​可​以​用​在 xinetd.d/ 目​录​下​的 xinetd.conf 文​件​和​特​定​化​服​务​的​各​配​置​文​件​中​。​

  • cps — 规​定​每​秒​钟​连​接​的​最​大​数​值​。​该​命​令​接​受​两​个​由​空​格​隔​开​的​整​数​参​数​。​第​一​个​参​数​是​每​秒​钟​允​许​连​接​到​该​服​务​上​的​连​接​最​大​数​值​。​第​二​个​参​数​是 xinetd 必​须​要​等​待​的​启​动​该​服​务​之​前​的​秒​钟​数​。​只​接​受​整​数​为​参​数​,而​且​可​以​用​在 xinetd.d/ 目​录​下​的 xinetd.conf 文​件​和​特​定​化​服​务​的​各​配​置​文​件​中​。​

  • max_load — 定​义 CPU 用​量​或​一​项​服​务​负​载​平​均​限​量​值​。​它​接​受​一​个​非​固​定​点​的​数​值​参​数​。​

    负​载​平​均​是​对​某​一​时​间​内​系​统​有​多​少​进​程​处​于​活​动​状​态​的​一​个​大​体​测​量​。​请​参​阅 uptime、​whoprocinfo 命​令​来​获​取​关​于​负​载​平​均​的​更​多​信​息​。​

还​有​很​多​可​以​使​用​的​资​源​管​理​选​项​可​以​用​来​管​理 xinetd。​请​参​阅 xinetd.conf man page 来​获​取​更​多​信​息​。​

3.3.5. 其​它​资​料​

关​于 TCP Wrappers 和 xinetd 的​更​多​信​息​可​以​在​系​统​文​档​和​互​联​网​上​找​到​。​

3.3.5.1. 安​装​了​的​文​档​

要​寻​找​其​它​的 TCP Wrappers、​xinetd 和​访​问​控​制​的​配​置​选​项​,从​你​系​统​上​的​文​档​开​始​找​起​是​一​个​很​好​的​注​意​。​

  • /usr/share/doc/tcp_wrappers-<version>/ — 这​个​目​录​含​有​一​个 README 文​件​,这​个​文​件​讲​述 TCP Wrappers 是​如​何​工​作​的​以​及​目​前​存​在​的​各​种​主​机​名​和​主​机​地​址​被​破​译​的​危​险​。​

  • /usr/share/doc/xinetd-<version>/ — 这​个​目​录​含​有​一​个 README 文​件​,这​个​文​件​讲​述​访​问​控​制​的​各​个​侧​面​以​及​讲​述 /etc/xinetd.d/ 目​录​下​的 sample.conf 文​件​,该​文​件​含​有​修​改​特​定​化​服​务​配​置​文​件​的​各​种​建​议​。​

  • TCP Wrappers 和 xinetd-related man pages — 用​户​手​册​上​有​多​种​不​同​的​与​TCP Wrappers 和 xinetd 相​关​的​应​用​程​序​和​配​置​文​件​。​下​面​是​一​些​比​较​重​要​的​内​容​:

    服​务​器​应​用​程​序​
    • man xinetdxinetd 的 man page。​

    各​种​配​置​文​件​
    • man 5 hosts_access — TCP Wrappers 主​机​访​问​控​制​文​件​的 man page。​

    • man hosts_options — TCP Wrappers 选​项​领​域​的 man page。​

    • man xinetd.conf — 列​出 xinetd 配​置​选​项​的 man page。​

3.3.5.2. 有​用​的​网​站​

  • http://www.xinetd.org/xinetd 的​主​页​,含​有​配​置​文​件​示​例​、​配​置​文​件​特​点​的​详​细​列​表​和​一​个​很​有​用​的 FAQ。​

  • http://www.macsecurity.org/resources/xinetd/tutorial.shtml — 一​部​详​细​的​学​习​指​南​,讨​论​多​种​不​同​方​式​来​优​化 xinetd 默​认​配​置​文​件​以​满​足​特​定​的​安​全​需​要​。​

3.3.5.3. 相​关​书​籍​

  • Hacking Linux Exposed by Brian Hatch, James Lee, and George Kurtz; Osbourne/McGraw-Hill — 一​个​出​色​的​安​全​资​源​,含​有​关 TCP Wrappers 和 xinetd 的​信​息​。​

3.4. 虚​拟​专​用​网​(VPN)

在​多​个​区​域​都​有​办​公​室​的​机​构​通​常​会​使​用​专​用​的​线​路​来​连​接​各​个​办​公​室​,这​样​可​以​更​高​效​,在​网​络​间​传​输​的​数​据​也​可​以​受​到​保​护​。​例​如​,一​些​商​业​机​构​使​用​帧​中​继​或 Asynchronous Transfer Mode (ATM) 网​络​来​连​接​各​个​办​公​室​。​这​种​机​构​可​能​会​非​常​昂​贵​,特​别​是​对​于​中​小​型​企​业​(small to medium sized businesses,SMBs)来​说​。​这​种​中​小​型​企​业​既​想​要​扩​大​规​模​又​不​想​投​入​与​企​业​规​模​相​当​的​高​成​本​,因​此​都​致​力​于​使​用​数​字​电​路​。​

为​了​满​足​这​种​需​要​,虚​拟​专​用​网​ (VPNs) 得​到​开​发​。​和​专​用​网​络​线​路​的​原​则​相​同​,VPN 允​许​在​网​络​间​进​行​安​全​的​数​字​化​传​输​并​通​过​现​存​的 Local Area Networks - 局​域​网​ (LANs)创​建​一​个 Wide Area Network - 广​域​网​ (WAN)。​它​与​帧​中​继​或 ATM 的​不​同​之​处​在​于​其​传​输​媒​介​。​VPN 使​用​数​据​报​(datagram)作​为​传​输​层​在​网​上​进​行 IP 传​输​,从​而​通​过​网​络​安​全​地​传​输​到​目​的​地​。​多​数​自​由​软​件 VPN 的​实​现​都​使​用​了​开​放​标​准​的​加​密​方​法​来​加​密​传​输​中​的​数​据​。​

一​些​机​构​使​用​硬​件 VPN 的​解​决​方​案​来​增​强​数​据​的​安​全​性​,而​其​他​用​户​选​择​使​用​软​件​或​基​于​协​议​的​解​决​方​案​。​有​多​个​厂​商​可​以​提​供​硬​件 VPN 解​决​方​案​,如 Cisco、​Nortel、​IBM 和 Checkpoint。​另​外​,Linux 有​一​个​基​于​软​件​的​免​费​的 VPN 解​决​方​案​叫​作 FreeS/Wan,它​使​用​一​个​标​准​化​的 Internet Protocol Security(因​特​网​协​议​安​全​) (IPsec) 来​实​现​。​无​论​是​硬​件​解​决​方​案​还​是​软​件​解​决​方​案​,这​些 VPN 都​会​象​一​个​特​殊​的​路​由​器​一​样​存​在​于​各​个​使​用 IP 连​接​的​办​公​室​之​间​。​

3.4.1. VPN 是​如​何​工​作​的​呢​?

当​一​个​数​据​包​从​一​个​客​户​端​传​送​时​,会​通​过​一​个 VPN 路​由​器​或​网​关​传​送​,该​路​由​器​或​网​关​会​为​数​据​包​添​加​一​个 Authentication Header (AH) 来​进​行​引​路​和​认​证​。​然​后​这​些​数​据​会​被​加​密​,最​后​被​加​上​一​个 Encapsulating Security Payload (ESP)。​后​者​包​括​用​来​进​行​解​密​和​处​理​的​一​些​指​令​。​

接​收​的 VPN 路​由​器​会​剥​去​主​题​信​息​,解​密​数​据​并​把​它​发​送​到​目​的​地​(即​一​个​工​作​站​或​网​络​上​的​另​一​个​节​点​)。​通​过​使​用​一​个​网​络​到​网​络​的​连​接​,本​地​网​络​上​的​接​收​节​点​所​收​到​的​数​据​包​已​经​被​解​密​并​且​处​于​待​处​理​状​态​。​从​网​络​到​网​络 VPN 连​接​的​加​密​/解​密​过​程​对​本​地​节​点​来​说​是​透​明​的​。​

有​了​如​此​高​水​平​的​安​全​性​,一​个​网​络​袭​击​者​如​果​要​劫​获​这​个​数​据​包​,他​同​时​还​要​能​够​对​该​数​据​包​进​行​解​密​。​而​在​服​务​器​和​客​户​之​间​使​用​中​间​人​袭​击​方​法​(man-in-the-middle attack)的​外​侵​者​至​少​必​须​需​要​一​方​的​私​用​密​钥​才​能​通​过​验​证​步​骤​。​因​为​系​统​使​用​多​层​次​的​验​证​和​加​密​,VPN 是​一​种​安​全​有​效​的​连​接​多​个​远​程​节​点​的​方​式​,运​行​起​来​像​一​个​统​一​的​内​联​网​一​样​。​

3.4.2. VPNs 和 红帽企业 Linux

就​实​施​基​于​软​件​解​决​方​案​安​全​地​连​接​到​一​个 WAN 方​面​,红帽企业 Linux 提​供​多​种​不​同​的​方​式​。 Internet Protocol Security(网​络​协​议​安​全​) (IPsec) 即​为​支​持 VPN的 红帽企业 Linux 的​实​现​方​式​,同​时​也​有​效​地​满​足​了​有​网​络​办​公​室​的​机​构​及​远​程​用​户​的​使​用​需​求​。​

3.4.3. IPsec

红帽企业 Linux 通​过​像​因​特​网​一​样​的​常​用​网​络​载​体​使​用​一​个​安​全​隧​道​支​持 IPsec 对​远​程​主​机​和​各​网​络​之​间​的​互​相​连​接​。​IPsec 可​以​通​过​应​用​主​机​到​主​机​(即​一​个​到​另​一​个​电​脑​工​作​站​)或​网​络​到​网​络​(一​个​到​另​一​个​LAN/WAN)的​配​置​来​实​现​。​

在​红帽企业 Linux中 IPsec 的​实​现​使​用 Internet Key Exchange (IKE),即​一​个​由​网​络​工​程​任​务​强​势​(Internet Engineering Task Force,IETF)而​实​现​的​协​议​,用​来​实​现​相​连​接​系​统​之​间​的​相​互​验​证​和​安​全​关​联​。​

3.4.4. 创​建​一​个 IPsec 连​接​

一​个 IPsec 连​接​分​成​两​个​逻​辑​阶​段​。 在​第​一​阶​段​,一​个 IPsec 节​点​发​起​与​远​程​节​点​或​网​络​的​连​接​。​该​远​程​节​点​或​网​络​检​查​请​求​连​接​的​节​点​的​资​格​,预​连​接​的​双​方​协​商​连​接​的​验​证​方​法​。​

在 红帽企业 Linux 系​统​上​,一​种 IPsec 连​接​使​用 pre-shared key(事​先​选​好​的​共​享​密​码​) 方​法​进​行 IPsec 节​点​验​证​。​在 pre-shared key IPsec 连​接​中​,两​个​主​机​双​方​必​须​使​用​同​一​个​密​码​才​能​过​渡​到 IPsec 连​接​的​第​二​阶​段​。​

IPsec 连​接​的​第​二​阶​段 也​就​是 Security Association (安​全​关​联​) (SA) 在 IPsec 节​点​之​间​被​建​立​的​阶​段​。​这​个​阶​段​建​立​一​个​含​有​像​加​密​方​法​、​密​钥​交​换​参​数​等​更​多​配​置​信​息​的​SA 数​据​库​。​同​时​这​个​阶​段​也​在​各​远​程​节​点​和​网​络​间​建​立​起​实​际​的 IPsec 连​接​。​

红帽企业 Linux 在​网​络​上​的​主​机​之​间​就​共​享​密​钥​而​言​使​用 IKE 来​实​现 IPsec。​设​定​密​钥​守​护​进​程 racoon 用​来​处​理 IKE 密​钥​分​配​和​交​换​。​如​需​要​该​守​护​进​程​的​更​多​信​息​,请​参​考 man page 的 racoon 部​分​。​

3.4.5.  IPsec 的​安​装​

使​用 IPsec 需​要​在​所​有 IPsec 主​机​上​(如​果​使​用​主​机​到​主​机​配​置​)或​路​由​器​上​(如​果​使​用​网​络​到​网​络​配​置​)安​装 ipsec-tools RPM 软​件​包​。​该 RPM 软​件​包​含​有​主​要​程​序​库​、​守​护​进​程​和​建​立 IPsec 连​接​的​各​种​配​置​文​件​,包​括​:

  • /sbin/setkey — 操​纵​内​核​中 IPsec 的​密​钥​管​理​和​安​全​属​性​。​这​项​可​执​行​程​序​由 racoon 密​钥​管​理​守​护​进​程​控​制​。​如​需​要​更​多​信​息​,请​参​阅 man page 的 setkey(8)部​分​。​

  • /sbin/racoon — IKE 密​钥​管​理​守​护​进​程​,用​来​管​理​和​控​制​由 IPsec 相​连​系​统​间​的​安​全​关​联​和​密​钥​共​享​。​

  • /etc/racoon/racoon.conf — 即 racoon 守​护​进​程​配​置​文​件​,用​来​配​置 IPsec 连​接​的​各​个​方​面​,包​括​连​接​时​使​用​的​验​证​方​法​和​加​密​算​法​。​如​要​了​解​现​有​命​令​的​全​部​列​表​,请​参​阅 man page 的 racoon.conf(5) 部​分​。​

要​在 红帽企业 Linux 中​配​置 IPsec,您​可​以​使​用 Network Administration Tool 或​手​工​编​辑​网​络​和 IPsec 配​置​文​件​。​

3.4.6. IPsec 主​机​到​主​机​连​接​配​置​

IPsec 通​过​配​置​可​以​使​用​主​机​到​主​机​方​式​将​一​个​台​式​机​或​工​作​站​(主​机​)连​接​到​另​一​个​。​这​种​类​型​的​连​接​利​用​连​接​至​每​一​台​主​机​的​网​络​在​主​机​之​间​建​立​一​个​安​全​隧​道​。​建​立​主​机​到​主​机​连​接​的​要​求​也​就​是​每​台​主​机​上 IPsec 的​配​置​是​极​少​的​。​主​机​双​方​只​需​要​连​接​到​一​个​可​靠​的​连​接​载​体​(比​如​因​特​网​)和 红帽企业 Linux 上​,从​而​建​立 IPsec 连​接​。​

3.4.6.1. 主​机​到​主​机​的​连​接​

主​机​到​主​机​的 IPsec 连​接​是​一​种​两​个​系​统​之​间​的​加​密​连​接​,双​方​都​运​行​带​有​同​样​验​证​密​码​的 IPsecIPsec 连​接​激​活​后​,两​个​主​机​之​间​的​任​何​网​络​业​务​都​以​加​密​形​式​进​行​。​

要​配​置​一​个​主​机​到​主​机​的 IPsec 连​接​,在​每​个​主​机​上​都​进​行​以​下​步​骤​:

备​注​

您​应​该​在​您​配​置​的​实​际​机​器​上​进​行​下​面​的​步​骤​,不​要​尝​试​通​过​远​程​方​式​配​置​和​建​立 IPsec 连​接​。​

  1. 在​命​令 shell 中​输​入 system-config-network 来​启​动 Network Administration Tool。​

  2. 在​「​IPsec」​标​签​页​中​点​击 新​建​ 来​启​动 IPsec 配​置​向​导​。​

  3. 点​击 Forward 来​启​动​配​置​主​机​到​主​机​的 IPsec 连​接​。​

  4. 为​这​一​连​接​键​入​一​个​独​一​无​二​的​名​称​,比​如​叫 ipsec0。​如​需​要​的​话​,选​择​机​器​启​动​时​便​自​动​激​活​该​连​接​的​会​话​框​。​请​点​击 Forward 继​续​。​

  5. 连​接​类​型​选​择 Host to Host encryption,然​后​点​击 Forward。​

  6. 选​择​要​使​用​的​加​密​类​型​:手​动​加​密​或​自​动​加​密​。​

    如​果​你​选​择​手​动​加​密​,这​一​进​程​的​后​期​要​提​供​一​个​密​钥​。​如​果​你​选​择​自​动​加​密​,racoon 守​护​进​程​则​会​生​成​密​钥​。​而​且​如​果​你​要​使​用​自​动​加​密​的​话​,必​须​安​装 ipsec-tools 软​件​包​。​

    点​击 Forward 继​续​。​

  7. 键​入​远​程​主​机​的 IP 地​址​。​

    要​测​定​远​程​主​机​的 IP 地​址​,请 在​远​程​主​机​上​ 使​用​下​面​的​命​令​:

    [root@myServer ~] # /sbin/ifconfig <device>
    

    其​中 <device> 是​你​用​来​进​行 VPN 连​接​的​以​太​网​设​备​。​

    如​果​你​的​系​统​中​只​有​一​个​以​太​网​设​备​,那​么​该​设​备​的​名​称​通​常​为 eth0。​下​面​的​例​子​显​示​这​个​命​令​调​出​的​相​关​信​息​(注​意​这​只​是​输​出​信​息​的​一​个​例​子​而​已​):

    eth0      Link encap:Ethernet  HWaddr 00:0C:6E:E8:98:1D
              inet addr:172.16.44.192  Bcast:172.16.45.255  Mask:255.255.254.0
    

    其 IP 地​址​为 inet addr: 标​签​后​面​的​数​字​。​

    备​注​

    对​主​机​到​主​机​的​连​接​来​说​,两​台​主​机​都​应​该​有​公​用​的​可​路​由​的​地​址​。​也​就​是​说​,两​台​主​机​只​要​在​一​个 LAN 中​,就​可​以​有​专​用​的​不​可​路​由​的​地​址​(例​如​:从 10.x.x.x 到 192.168.x.x)。​

    如​果​主​机​位​于​不​同​的 LAN,或​者​一​台​主​机​有​公​用​地​址​,而​另​一​台​有​专​用​地​址​,请​参​考 第 3.4.7 节 “IPsec Network-to-Network Configuration(IPsec 网​络​到​网​络​配​置​)”。​

    点​击 Forward 继​续​。​

  8. 如​果​在 6 步​骤​中​选​择​了​手​动​加​密​,请​指​定​要​使​用​的​密​钥​,或​点​击 Generate 生​成​一​个​密​钥​。​

    1. 指​定​验​证​密​码​,或​点​击 Generate 生​成​一​个​验​证​密​码​,可​以​是​数​字​和​字​母​的​任​意​组​合​。​

    2. 点​击 Forward 继​续​。​

  9. 验​证 IPsec — 含​总​结​信​息​的 页​面​,然​后​点​击 Apply。​

  10. 点​击 File => Save 以​保​存​配​置​。​

    要​使​作​出​的​修​改​生​效​,你​也​许​需​要​重​新​启​动​网​络​。​重​新​启​动​的​话​,使​用​下​面​的​命​令​:

    [root@myServer ~]# service network restart
    
  11. 从​列​表​中​选​择 IPsec 连​接​,然​后​点​击 Activate 按​钮​。​

  12. 另​一​方​的​主​机​也​要​重​复​整​个​过​程​,并​且​在​步​骤 8 中​一​定​要​使​用​同​样​的​密​钥​。​否​则​, IPsec 不​会​运​行​。​

配​置​好​ IPsec连​接​之​后​,就​会​在 IPsec列​表​中​显​示​出​来​,跟 图 3.4 “IPsec 连​接​” 中​显​示​的​一​样​。​

IPsec 连​接​

IPsec 连​接​

图 3.4. IPsec 连​接​

IPsec 连​接​配​置​好​后​,就​创​建​了​下​面​的​文​件​:

  • /etc/sysconfig/network-scripts/ifcfg-<nickname>

  • /etc/sysconfig/network-scripts/keys-<nickname>

  • /etc/racoon/<remote-ip>.conf

  • /etc/racoon/psk.txt

如​果​选​择​了​自​动​加​密​的​话​,/etc/racoon/racoon.conf 文​件​也​同​时​被​创​建​。​

界​面​呈​现​出​来​时​,/etc/racoon/racoon.conf 被​修​改​,增​加​了 <remote-ip>.conf。​

3.4.6.2. 手​动 IPsec 主​机​到​主​机​配​置​

建​立​连​接​的​第​一​步​是​从​各​工​作​站​收​集​系​统​和​网​络​的​信​息​。​要​建​立​主​机​到​主​机​连​接​,你​需​要​下​列​信​息​:

  • 每​个​主​机​的 IP 地​址​

  • 一​个​独​一​无​二​的​名​称​,例​如​,ipsec1。​在​进​行 IPsec 连​接​时​这​个​名​称​用​来​进​行​身​份​验​证​并​与​其​它​服​务​和​连​接​区​别​开​来​。​

  • 一​个​事​先​选​好​的​密​钥​或​由 racoon 自​动​生​成​的​密​钥​。​

  • 一​个​事​先​选​好​的​共​享​验​证​密​码​,该​密​码​在​连​接​建​立​的​最​初​阶​段​会​用​到​,用​来​进​行​密​钥​交​换​。​

例​如​,假​设​工​作​站 A 和​工​作​站 B 想​通​过 IPsec 隧​道​建​立​相​互​的​连​接​。​这​两​个​工​作​站​要​用​一​个​事​先​选​好​的​共​享​密​码​即​Key_Value01 进​行​连​接​,而​且​用​户​们​同​意​让​racoon 自​动​生​成​一​个​主​机​之​间​共​享​的​验​证​密​码​。​连​接​双​方​决​定​以 ipsec1 来​命​名​这​一​连​接​。​

备​注​

你​选​择​的 PSK 应​是​大​写​字​母​、​小​写​字​母​、​数​字​和​标​点​符​号​的​组​合​,因​为​容​易​猜​出​的 PSK 不​安​全​。​

对​每​个​主​机​来​说​选​择​相​同​的​连​接​名​称​倒​不​是​必​须​的​。​你​应​该​选​择​一​个​对​你​的​安​装​来​说​既​方​便​又​有​意​义​的​名​称​。​

下​面​是 IPsec 为​工​作​站 A 与​工​作​站 B 进​行​主​机​到​主​机​IPsec 连​接​的​配​置​文​件​。​这​个​例​子​中​识​别​该​连​接​的​独​一​无​二​的​名​称​是 ipsec1,因​此​该​连​接​合​成​的​文​件​名​是 /etc/sysconfig/network-scripts/ifcfg-ipsec1。​

DST=X.X.X.X
TYPE=IPSEC
ONBOOT=no
IKE_METHOD=PSK

对​工​作​站 A 来​说​,X.X.X.X 是​工​作​站 B 的 IP 地​址​。​对​工​作​站​B 来​说​,X.X.X.X 是​工​作​站 A 的 IP 地​址​。​这​一​连​接​的​设​定​不​是​在​启​动​(ONBOOT=no)时​就​启​动​该​连​接​,而​是​要​使​用​事​先​选​好​的​共​享​验​证​密​码​方​式​(IKE_METHOD=PSK)进​行​连​接​。​

下​面​是​关​于​事​先​选​好​的​共​享​验​证​密​码​的​文​件​内​容​(叫 /etc/sysconfig/network-scripts/keys-ipsec1),两​个​工​作​站​都​需​要​验​证​相​互​的​身​份​。​这​个​文​件​的​内​容​在​两​个​工​作​站​处​应​该​是​完​全​一​致​的​,而​且​应​该​只​有​根​用​户​才​有​读​取​和​写​入​该​文​件​的​权​限​。​

IKE_PSK=Key_Value01

很​重​要​

要​在 keys-ipsec1 文​件​创​建​后​修​改​此​文​件​以​保​证​只​有​根​用​户​能​够​读​取​和​编​辑​该​文​件​,请​使​用​下​面​的​命​令​:

[root@myServer ~] # chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

任​何​时​候​如​果​需​要​修​改​验​证​密​码​,两​个​工​作​站​都​应​通​过​编​辑 keys-ipsec1 文​件​来​实​现​。​要​使​连​接​正​常​运​行​,双​方​的​验​证​密​码​必​须​完​全​一​样​。​

接​下​来​的​例​子​显​示​连​接​到​远​程​主​机​时​第​一​阶​段​的​具​体​配​置​。​该​文​件​叫 X.X.X.X.conf,其​中​X.X.X.XIPsec 连​接​中​远​程​主​机​的​IP 地​址​。​注​意​这​个​文​件​是​在 IPsec 隧​道​被​激​活​时​自​动​生​成​的​,而​且​应​该​无​法​直​接​对​它​进​行​编​辑​。​

remote X.X.X.X
{
         exchange_mode aggressive, main;
         my_identifier address;
         proposal {
                 encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

默​认​情​况​下​,当 IPsec 连​接​启​动​时​第​一​阶​段​配​置​文​件​含​有 红帽企业 Linux 使​用​的​和​由 IPsec 实​现​的​下​列​声​明​:

remote X.X.X.X

指​定​该​配​置​文​件​随​后​的​文​件​段​只​适​用​于​由 X.X.X.X IP 地​址​识​别​的​远​程​节​点​。​

exchange_mode aggressive

在 红帽企业 Linux上 IPsec 默​认​的​配​置​是​使​用​挑​衅​性​的​验​证​方​式​(aggressive authentication mode),这​样​可​以​使​该​连​接​在​空​中​降​低​位​置​,从​而​允​许​与​多​个​主​机​进​行​多​项​连​接​的 IPsec 配​置​。​

my_identifier address

验​证​节​点​时​指​定​要​使​用​的​验​证​身​份​的​方​式​,红帽企业 Linux 使​用 IP 地​址​来​识​别​节​点​。​

encryption_algorithm 3des

指​定​验​证​身​份​时​使​用​的​密​码​暗​号​。​默​认​情​况​下​,规​定​使​用 Triple Data Encryption Standard3DES)。​

hash_algorithm sha1;

指​定​节​点​之​间​在​第​一​阶​段​的​协​商​中​所​使​用​的​散​列​算​法​。​默​认​情​况​下​,给​定​使​用 Secure Hash Algorithm version 1(安​全​散​列​算​法​第​一​版​)。​

authentication_method pre_shared_key

指​定​节​点​之​间​协​商​中​所​使​用​的​验​证​方​法​。​默​认​情​况​下​, 红帽企业 Linux 使​用​事​先​选​好​的​共​享​密​码​验​证​方​法​。​

dh_group 2

指​定 Diffie-Hellman 的​组​号​码​以​便​建​立​动​态​生​成​的​会​话​密​钥​。​其​默​认​号​码​是 modp1024 (group 2)。​

3.4.6.2.1. Racoon 配​置​文​件​

/etc/racoon/racoon.conf 文​件​在​所​有 IPsec 节​点​上​应​该​是​完​全​一​样​的​,只​有​一​个 例​外​,那​就​是 include "/etc/racoon/X.X.X.X.conf" 声​明​。​这​个​声​明​(以​及​它​相​关​的​文​件​)是​在 IPsec 隧​道​被​激​活​时​生​成​的​。 对​工​作​站 A 来​说​,include 声​明​中​的​X.X.X.X 是​工​作​站 B 的 IP 地​址​。​反​过​来​则​是​工​作​站 B 的 IP 地​址​。​下​面​显​示​的​是​当 IPsec 连​接​被​激​活​时​生​成​的 racoon.conf 的​典​型​文​件​。​

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
        pfs_group 2;
        lifetime time 1 hour ;
        encryption_algorithm 3des, blowfish 448, rijndael ;
        authentication_algorithm hmac_sha1, hmac_md5 ;
        compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf";

这​个​默​认​的 racoon.conf 文​件​包​括 IPsec 配​置​定​义​好​的​路​径​、​事​先​选​好​的​共​享​密​钥​文​件​和​证​书​。 sainfo anonymous 中​的​字​段​描​述​IPsec 节​点​之​间​的​第​二​阶​段 SA — 、​IPsec 连​接​的​性​质​(包​括​所​用​的​加​密​算​法​)和​交​换​密​钥​的​方​法​。​下​面​的​列​表​定​义​第​二​阶​段​的​各​项​字​段​:

sainfo anonymous

表​明 SA 可​以​在​匿​名​状​态​下​启​动​任​何​同​级​设​备​,只​要​其​IPsec 资​格​相​匹​配​。​

pfs_group 2

定​义 Diffie-Hellman 密​钥​交​换​协​议​,该​协​议​决​定​使​用​什​么​方​法​使 IPsec 节​点​之​间​建​立​相​互​的​临​时​会​话​密​码​,以​便​进​行 IPsec 第​二​阶​段​的​连​接​。​默​认​情​况​下​,红帽企业 Linux 实​施 IPsec 使​用 Diffie-Hellman 密​码​密​钥​交​换​组​中​的​组 2(group 2)(或 modp1024)。​组 2 使​用 1024 比​特​模​运​算​方​式​,这​种​方​式​可​以​防​止​袭​击​者​们​试​图​破​解​在​此​之​前​传​输​的 IPsec 信​息​,即​使​他​们​找​到​一​个​有​效​密​码​而​进​入​也​无​济​于​事​。​

lifetime time 1 hour

这​个​参​数​指​定​一​个​以​时​间​或​以​字​节​数​来​量​化​的 SA 寿​命​。​默​认 红帽企业 Linux时 IPsec 规​定​其​寿​命​是​一​个​小​时​。​

encryption_algorithm 3des, blowfish 448, rijndael

指​定​所​支​持​的​进​行​第​二​阶​段​的​加​密​暗​号 红帽企业 Linux 支​持 3DES,448-bit Blowfish, 和 Rijndael(在 Advanced Encryption StandardAES 中​使​用​的​密​码​)。​

authentication_algorithm hmac_sha1, hmac_md5

列​出​所​支​持​的​为​身​份​验​证​而​进​行​的​散​列​算​法​。​所​支​持​的​方​式​是 sha1 和 md5 散​列​讯​息​验​证​码​(HMAC)。​

compression_algorithm deflate

为 IP Payload Compression (IPCOMP) 支​持​设​备​定​义 Deflate 压​缩​算​法​,这​样​能​在​传​输​比​较​慢​的​连​接​上​潜​在​地​加​速 IP 数​据​报​的​传​输​。​

要​开​始​连​接​,在​各​个​主​机​上​运​行​下​面​的​命​令​:

[root@myServer ~]# /sbin/ifup <nickname>

其​中 <nickname> 即​是​你​为​这​个​IPsec 连​接​指​定​的​名​称​。​

要​测​试 IPsec 连​接​,执​行 tcpdump 命​令​来​查​看​传​输​在​主​机​之​间​的​网​络​数​据​包​,并​验​证​该​连​接​是​通​过 IPsec 进​行​加​密​的​。​这​个​数​据​包​应​该​包​括​一​个 AH 标​题​,并​且​显​示​是 ESP 数​据​包​,ESP 意​味​着​是​加​密​的​。​例​如​:

[root@myServer ~]# tcpdump -n -i eth0 host <targetSystem>

IP 172.16.45.107 
> 172.16.44.192: AH(spi=0x0954ccb6,seq=0xbb): ESP(spi=0x0c9f2164,seq=0xbb)

3.4.7. IPsec Network-to-Network Configuration(IPsec 网​络​到​网​络​配​置​)

IPsec 也​可​以​用​来​配​置​整​个​一​个​网​络​(像 LANWAN)通​过​网​络​到​网​络​连​接​方​式​连​接​到​另​一​个​远​程​网​络​上​。​网​络​到​网​络​连​接​要​求​在​连​接​的​两​端​设​定 IPsec 路​由​器​来​用​透​明​的​方​式​处​理​路​径​信​息​,其​路​径​从​LAN 上​的​一​个​节​点​到​远​程 LAN 上​的​另​一​个​节​点​。 图 3.5 “A network-to-network IPsec tunneled connection” 显​示​一​个​网​络​到​网​络​的 IPsec 隧​道​连​接​。​

A network-to-network IPsec tunneled connection

A network-to-network IPsec tunneled connection

图 3.5. A network-to-network IPsec tunneled connection

这​个​图​示​显​示​两​个​由 Internet(因​特​网​)隔​开​的 LAN。​这​两​个 LAN 用​IPsec 路​由​器​来​验​证​和​启​动​一​个​通​过​因​特​网​的​安​全​隧​道​连​接​起​来​的​连​接​。​在​传​输​中​截​获​数​据​包​会​需​要​强​力​破​解​密​码​才​能​获​得​,这​样​就​保​护​了​数​据​包​在​两​个 LAN 之​间​的​传​输​。​从 192.168.1.0/24 IP 区​间​的​一​个​节​点​到 192.168.2.0/24 IP 区​间​的​另​一​个​节​点​的​信​息​交​流​对​这​两​个​节​点​来​说​是​完​全​透​明​的​,因​为​信​息​的​处​理​、​加​密​/解​密​以​及​传​输 IPsec 数​据​包​完​全​都​是​由 IPsec 路​由​器​进​行​的​。​

建​立​网​络​到​网​络​连​接​所​需​信​息​包​括​:

  • 专​用 IPsec 路​由​器​上​可​以​公​开​访​问​的 IP 地​址​

  • IPsec 路​由​器​服​务​的 LAN/WAN的​网​络​地​址​区​间​(比​如 192.168.1.0/24 或 10.0.1.0/24)。​

  • 将​数​据​由​网​络​传​输​到​因​特​网​的​网​关​设​备 IP 地​址​

  • 一​个​独​一​无​二​的​名​称​,例​如​,ipsec1。​在​进​行 IPsec 连​接​时​这​个​名​称​用​来​进​行​身​份​验​证​并​与​其​它​服​务​和​连​接​区​别​开​来​。​

  • 一​个​选​定​的​密​钥​或​由 racoon 自​动​生​成​的​密​钥​

  • 一​个​事​先​选​好​的​共​享​验​证​密​码​,该​密​码​在​连​接​建​立​的​最​初​阶​段​会​用​到​,用​来​进​行​密​钥​交​换​。​

3.4.7.1. Network-to-Network (VPN) Connection(网​络​到​网​络​连​接​)

一​个​网​络​到​网​络 IPsec 连​接​要​用​两​个 IPsec 路​由​器​,一​个​网​络​一​个​,专​用​分​支​网​络​之​间​的​传​输​就​通​过​这​两​个​路​由​器​建​立​。​

例​如​,正​像 图 3.6 “网​络​到​网​络 IPsec” 显​示​的​一​样​,如​果​192.168.1.0/24 专​用​网​向 192.168.2.0/24 专​用​网​传​输​网​络​业​务​,数​据​包​会​经​网​关 0 (gateway0)到 ipsec0,再​经​因​特​网​到 ipsec1,然​后​到​网​关 1(gateway1),最​后​到​达 192.168.2.0/24 分​支​网​络​。​

IPsec 路​由​器​要​求​有​可​以​公​开​访​问​的 IP 地​址​和​第​二​个​以​太​网​(Ethernet)设​备​连​接​到​相​应​的​专​用​网​上​。​网​络​业​务​只​能​通​过​一​个 IPsec 路​由​器​到​另​一​个 IPsec 路​由​器​,而​且​两​个​路​由​器​之​间​的​传​输​连​接​是​加​密​的​。​

网​络​到​网​络 IPsec

网​络​到​网​络 IPsec

图 3.6. 网​络​到​网​络 IPsec

其​它​网​络​配​置​选​项​包​括​在​各​个 IP 路​由​器​和​因​特​网​之​间​设​立​防​火​墙​,也​在​每​个 IPsec 路​由​器​和​分​支​网​络​网​关​之​间​设​立​内​联​网​防​火​墙​。​IPsec 路​由​器​和​分​支​网​络​网​关​可​以​是​同​一​个​系​统​下​的​两​个​以​太​网​(Ethernet)设​备​:一​个​有​可​以​公​开​访​问​的 IP 地​址​,用​作 IPsec 路​由​器​;而​另​一​个​有​专​用 IP 地​址​,用​作​专​用​分​支​网​络​的​网​关​。​每​个 IPsec 路​由​器​可​以​在​其​专​用​分​支​网​内​使​用​网​关​,也​可​以​通​过​公​用​网​关​将​数​据​包​传​送​到​另​一​个 IPsec 路​由​器​。​

用​下​列​步​骤​来​配​置​网​络​到​网​络 IPsec 连​接​:

  1. 在​命​令 shell 中​输​入 system-config-network 来​启​动 Network Administration Tool。​

  2. 在​「​IPsec」​标​签​页​中​点​击 新​建​ 来​启​动 IPsec 配​置​向​导​。​

  3. 点​击 Forward 启​动​网​络​到​网​络 IPsec 连​接​的​配​置​。​

  4. 为​这​个​连​接​键​入​一​个​独​特​的​名​称​,比​如​叫 ipsec0。​如​需​要​的​话​,选​择​电​脑​启​动​时​就​激​活​该​连​接​。​点​击 Forward 继​续​。​

  5. 连​接​类​型​选​择 Network to Network encryption (VPN),然​后​点​击 Forward 继​续​。​

  6. 选​择​要​使​用​的​加​密​类​型​:手​动​加​密​或​自​动​加​密​。​

    如​果​你​选​择​手​动​加​密​,这​一​进​程​的​后​期​要​提​供​一​个​密​钥​。​如​果​你​选​择​自​动​加​密​,racoon 守​护​进​程​则​会​生​成​密​钥​。​而​且​如​果​你​要​使​用​自​动​加​密​的​话​,必​须​安​装 ipsec-tools 软​件​包​。​

    点​击 Forward 继​续​。​

  7. Local Network 页​面​上​键​入​下​面​的​信​息​:

    • Local Network Address — 由 IPsec 路​由​器​连​接​到​该​专​用​网​上​设​备​的 IP 地​址​。​

    • Local Subnet Mask — 本​地​网​络 IP 地​址​的​分​支​网​络​掩​码​。​

    • Local Network Gateway — 专​用​分​支​网​络​的​网​关​。​

    点​击 Forward 继​续​。​

    本​地​网​络​信​息​

    本​地​网​络​信​息​

    图 3.7. 本​地​网​络​信​息​

  8. Remote Network 页​面​上​键​入​下​面​的​信​息​:

    • Remote IP Address — 连​接​到 其​它​ 专​用​网​的 IPsec 路​由​器​的​可​以​公​开​访​问​的 IP 地​址​。​我​们​的​例​子​中​要​为 ipsec0 键​入​可​以​公​开​访​问​的 IP 地​址 ipsec1,反​之​亦​然​。​

    • Remote Network Address其​它​IPsec 路​由​器​背​后​的​专​用​分​支​网​的​网​络​地​址​。​我​们​的​例​子​中​,配​置 ipsec1 时​要​键​入​192.168.1.0,配​置 ipsec0 时​要​键​入 192.168.2.0。​

    • Remote Subnet Mask — 远​程 IP 地​址​的​子​网​掩​码​。​

    • Remote Network Gateway — 该​远​程​网​络​地​址​的​网​关 IP 地​址​。​

    • 如​果​在 6 步​骤​中​选​择​手​动​加​密​,要​指​定​所​使​用​的​密​钥​,或​者​点​击 Generate 生​成​一​个​密​钥​。​

      指​定​一​个​验​证​密​码​或​点​击 Generate 生​成​一​个​验​证​密​码​。​该​密​码​可​以​是​数​字​和​字​母​的​任​意​组​合​。​

    点​击 Forward 继​续​。​

    远​程​网​络​信​息​

    远​程​网​络​信​息​

    图 3.8. 远​程​网​络​信​息​

  9. 验​证 IPsec — 含​总​结​信​息​的 页​面​,然​后​点​击 Apply。​

  10. 选​择 File => Save 保​存​配​置​。​

  11. 从​列​表​中​选​择 IPsec 连​接​,然​后​点​击 Activate 来​激​活​该​连​接​。​

  12. 启​动 IP 转​发​:

    1. 编​辑 /etc/sysctl.conf 并​设​定 net.ipv4.ip_forward1。​

    2. 用​下​面​的​命​令​使​这​一​改​变​生​效​:

      [root@myServer ~]# /sbin/sysctl -p /etc/sysctl.conf
      

如​果​必​要​的​话​,激​活 IPsec 连​接​的​网​络​脚​本​会​自​动​生​成​通​过 IPsec 路​由​器​传​输​数​据​包​的​网​络​路​径​。​

3.4.7.2. 手​动 IPsec 网​络​到​网​络​配​置​

假​设 LAN A (lana.example.com) 和 LAN B (lanb.example.com) 要​通​过 IPsec 隧​道​进​行​相​互​的​连​接​。​LAN A 的​网​络​地​址​是 192.168.1.0/24 区​间​,而 LAN B 使​用 192.168.2.0/24 区​间​。​LAN A 的​网​关 IP 地​址​为 192.168.1.254,LAN B 的​网​关 IP 地​址​为​192.168.2.254。​IPsec 各​个​路​由​器​由 LAN 网​关​使​用​两​个​网​络​设​备​(eth0 和 eth1)隔​开​:eth0 被​指​派​给​一​个​可​以​公​开​访​问​的​静​态 IP 地​址​,可​以​连​接​因​特​网​;而 eth1 则​被​用​作​一​个​选​路​点​(routing point)来​处​理​和​传​输​从​一​个​网​络​节​点​到​各​远​程​网​络​节​点​的 LAN 数​据​包​。​

各​网​络​之​间​的 IPsec 连​接​使​用​事​先​选​好​的​共​享​密​钥 r3dh4tl1nux,而​且​系​统​管​理​员 A 和 B 同​意​让 racoon 自​动​生​成​并​共​享​每​个 IPsec 路​由​器​之​间​的​验​证​密​码​。 LAN A 管​理​员​决​定​命​名​该 IPsec 连​接​为 ipsec0,而 LAN B 管​理​员​命​名​该 IPsec 连​接​为 ipsec1。​

下​面​的​例​子​显​示 LAN A 的​网​络​到​网​络 IPsec 连​接​的 ifcfg 文​件​的​内​容​。​本​例​中​识​别​该​连​接​的​独​特​名​称​为​ipsec0,所​以​合​成​的​文​件​叫​作 /etc/sysconfig/network-scripts/ifcfg-ipsec0。​

TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X

下​面​的​列​表​描​述​该​文​件​的​内​容​:

TYPE=IPSEC

指​定​连​接​类​型​。​

ONBOOT=yes

指​定​电​脑​启​动​时​便​激​活​这​个​连​接​。​

IKE_METHOD=PSK

指​定​该​连​接​使​用​事​先​选​好​的​共​享​密​钥​来​进​行​身​份​验​证​。​

SRCGW=192.168.1.254

源​网​关​的 IP 地​址​。​对 LAN A 来​说​是 LAN A 网​关​,对 LAN B 来​说​是 LAN B 网​关​。​

DSTGW=192.168.2.254

目​的​地​网​关​的 IP 地​址​。​对 LAN A 来​说​是 LAN B 网​关​,对 LAN B 来​说​是 LAN A 网​关​。​

SRCNET=192.168.1.0/24

IPsec 连​接​指​定​源​网​络​,在​这​个​例​子​中​则​是 LAN A 的​网​络​区​间​。​

DSTNET=192.168.2.0/24

IPsec 连​接​指​定​目​的​地​网​络​,在​这​个​例​子​中​则​是 LAN B 的​网​络​区​间​。​

DST=X.X.X.X

LAN B 的​可​以​公​开​访​问​的 IP 地​址​。​

下​面​的​例​子​是​事​先​选​好​的​共​享​密​钥​文​件​的​内​容​,该​文​件​叫 /etc/sysconfig/network-scripts/keys-ipsecX (其​中 XLAN A 来​说​是 0, 对 LAN B 来​说​是 1)。​A 和 B 两​个​网​络​都​用​这​个​密​钥​来​相​互​验​证​,而​且​这​个​文​件​的​内​容​在 A 和 B 处​应​该​完​全​一​致​,只​有​根​用​户​才​有​读​取​和​写​入​的​权​限​。​

IKE_PSK=r3dh4tl1nux

很​重​要​

文​件 keys-ipsecX 创​建​之​后​,要​修​改​该​文​件​以​保​证​只​有​根​用​户​才​能​读​取​或​编​辑​这​个​文​件​,那​么​请​运​行​下​面​的​命​令​:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

任​何​时​候​需​要​修​改​验​证​密​码​,请​在 IPsec 的​两​个​路​由​器​上​编​辑 keys-ipsecX 文​件​,要​使​连​接​正​常​运​转​,两​个​密​钥​必​须​完​全​一​致​。​

下​面​的​例​子​显​示 IPsec 连​接​的 /etc/racoon/racoon.conf 配​置​文​件​内​容​。​注​意​该​文​件​的​最​下​面​一​行​即 include 是​自​动​生​成​的​,而​且​只​有​在 IPsec 隧​道​运​行​时​才​显​示​。​

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
  
sainfo anonymous
{
        pfs_group 2;
        lifetime time 1 hour ;
        encryption_algorithm 3des, blowfish 448, rijndael ;
        authentication_algorithm hmac_sha1, hmac_md5 ;
        compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

下​面​是​连​接​到​远​程​网​络​的​具​体​配​置​,该​文​件​叫​作 X.X.X.X.conf (其​中 X.X.X.X 是​远​程 IPsec 路​由​器​的 IP 地​址​)。​注​意​该​文​件​是 IPsec 隧​道​被​激​活​时​自​动​生​成​的​,而​且​无​法​直​接​对​其​进​行​编​辑​。​

remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

在​启​动 IPsec 连​接​之​前​,内​核​中 IP 转​发​功​能​应​该​被​启​动​。​要​启​动 IP 转​发​功​能​,请​:

  1. 编​辑 /etc/sysctl.conf 并​设​定 net.ipv4.ip_forward1。​

  2. 用​下​面​的​命​令​使​这​一​改​变​生​效​:

    [root@myServer ~] # sysctl -p /etc/sysctl.conf
    

要​启​动 IPsec 连​接​,请​在​各​个​路​由​器​上​使​用​下​面​的​命​令​:

[root@myServer ~] # /sbin/ifup ipsec0

连​接​被​激​活​,LAN A 和 LAN B 便​可​以​相​互​交​流​了​,因​为​在 IPsec 连​接​上​运​行 ifup 时​路​径​就​通​过​初​始​化​脚​本​被​自​动​生​成​。​要​想​显​示​该​网​络​的​路​径​列​表​,请​用​下​面​的​命​令​:

[root@myServer ~] # /sbin/ip route list

要​测​试 IPsec 连​接​,在​外​选​路​(externally-routable )设​备​(这​个​例​子​里​即 eth0)上​运​行 tcpdump 程​序​来​查​看​网​络​数​据​包​在​主​机​(网​络​)之​间​的​传​输​,以​及​验​证​其​传​输​是​通​过 IPsec 加​密​的​。​例​如​,要​检​查 LAN A 的 IPsec 连​通​性​,使​用​下​面​的​命​令​:

[root@myServer ~] # tcpdump -n -i eth0 host lana.example.com

这​个​数​据​包​应​该​包​括​一​个 AH 主​题​,并​显​示​为 ESP 数​据​包​,其​中​,ESP 意​味​着​是​加​密​的​。​例​如​,(/表​示​一​行​的​继​续​):

12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
        lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
        (ipip-proto-4)

3.4.8. 启​动​和​中​止 IPsec 连​接​

如​果 IPsec 连​接​的​配​置​不​是​在​电​脑​启​动​就​激​活​,你​可​以​从​命​令​行​中​启​动​。​

要​启​动​连​接​,如​果​是​主​机​到​主​机 IPsec 连​接​就​在​各​个​主​机​上​运​行​下​面​的​命​令​,如​果​是​网​络​到​网​络 IPsec 连​接​,就​在​各​个 IPsec 路​由​器​上​运​行​下​面​的​命​令​:

[root@myServer ~] # /sbin/ifup <nickname>

其​中​,<nickname> 是​先​前​配​置​的​名​称​,比​如​像 ipsec0。​

要​中​止​连​接​,运​行​下​面​的​命​令​:

[root@myServer ~] # /sbin/ifdown <nickname>

3.5. IPTables

红帽企业 Linux 在​内​核​中​包​括​了​高​级​的​网​络​数​据​包​过​滤​功​能 — 控​制​进​入​和​离​开​网​络​的​数​据​包​以​及​在​网​络​中​传​输​的​数​据​包​。​在​内​核​版​本 2.4 前​,数​据​包​过​滤​的​功​能​是​通​过 ipchains 实​现​的​,它​使​用​一​组​规​则​来​控​制​数​据​包​过​滤​的​每​一​个​步​骤​。​2.4 内​核​使​用 iptables(也​被​称​为 netfilter),它​与 ipchains 相​似​,但​扩​展​了​网​络​数​据​包​过​滤​的​范​围​。​

本​章​介​绍​了​数​据​包​过​滤​的​基​础​信​息​,并​列​出​了 ipchainsiptables 的​不​同​之​处​。​另​外​,它​还​介​绍​了 iptables 可​用​的​选​项​,以​及​如​何​在​重​新​启​动​时​保​留​所​设​置​的​数​据​包​过​滤​规​则​。​

请​参​阅 第 3.5.7 节 “其​它​资​料​” 来​获​得​如​何​设​计 iptables 规​则​,以​及​如​何​根​据​这​些​规​则​设​置​防​火​墙​的​信​息​。​

警​告​

在 2.4 和​它​以​后​的​内​核​中​,默​认​的​防​火​墙​是 iptables,但​如​果 ipchains 已​经​在​运​行​,iptables 则​无​法​被​使​用​。​如​果 ipchains 在​系​统​启​动​的​时​候​被​运​行​,内​核​将​会​发​出​一​个 iptables 运​行​失​败​的​错​误​信​息​。​

ipchains 的​功​能​不​会​受​到​这​个​错​误​信​息​的​影​响​。​

3.5.1. 数​据​包​过​滤​

Linux 内​核​使​用 Netfilter 来​过​滤​数​据​包​,它​允​许​一​些​数​据​包​被​系​统​接​收​或​处​理​,而​拒​绝​其​它​一​些​数​据​包​。​这​个​功​能​被​内​建​在 Linux 内​核​中​,它​有​以​下​三​个​内​建​的 规​则​表​(tables)规​则​列​表​(rules lists)

  • filter — 处​理​网​络​数​据​包​的​默​认​规​则​表​。​

  • nat — 修​改​数​据​包​来​创​建​新​的​连​接​;处​理​网​络​地​址​转​换​(Network Address Translation) (NAT)。​

  • mangle — 被​用​来​处​理​特​定​的​数​据​包​。​

每​个​规​则​表​都​包​括​一​组​内​建​的 chain,它​们​与 netfilter 对​数​据​包​所​执​行​的​行​动​相​对​应​。​

filter 规​则​表​内​建​的 chain 包​括​:

  • INPUT — 应​用​于​目​标​地​址​是​这​个​主​机​的​网​络​数​据​包​。​

  • OUTPUT — 应​用​于​本​地​产​生​的​网​络​数​据​包​。​

  • FORWARD — 应​用​于​通​过​这​个​主​机​路​由​的​数​据​包​。​

nat 规​则​表​的​内​建 chain 包​括​:

  • PREROUTING — 当​到​达​时​修​改​网​络​数​据​包​。​

  • OUTPUT — 在​把​本​地​产​生​的​网​络​数​据​包​发​出​前​进​行​修​改​。​

  • POSTROUTING — 在​把​网​络​数​据​包​发​出​前​进​行​修​改​。​

mangle 规​则​表​的​内​建 chain 包​括​:

  • INPUT — 修​改​目​标​地​址​为​这​个​主​机​的​网​络​数​据​包​。​

  • OUTPUT — 在​把​本​地​产​生​的​网​络​数​据​包​发​出​前​进​行​修​改​。​

  • FORWARD — 修​改​经​过​这​个​主​机​路​由​的​网​络​数​据​包​。​

  • PREROUTING — 在​路​由​进​入​这​个​系​统​的​网​络​数​据​包​前​修​改​它​们​。​

  • POSTROUTING — 在​把​网​络​数​据​包​发​出​前​进​行​修​改​。​

每​个​被 Linux 系​统​发​送​或​接​收​的​网​络​数​据​包​最​少​都​应​该​通​过​一​个​规​则​表​的​检​查​。​但​是​,一​个​数​据​包​可​能​会​在​到​达 chain 的​最​后​前​被​规​则​表​中​的​多​个​规​则​所​应​用​。​各​个​规​则​的​结​构​会​不​相​同​,但​它​们​通​常​会​涉​及​到​:使​用​一​个​特​定​的​网​络​协​议​或​网​络​服​务​;到​一​个​或​一​组​特​定 IP 地​址​的​数​据​包​;或​从​一​个​或​一​组​特​定 IP 地​址​发​送​的​数​据​包​。​

备​注​

在​默​认​情​况​下​,防​火​墙​规​则​存​储​在 /etc/sysconfig/iptables/etc/sysconfig/ip6tables 文​件​中​。​

当 Linux 系​统​启​动​时​,iptables 服​务​会​在​所​有 DNS 相​关​的​服​务​启​动​前​被​启​动​。​这​意​味​着​防​火​墙​规​则​只​使​用​数​字​化​的 IP 地​址​(如 192.168.0.1)。​在​规​则​中​使​用​域​名​(如 host.example.com) 将​会​产​生​错​误​。​

无​论​它​们​的​目​的​地​址​是​什​么​,当​数​据​包​与​一​个​规​则​表​中​的​某​个​规​则​匹​配​时​,一​个 target 或​行​动​将​会​被​应​用​。​如​果​在​一​个​规​则​中​指​定​了​一​个 ACCEPT target,和​这​条​规​则​匹​配​的​数​据​包​将​跳​过​剩​下​的​所​有​规​则​,并​被​发​送​到​它​的​目​标​地​址​中​的​下​一​个​目​的​地​。​如​果​一​条​规​则​指​定​了 DROP target,和​这​条​规​则​匹​配​的​数​据​包​将​被​这​个​系​统​拒​绝​,而​发​送​这​个​数​据​包​的​主​机​也​不​会​收​到​任​何​反​馈​信​息​。​如​果​规​则​指​定​了 QUEUE target,匹​配​的​数​据​包​会​被​发​送​到​用​户​空​间​。​如​果​一​个​规​则​指​定​了 REJECT target,这​个​数​据​包​将​会​被​丢​掉​,而​这​个​数​据​包​的​原​始​发​送​者​则​会​接​收​到​一​个​错​误​信​息​。​

每​个 chain 都​会​有​一​个​默​认​的​政​策​:ACCEPT、​DROP、​REJECTQUEUE 。​如​果 chain 中​的​规​则​都​不​适​用​于​某​个​数​据​包​,这​个​数​据​包​将​会​根​据​默​认​政​策​被​处​理​。​

iptables 命​令​被​用​来​配​置​这​些​规​则​表​,并​可​以​在​需​要​时​设​置​新​的​规​则​表​。​

3.5.2. IPTables 和 IPChains 的​不​同​之​处​

ipchainsiptables 都​使​用​在 Liunx 内​核​中​运​行​的​规​则 chain,并​根​据​指​定​的​规​则​或​规​则​集​合​来​进​行​数​据​包​过​滤​。​但​是​,iptables 提​供​了​更​大​范​围​的​数​据​包​过​滤​功​能​,系​统​管​理​员​可​以​对​数​据​包​过​滤​有​更​大​的​控​制​权​。​

您​应​该​注​意​以​下​所​列​出​的 ipchainsiptables 间​的​显​著​不​同​:

在​使​用 iptables 时​,每​个​被​过​滤​的​数​据​包​只​使​用​一​个 chain 中​的​规​则​,而​不​是​使​用​多​个 chain 中​的​规​则​。​

例​如​,到​一​个​使​用 ipchains 系​统​的 FORWARD 数​据​包​要​通​过 INPUT、​FORWARD 和 OUTPUT chain 后​才​可​以​继​续​被​发​送​,而​当​使​用 iptables 时​,如​果​数​据​包​的​目​标​地​址​是​本​地​系​统​时​,它​只​被​发​送​到 INPUT chain;如​果​数​据​包​是​本​地​产​生​的​,它​只​被​发​送​到 OUTPUT chain。​因​此​,您​需​要​把​规​则​放​置​在​实​际​处​理​这​个​数​据​包​的 chain 中​。​

DENY target 已​经​被​改​为 DROP。​

ipchains 中​,与​一​个 chain 中​的​一​条​规​则​匹​配​的​数​据​包​可​以​被​发​送​到 DENY target。​在 iptables 中​,这​个 target 被​改​为 DROP。​

在 iptables 中​,规​则​选​项​的​顺​序​是​非​常​重​要​的​。​

ipchains 中​,规​则​选​项​的​顺​序​是​不​相​关​的​。​

iptables 命​令​对​语​法​有​更​严​格​的​限​制​。​iptables 命​令​需​要​在​源​或​目​的​端​口​前​指​定​使​用​的​协​议​(ICMP、​TCP 或 UDP)。​

网​络​接​口​必​须​与​防​火​墙​规​则​中​的​正​确​的 chain 相​关​联​。​

例​如​,输​入​接​口​(-i 选​项​)只​能​在 INPUT 或 FORWARD chain 中​使​用​。​同​样​的​,输​出​端​口​(-o 选​项​)只​能​在 FORWARD 或 OUTPUT chain 中​使​用​。​

换​句​话​说​,INPUT chain 和​输​入​的​网​络​接​口​一​起​工​作​,而 OUTPUT chain 和​输​出​的​网​络​接​口​一​起​工​作​。​FORWARD chain 则​可​以​和​输​入​和​输​出​的​网​络​接​口​一​起​工​作​。​

OUTPUT chain 不​再​被​输​入​网​络​接​口​使​用​,INPUT chain 也​不​再​处​理​通​过​网​络​接​口​输​出​的​数​据​包​。​

以​上​所​列​出​的​不​同​点​并​不​完​全​,要​获​得​更​详​细​的​信​息​,请​参​阅 第 3.5.7 节 “其​它​资​料​”。​

3.5.3. IPTables 的​命​令​选​项​

数​据​包​过​滤​的​规​则​是​由 iptables 命​令​所​创​建​的​。​数​据​包​的​以​下​属​性​通​常​被​用​来​组​成​判​断​的​标​准​:

  • 数​据​包​类​型​ — 过​滤​的​数​据​包​的​类​型​。​

  • 数​据​包​源​地​址​/目​标​地​址​ — 根​据​源​地​址​或​目​标​地​址​来​决​定​所​过​滤​的​数​据​包​。​

  • Target — 指​定​对​符​合​以​上​条​件​的​数​据​包​所​要​进​行​的​行​动​。​

请​参​阅 第 3.5.3.4 节 “IPTables 匹​配​选​项​”第 3.5.3.5 节 “Target 选​项​” 来​获​得​更​详​细​的​信​息​。​

特​定 iptables 规​则​所​使​用​的​选​项​必​须​根​据​规​则​的​目​的​和​整​体​条​件​来​有​逻​辑​地​进​行​分​组​。​以​下​的​内​容​介​绍​了 iptables 命​令​常​用​的​选​项​。​

3.5.3.1. IPTables 命​令​选​项​的​结​构​

多​数 iptables 命​令​都​具​有​以​下​结​构​:

 iptables [-t <table-name>] <command><chain-name> \ <parameter-1><option-1> \ <parameter-n><option-n>

<table-name> — 指​定​这​个​规​则​所​应​用​的​规​则​表​。​如​果​没​有​使​用​这​个​选​项​,filter 规​则​表​则​被​使​用​。​

<command> — 指​定​要​执​行​的​行​动​,如​添​加​或​删​除​一​条​规​则​。​

<chain-name> — 指​定​编​辑​、​创​建​或​删​除​的 chain。​

<parameter>-<option> — 指​定​如​何​处​理​符​合​这​个​规​则​的​数​据​包​的​参​数​和​相​关​的​选​项​。​

根​据​目​的​的​不​同​,一​个 iptables 命​令​的​长​度​和​复​杂​程​度​会​有​很​大​不​同​。​

例​如​,从​一​个 chain 中​删​除​一​条​规​则​的​命​令​可​能​会​很​短​:

iptables -D <chain-name> <line-number>

相​反​的​,添​加​一​条​特​定​情​况​的​数​据​包​规​则​的​命​令​可​能​会​很​长​。​当​编​写 iptables 命​令​时​,一​些​参​数​和​选​项​可​能​还​会​需​要​其​它​的​参​数​和​选​项​。​

输​入 iptables -h 可​以​查​看 iptables 命​令​结​构​的​完​整​列​表​。​

3.5.3.2. 命​令​选​项​

命​令​选​项​告​诉 iptables 来​执​行​一​个​特​定​的​行​动​。​每​个 iptables 命​令​只​允​许​使​用​一​个​命​令​选​项​。​除​了​帮​助​命​令​,其​它​所​有​命​令​都​使​用​大​写​字​符​。​

iptables 命​令​包​括​:

  • -A — 在​指​定 chain 的​最​后​添​加​规​则​。​与​下​面​介​绍​的 -I 选​项​不​同​,它​不​接​受​整​数​参​数​。​它​总​在​指​定 chain 的​最​后​添​加​规​则​。​

  • -C — 在​把​一​个​特​定​的​规​则​添​加​到​用​户​定​义​的 chain 前​检​查​它​。​这​个​命​令​可​以​通​过​要​求​您​输​入​额​外​的​参​数​和​选​项​来​创​建​复​杂​的 iptables 规​则​。​

  • -D <integer> | <rule> — 根​据​所​提​供​的​号​码​(如 5 代​表​一​个 chain 中​的​第​5个​规​则​)或​规​则​的​内​容​来​删​除​一​个​特​定 chain 中​的​一​条​规​则​。​规​则​的​内​容​必​须​与​一​条​存​在​的​规​则​完​全​匹​配​。​

  • -E — 重​新​命​名​一​个​用​户​定​义​的 chain。​用​户​定​义​的 chain 是​指​除​默​认​的​和​预​存​在​的 chain 以​外​的 chain。​(请​参​阅​下​面​介​绍​的 -N 选​项​来​获​得​如​何​创​建​用​户​定​义​的 chain 的​信​息​。​)这​只​是​形​式​上​的​变​化​,它​并​不​影​响​规​则​表​的​结​构​。​

    备​注​

    如​果​您​试​图​重​新​命​名​默​认​的 chain,系​统​将​产​生 Match not found 错​误​。​您​无​法​重​新​命​名​默​认​的 chain。​

  • -F — 删​除​指​定 chain 中​的​所​有​规​则​。​如​果​没​有​指​定 chain,它​会​删​除​所​有 chain 中​的​规​则​。​

  • -h — 提​供​命​令​结​构​的​一​个​列​表​,以​及​命​令​参​数​和​选​项​的​一​个​简​单​介​绍​。​

  • -I [<integer>] — 根​据​用​户​指​定​的​一​个​整​数​参​数​来​在​一​个​特​定​的 chain 中​的​指​定​位​置​插​入​规​则​。​如​果​没​有​指​定​参​数​,规​则​会​被​插​入​到 chain 的​最​前​面​。​

    小​心​

    我​们​在​前​面​已​经​提​到​,一​个 chain 中​的​规​则​的​顺​序​决​定​了​数​据​包​将​使​用​哪​条​规​则​。​因​此​,您​需​要​根​据​不​同​的​情​况​选​择​使​用 -A-I 选​项​。​

    这​一​点​在​使​用 -I 和​一​个​整​数​参​数​添​加​规​则​时​尤​其​重​要​。​如​果​您​在​向​一​个 chain 添​加​一​条​规​则​时​指​定​了​一​个​存​在​的​数​值​,iptables 将​把​新​的​规​则​添​加​到​存​在​的​规​则 之​前​(上​面​)。​

  • -L — 列​出​在​命​令​后​面​指​定​的 chain 的​所​有​规​则​。​要​列​出​默​认​的 filter 规​则​表​中​的​所​有 chain 中​的​所​有​规​则​,请​不​要​指​定​任​何 chain 或​规​则​表​。​否​则​的​话​,使​用​以​下​的​语​法​来​列​出​特​定​规​则​表​中​的​特​定 chain 中​的​规​则​:

     iptables -L <chain-name> -t <table-name>
    

    -L 命​令​的​其​它​选​项​(它​们​可​以​提​供​规​则​号​以​及​更​详​细​的​规​则​描​述​)在 第 3.5.3.6 节 “列​出​选​项​” 中​被​介​绍​。​

  • -N — 使​用​一​个​用​户​定​义​的​名​称​来​创​建​一​个​新​的 chain。​这​个​新 chain 的​名​称​必​须​是​唯​一​的​,否​则​将​会​出​现​一​个​错​误​信​息​。​

  • -P — 为​特​定​的 chain 设​置​默​认​的​政​策​,当​整​个 chain 中​都​没​有​匹​配​的​规​则​时​,数​据​包​被​发​送​到​特​定​的 target,如 ACCEPT 或 DROP。​

  • -R — 替​换​指​定 chain 中​的​一​个​规​则​。​这​个​规​则​的​号​必​须​在 chain 名​的​后​面​被​指​定​。​chain 中​的​第​一​条​规​则​与​规​则 1 相​对​应​,以​此​类​推​。​

  • -X — 删​除​一​个​用​户​指​定​的 chain。​您​不​能​删​除​一​个​内​建​的 chain。​

  • -Z — 把​一​个​规​则​表​中​的​所​有 chain 中​的​字​节​和​数​据​包​计​数​器​设​置​为​零​。​

3.5.3.3. IPTables 参​数​选​项​

一​些 iptables 命​令​(包​括​在​一​个​特​定 chain 中​添​加​、​追​加​、​删​除​、​插​入​或​替​换​规​则​)需​要​不​同​的​参​数​来​组​成​一​条​数​据​包​过​滤​规​则​。​

  • -c — 为​特​定​的​规​则​重​设​计​数​器​。​这​个​参​数​可​以​使​用 PKTSBYTES 选​项​来​指​定​重​设​哪​个​计​数​器​。​

  • -d — 设​定​匹​配​这​个​规​则​的​数​据​包​的​目​的​地​主​机​名​,IP 地​址​或​网​络​。​当​匹​配​一​个​网​络​时​,以​下​的 IP 地​址​/网​络​掩​码​格​式​被​支​持​:

    • N.N.N.N/M.M.M.M — 这​里​,N.N.N.N 是 IP 地​址​范​围​,M.M.M.M 是​子​网​掩​码​。​

    • N.N.N.N/M — 这​里​,N.N.N.N 是 IP 地​址​,M 是​位​掩​码​。​

  • -f — 只​对​分​段​的​数​据​包​应​用​这​个​规​则​。​

    您​可​用​在​这​个​参​数​后​面​使​用 (!) 选​项​来​指​定​只​有​未​分​段​的​数​据​包​才​匹​配​。​

    备​注​

    虽​然​分​段​的​数​据​包​是 IP 协​议​的​一​个​标​准​部​分​,准​确​指​出​分​段​和​未​分​段​数​据​包​是​需​要​的​。​

    它​最​初​是​被​设​计​来​允​许 IP 数​据​包​使​用​不​同​大​小​的​数​据​段​来​在​网​络​中​传​输​,而​在​当​前​,数​据​分​段​却​被​一​些​人​利​用​来​使​用​非​法​格​式​化​的​数​据​包​进​行 DoS 网​络​攻​击​。​您​还​应​该​注​意​,IPv6 完​全​禁​止​使​用​数​据​分​段​。​

  • -i — 设​置​入​站​的​网​络​接​口​,如 eth0ppp0。​使​用 iptables 时​,如​果​是 filter 规​则​表​,这​个​选​项​参​数​只​用​于 INPUT 和 FORWARD chain;如​果​是 natmangle 规​则​表​,它​只​用​于 PREROUTING chain。​

    这​个​参​数​也​支​持​以​下​特​殊​的​选​项​:

    • ! — 表​示​不​包​括​在​这​个​规​则​中​的​接​口​。​

    • + — 用​来​代​表​匹​配​特​定​字​符​串​的​所​有​接​口​的​通​配​符​。​例​如​, -i eth+ 表​示​所​有 Ethernet 接​口​,但​不​包​括​其​它​接​口​(如​ppp0)。​

    如​果​使​用​了 -i 参​数​而​没​有​指​定​接​口​,则​所​有​接​口​都​受​这​条​规​则​的​影​响​。​

  • -j — 当​一​个​数​据​包​匹​配​一​条​特​定​规​则​时​,跳​到​指​定​的 target。​

    标​准​的 target 是 ACCEPT、​DROP、​QUEUERETURN。​

    红帽企业 Linux iptables RPM 软​件​包​默​认​加​载​的​模​块​也​包​括​了​扩​展​的​选​项​。​在​这​些​模​块​中​包​括​的​有​效 target 有 LOG、​MARKREJECT 和​其​它 target。​请​参​阅 iptables 说​明​书​页​来​获​得​更​多​关​于​这​些 target 的​信​息​。​

    这​个​选​项​也​可​以​用​来​把​匹​配​特​定​规​则​的​一​个​数​据​包​导​向​到​当​前 chain 以​外​的​一​个​用​户​定​义​的 chain 中​,从​而​可​以​对​这​个​数​据​包​应​用​其​它​规​则​。​

    如​果​没​有​指​定 target,这​个​数​据​包​会​通​过​这​个​规​则​而​没​有​任​何​行​动​被​执​行​。​但​是​,这​个​规​则​的​计​数​器​会​增​加​一​个​数​值​。​

  • -o — 为​一​个​规​则​设​置​出​站​网​络​接​口​。​在 filter 规​则​表​中​,这​个​选​项​只​对 OUTPUT 和 FORWARD chain 有​效​,而​在 natmangle 规​则​表​中​,这​个​选​项​对 POSTROUTING chain 有​效​。​这​个​参​数​接​受​和​入​站​网​络​接​口​参​数 (-i) 相​同​的​选​项​。​

  • -p <protocol> — 设​置​受​这​条​规​则​影​响​的 IP 协​议​。​这​可​能​是 icmp、​tcp、​udpall;或​是​代​表​这​些​或​一​个​不​同​协​议​的​数​值​。​您​也​可​以​使​用​在 /etc/protocols 文​件​中​列​出​的​任​何​数​值​。​

    "all" 协​议​意​味​着​这​条​规​则​适​用​于​所​有​支​持​的​协​议​。​如​果​这​条​规​则​中​没​有​指​定​协​议​,它​的​默​认​值​则​为 "all"。​

  • -s — 为​一​个​特​定​的​数​据​包​设​定​源​地​址​。​它​使​用​和​目​的​地​址 (-d) 参​数​相​同​的​语​法​。​

3.5.3.4. IPTables 匹​配​选​项​

不​同​的​网​络​协​议​会​提​供​不​同​的​匹​配​选​项​,它​们​可​以​被​配​置​来​匹​配​使​用​这​个​协​议​的​特​定​的​数​据​包​。​但​是​,这​个​协​议​必​须​先​在 iptables 命​令​中​被​指​定​。​例​如​,-p <protocol-name> 启​用​了​指​定​协​议​的​选​项​。​请​注​意​,您​也​可​以​使​用​协​议 ID 来​代​替​协​议​名​。​请​参​照​以​下​的​实​例​,它​们​有​相​同​的​效​果​:

 iptables -A INPUT -p icmp --icmp-type any -j ACCEPT  iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT 

/etc/services 文​件​包​括​了​服​务​的​定​义​。​为​了​阅​读​方​便​,建​议​您​使​用​服​务​名​,而​不​使​用​端​口​号​。​

重​要​

您​需​要​保​证 /etc/services 文​件​的​安​全​性​来​防​止​未​经​授​权​的​修​改​。​如​果​这​个​文​件​可​以​被​编​辑​,未​经​授​权​的​用​户​就​可​能​通​过​编​辑​这​个​文​件​来​在​您​的​系​统​上​开​放​一​些​您​不​希​望​开​放​的​端​口​。​要​使​这​个​文​件​保​持​安​全​,以​根​用​户​的​身​份​输​入​以​下​命​令​:

 [root@myServer ~]# chown root.root /etc/services [root@myServer ~]# chmod 0644 /etc/services [root@myServer ~]# chattr +i /etc/services 

这​将​可​以​防​止​这​个​文​件​被​重​新​命​名​、​删​除​或​链​接​到​这​个​文​件​。​

3.5.3.4.1. TCP 协​议​

这​些​匹​配​选​项​对 TCP 协​议 (-p tcp) 有​效​:

  • --dport — 设​置​数​据​包​的​目​的​端​口​。​

    要​配​置​这​个​选​项​,使​用​网​络​服​务​名​(如 www 或 smtp),端​口​号​,或​一​个​端​口​号​范​围​。​

    要​指​定​一​个​端​口​号​范​围​,使​用​一​个​冒​号 (:) 分​隔​两​个​端​口​号​,如​:-p tcp --dport 3000:3200。​可​被​接​受​的​最​大​端​口​范​围​是 0:65535。​

    --dport 选​项​后​面​使​用 (!) 来​匹​配​那​些 不​ 使​用​那​个​网​络​服​务​或​端​口​的​数​据​包​。​

    通​过 /etc/services 文​件​可​以​查​看​使​用​的​网​络​服​务​和​端​口​号​的​名​称​或​别​名​。​

    --destination-port 匹​配​选​项​与 --dport 相​同​。​

  • --sport — 设​置​数​据​包​的​源​地​址​端​口​,它​使​用​和 --dport 相​同​的​选​项​。​--source-port 匹​配​选​项​与 --sport 完​全​相​同​。​

  • --syn — 匹​配​所​有​用​来​初​始​网​络​通​信​的 TCP 数​据​包​(通​常​被​称​为 SYN packets)。​任​何​包​括​实​际​数​据​的​数​据​包​都​不​会​被​处​理​。​

    --syn 选​项​后​面​使​用 (!) 来​匹​配​所​有​非 SYN 的​数​据​包​。​

  • --tcp-flags <tested flag list> <set flag list> — 允​许​有​特​定​位​(标​识​)的 TCP 数​据​包​匹​配​一​个​规​则​。​

    --tcp-flags 匹​配​选​项​接​受​两​个​参​数​。​第​一​个​是​掩​码​:一​个​由​逗​号​分​隔​的​、​被​数​据​包​检​查​的​标​识​。​第​二​个​参​数​是​由​逗​号​分​隔​的​、​必​须​为​规​则​匹​配​设​置​的​一​组​标​识​。​

    可​能​的​标​识​是​:

    • ACK

    • FIN

    • PSH

    • RST

    • SYN

    • URG

    • ALL

    • NONE

    例​如​,一​个 iptables 规​则​包​括​了​以​下​内​容​,它​只​匹​配​有 SYN 标​识​,而 ACK 和 FIN 标​识​没​有​被​设​定​的 TCP 数​据​包​:

    --tcp-flags ACK,FIN,SYN SYN

    --tcp-flags 后​面​使​用 (!) 来​使​匹​配​选​项​起​相​反​的​作​用​。​

  • --tcp-option — 试​图​匹​配​可​以​在​特​定​数​据​包​中​设​置​的 TCP 选​项​。​这​个​选​项​也​可​以​使​用 (!) 来​起​到​相​反​的​效​果​。​

3.5.3.4.2. UDP 协​议​

这​些​匹​配​选​项​对 UDP 协​议 (-p udp) 有​效​:

  • --dport — 指​定 UDP 数​据​包​的​目​的​端​口​,它​使​用​服​务​名​、​端​口​号​或​端​口​号​范​围​。​--destination-port 匹​配​选​项​与 --dport 相​同​。​

  • --sport — 指​定 UDP 数​据​包​的​源​端​口​,它​使​用​服​务​名​、​端​口​号​或​端​口​号​范​围​。​--source-port 匹​配​选​项​与 --sport 相​同​。​

对​于 --dport--sport 选​项​,要​指​定​端​口​号​范​围​,使​用​冒​号 (:) 分​隔​两​个​数​值​。​例​如​:-p tcp --dport 3000:3200。​可​接​受​的​最​大​端​口​范​围​是 0:65535。​

3.5.3.4.3. ICMP 协​议​

以​下​匹​配​选​项​对 Internet Control Message Protocol (ICMP) (-p icmp) 协​议​有​效​:

  • --icmp-type — 设​置 ICMP 类​型​的​名​称​或​号​码​来​匹​配​这​个​规​则​。​输​入 iptables -p icmp -h 命​令​可​以​获​得​有​效​的 ICMP 名​称​的​列​表​。​

3.5.3.4.4. 额​外​的​匹​配​选​项​模​块​

iptables 命​令​加​载​的​模​块​提​供​了​额​外​的​匹​配​选​项​。​

要​使​用​一​个​匹​配​选​项​模​块​,通​过​名​称​加​载​它​:-m <module-name>,在​这​里​,<module-name> 是​模​块​名​。​

在​默​认​情​况​下​,许​多​模​块​都​有​效​。​您​也​可​以​创​建​模​块​来​提​供​额​外​的​功​能​。​

以​下​是​一​些​最​常​用​模​块​的​列​表​:

  • limit 模​块 — 限​制​一​个​特​定​规​则​可​以​匹​配​的​数​据​包​的​数​量​。​

    当​与 LOG target 一​起​使​用​时​,limit 可​以​防​止​大​量​匹​配​的​数​据​包​在​系​统​日​志​文​件​中​产​生​大​量​重​复​的​信​息​,或​占​用​大​量​的​系​统​资​源​。​

    请​参​阅 第 3.5.3.5 节 “Target 选​项​” 来​获​得​更​多​关​于 LOG target 的​信​息​。​

    limit 模​块​启​用​了​以​下​选​项​:

    • --limit — 设​置​在​一​个​特​定​时​间​段​中​最​多​匹​配​的​数​据​包​数​量​(使​用 <value>/<period> 对​来​指​定​)。​例​如​,--limit 5/hour 允​许​每​小​时​可​以​匹​配​五​条​规​则​。​

      时​间​段​可​以​指​定​为​秒​、​分​钟​、​小​时​或​天​。​

      如​果​时​间​没​有​被​指​定​,它​的​默​认​值​为 3/hour。​

    • --limit-burst — 设​置​在​同​一​时​间​匹​配​一​个​规​则​的​数​据​包​的​数​量​限​制​。​

      这​个​选​项​应​该​是​一​个​整​数​值​,并​需​要​和 --limit 选​项​一​起​使​用​。​

      如​果​没​有​特​定​的​值​被​指​定​,它​的​默​认​值​为 5。​

  • state 模​块 — 启​动​状​态​匹​配​。​

    state 模​块​启​用​了​以​下​选​项​:

    • --state — 匹​配​有​以​下​连​接​状​态​的​一​个​数​据​包​:

      • ESTABLISHED — 匹​配​的​数​据​包​与​一​个​已​经​建​立​的​连​接​中​的​其​它​数​据​包​相​关​联​。​如​果​您​希​望​维​护​在​一​个​客​户​端​系​统​和​一​个​服​务​间​的​连​接​,您​需​要​接​受​这​个​状​态​。​

      • INVALID — 匹​配​的​数​据​包​不​能​与​一​个​已​知​的​连​接​相​关​联​。​

      • NEW — 匹​配​的​数​据​包​正​在​创​建​一​个​新​连​接​,或​它​是​一​个​以​前​没​有​出​现​的​双​向​连​接​的​一​部​分​。​如​果​您​要​允​许​到​一​个​服​务​的​新​连​接​,您​需​要​接​受​这​个​状​态​。​

      • RELATED — 匹​配​的​数​据​包​正​在​开​始​一​个​与​一​个​存​在​的​连​接​相​关​的​新​连​接​。​它​的​一​个​例​子​是 FTP,FTP 使​用​一​个​连​接​来​控​制​通​信​(端​口​21),并​使​用​一​个​独​立​的​连​接​进​行​数​据​传​输​(端​口​20)。​

      多​个​连​接​状​态​可​以​在​一​起​使​用​,使​用​逗​号​隔​开​不​同​的​状​态​,如 -m state --state INVALID,NEW。​

  • mac 模​块 — 启​用​硬​件 MAC 地​址​匹​配​。​

    mac 模​块​启​用​了​以​下​选​项​:

    • --mac-source — 匹​配​发​送​这​个​数​据​包​的​网​卡​的 MAC 地​址​。​要​在​一​条​规​则​中​不​包​括​特​定​的 MAC 地​址​,在 --mac-source 匹​配​选​项​后​使​用 (!)。​

请​参​阅 iptables 说​明​书​页​来​获​得​更​多​关​于​这​个​模​块​可​用​的​匹​配​选​项​的​信​息​。​

3.5.3.5. Target 选​项​

当​一​个​数​据​包​与​一​个​特​定​的​规​则​相​匹​配​时​,这​条​规​则​可​以​把​这​个​数​据​包​重​新​定​向​到​不​同​的 target 中​,由​这​些 target 来​决​定​对​这​个​数​据​包​采​取​什​么​行​动​。​每​个 chain 都​有​一​个​默​认​的 target,它​在​数​据​包​与​这​个 chain 中​的​任​何​规​则​都​不​匹​配​,或​所​匹​配​的​规​则​都​没​有​指​定 target 时​使​用​。​

以​下​是​标​准​的 target:

  • <user-defined-chain> — 规​则​表​中​的​一​个​用​户​定​义​的 chain。​用​户​定​义​的 chain 的​名​称​必​须​是​唯​一​的​。​这​个 target 会​把​数​据​包​发​送​到​指​定​的 chain。​

  • ACCEPT — 允​许​数​据​包​通​过​并​发​送​到​它​的​目​的​地​或​其​它 chain。​

  • DROP — 丢​掉​这​个​数​据​包​并​不​给​发​送​者​任​何​反​馈​信​息​。​发​送​这​个​数​据​包​的​系​统​将​不​会​得​到​发​送​失​败​的​信​息​。​

  • QUEUE — 数​据​包​被​放​置​在​一​个​用​户​空​间​应​用​程​序​的​队​列​中​等​待​被​处​理​。​

  • RETURN — 停​止​使​用​当​前 chain 中​的​规​则​来​检​查​数​据​包​。​如​果​带​有​一​个 RETURN target 的​数​据​包​与​另​一​个 chain 所​调​用​的​一​个​规​则​相​匹​配​,这​个​数​据​包​会​重​新​返​回​到​它​所​离​开​的​第​一​个 chain 来​恢​复​规​则​检​查​。​如​果 RETURN 规​则​在​一​个​内​建 chain 中​使​用​,而​这​个​数​据​包​无​法​返​回​到​它​以​前​的 chain,当​前 chain 的​默​认 target 被​使​用​。​

另​外​,可​用​的​扩​展​还​允​许​指​定​其​它 target。​这​些​扩​展​被​称​为​调​用​的 target 模​块​或​匹​配​模​块​,其​中​的​大​多​数​只​适​用​于​特​定​的​规​则​表​和​特​殊​的​情​况​。​请​参​阅​第 3.5.3.4.4 节 “额​外​的​匹​配​选​项​模​块​”来​获​得​更​多​关​于​匹​配​选​项​模​块​的​信​息​。​

扩​展​的 target 模​块​中​的​大​多​数​只​适​用​于​特​定​的​规​则​表​或​特​殊​的​情​况​。​红帽企业 Linux 默​认​包​括​的​最​常​用​的 target 模​块​是​:

  • LOG — 在​日​志​中​记​录​所​有​匹​配​这​条​规​则​的​数​据​包​。​因​为​数​据​包​被​内​核​所​记​录​,所​以 /etc/syslog.conf 文​件​决​定​了​这​些​日​志​信​息​被​写​到​什​么​地​方​。​默​认​情​况​下​,它​们​被​放​置​在 /var/log/messages 文​件​中​。​

    LOG target 指​定​了​日​志​记​录​的​方​法​后​,还​可​以​使​用​其​它​的​选​项​:

    • --log-level — 设​置​一​个​日​志​记​录​事​件​的​优​先​级​。​请​参​阅 syslog.conf 说​明​书​页​来​获​得​优​先​级​列​表​信​息​。​

    • --log-ip-options — 记​录​一​个 IP 数​据​包​头​中​设​置​的​所​有​选​项​。​

    • --log-prefix — 在​记​录​日​志​信​息​前​,写​入​一​个​最​长​为 29 个​字​符​的​字​符​串​。​这​在​编​写 syslog 过​滤​程​序​时​非​常​有​用​。​

      备​注​

      因​为​这​个​信​息​本​身​存​在​的​问​题​,您​需​要​在 log-prefix 值​的​后​面​添​加​一​个​空​格​。​

    • --log-tcp-options — 记​录​一​个 TCP 数​据​包​头​中​所​设​置​的​所​有​选​项​。​

    • --log-tcp-sequence — 在​日​志​中​记​录​这​个​数​据​包​的 TCP 序​列​号​。​

  • REJECT — 丢​掉​这​个​数​据​包​,并​向​远​程​系​统​发​回​一​个​错​误​数​据​包​。​

    REJECT target 接​受 --reject-with <type> (在​这​里​,<type> 是​拒​绝​的​类​型​) 来​允​许​在​返​回​的​错​误​数​据​包​中​包​括​更​详​细​的​信​息​。​如​果​没​有​使​用​其​它​选​项​,port-unreachable 就​是​默​认​的​错​误​类​型​。​请​参​阅 iptables 说​明​书​页​来​获​得 <type> 选​项​完​整​列​表​的​信​息​。​

另​外​,您​还​可​以​在 iptables 说​明​书​页​中​获​得​其​它 target 扩​展​的​信​息​。​

3.5.3.6. 列​出​选​项​

默​认​的​列​出​命​令​,iptables -L [<chain-name>],可​以​显​示​默​认​过​滤​规​则​表​当​前 chain 的​基​本​信​息​。​其​它​选​项​可​以​提​供​更​详​细​的​信​息​:

  • -v — 显​示​详​细​的​输​出​,如​每​个 chain 已​经​处​理​的​数​据​包​数​和​字​节​数​;规​则​匹​配​的​数​据​包​数​和​字​节​数​;一​个​特​定​的​规​则​适​用​于​哪​个​网​络​接​口​。​

  • -x — 使​用​精​确​的​值​。​在​一​个​非​常​繁​忙​的​系​统​上​,被​一​个​特​定 chain 或​规​则​所​处​理​的​数​据​包​和​字​节​数​可​能​会​以 Kilobytes、​Megabytes (Megabytes) 或 Gigabytes 为​单​位​。​这​个​选​项​可​以​被​用​来​强​制​显​示​准​确​的​数​值​。​

  • -n — 以​数​字​而​不​是​主​机​名​和​网​络​服​务​的​形​式​显​示 IP 地​址​和​端​口​号​。​

  • --line-numbers — 列​出​规​则​在 chain 中​所​处​位​置​的​数​字​顺​序​。​当​要​删​除​一​个 chain 中​的​特​定​规​则​或​确​定​在​什​么​位​置​插​入​一​条​规​则​时​非​常​有​用​。​

  • -t <table-name> — 指​定​一​个​规​则​表​名​。​如​果​没​有​指​定​,则​使​用​默​认​的 filter 规​则​表​。​

以​下​实​例​显​示​了​使​用​这​些​选​项​的​结​果​。​请​注​意​在​使​用 -x 选​项​时​字​节​数​的​不​同​。​

 [root@myserver ~]# iptables -L OUTPUT -v -n -x Chain OUTPUT (policy ACCEPT 64005 packets, 6445791 bytes) pkts bytes target prot opt in out source destination 1593 133812 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 [root@myserver ~]#iptables -L OUTPUT -v -n Chain OUTPUT (policy ACCEPT 64783 packets, 6492K bytes) pkts bytes target prot opt in out source destination 1819 153K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 [root@myserver ~]# 

3.5.4. 保​存 IPTables 规​则​

iptables 命​令​所​创​建​的​规​则​被​存​储​在​内​存​中​。​如​果​在​保​存 iptables 规​则​前​重​新​启​动​系​统​,则​所​有​的​规​则​将​会​丢​失​。​要​想​在​系​统​重​新​启​动​后​不​丢​失 netfilter 过​滤​规​则​,这​些​规​则​必​须​被​保​存​。​要​保​存 netfilter 规​则​,以​根​用​户​的​身​份​输​入​以​下​命​令​:

 /sbin/service iptables save 

这​个​命​令​执​行 iptables 初​始​脚​本​,它​运​行 /sbin/iptables-save 程​序​,并​把​当​前​的 iptables 配​置​写​入​到 /etc/sysconfig/iptables。​存​在​的 /etc/sysconfig/iptables 文​件​被​存​为 /etc/sysconfig/iptables.save。​

当​系​统​下​一​次​启​动​时​,iptables 初​始​脚​本​会​使​用 /sbin/iptables-restore 命​令​来​重​新​应​用​存​储​在 /etc/sysconfig/iptables 中​的​规​则​。​

在​把​新​的 iptables 规​则​写​入​到 /etc/sysconfig/iptables 文​件​前​,最​好​对​它​进​行​测​试​。​您​可​以​把​另​外​一​个​系​统​版​本​中​的​这​个​文​件​复​制​到​这​个​系​统​上​来​复​制 iptables 规​则​。​这​个​方​法​可​以​被​用​来​在​多​个​系​统​上​实​施​一​组 iptables 规​则​。​

您​还​可​以​把 iptables 规​则​保​存​到​一​个​单​独​的​文​件​中​来​发​布​它​们​,对​它​们​进​行​备​份​或​用​于​其​它​目​的​。​要​保​存​您​的 iptables 规​则​,以​根​用​户​的​身​份​运​行​以​下​命​令​:

 [root@myserver ~]# iptables-save > <filename>
在这里,<filename> 是由用户定义的、您的规则的名称。

重​要​

如​果​把 /etc/sysconfig/iptables 文​件​传​送​到​其​它​系​统​上​,输​入 /sbin/service iptables restart 来​使​新​规​则​生​效​。​

备​注​

请​注​意 iptables命​令​/sbin/iptables - 它​被​用​来​处​理​规​则​表​和 chain 来​实​现 iptables 的​功​能​)和 iptables服​务​/sbin/iptables service - 它​被​用​来​启​用​或​禁​用 iptables 服​务​)间​的​不​同​。​

3.5.5. IPTables 控​制​脚​本​

在 红帽企业 Linux 中​有​两​种​方​法​来​控​制 iptables

  • /sbin/service iptables <option> — 通​过​使​用​它​的​初​始​脚​本​来​处​理 iptables 的​不​同​功​能​。​它​包​括​以​下​选​项​:

    • start — 如​果​一​个​防​火​墙​被​配​置​(有 /etc/sysconfig/iptables 文​件​),所​有​运​行​的 iptables 都​将​完​全​停​止​,然​后​使​用 /sbin/iptables-restore 命​令​启​动​。​这​个​选​项​只​在 ipchains 内​核​模​块​没​有​被​加​载​的​时​候​有​效​。​要​检​查​这​个​模​块​是​否​被​加​载​,以​根​用​户​的​身​份​运​行​以​下​命​令​:

       [root@MyServer ~]# lsmod | grep ipchains 
      

      如​果​这​个​命​令​的​运​行​没​有​返​回​任​何​输​出​,则​这​个​模​块​没​有​被​加​载​。​如​果​需​要​,使​用 /sbin/rmmod 命​令​来​删​除​这​个​模​块​。​

    • stop — 如​果​一​个​防​火​墙​在​运​行​,内​存​中​的​防​火​墙​规​则​会​被​丢​掉​,所​有 iptables 模​块​和 helper 会​被​卸​载​。​

      如​果 /etc/sysconfig/iptables-config 配​置​文​件​中​的 IPTABLES_SAVE_ON_STOP 项​的​值​由​默​认​值​改​为 yes,当​前​的​规​则​会​被​保​存​到 /etc/sysconfig/iptables,所​有​存​在​的​规​则​都​会​被​移​到 /etc/sysconfig/iptables.save 文​件​中​。​

      请​参​阅 第 3.5.5.1 节 “IPTables 控​制​脚​本​配​置​文​件​” 来​获​得​更​多​关​于 iptables-config 文​件​的​信​息​。​

    • restart — 如​果​一​个​防​火​墙​在​运​行​,内​存​中​的​防​火​墙​规​则​会​被​丢​掉​,如​果​它​在 /etc/sysconfig/iptables 中​被​配​置​,防​火​墙​会​重​新​运​行​。​这​个​选​项​只​在 ipchains 内​核​模​块​没​有​被​加​载​的​情​况​下​有​效​。​

      如​果 /etc/sysconfig/iptables-config 配​置​文​件​中​的 IPTABLES_SAVE_ON_RESTART 项​的​值​由​默​认​值​改​为​了 yes,当​前​的​规​则​会​被​保​存​到 /etc/sysconfig/iptables,所​有​存​在​的​规​则​都​被​移​到 /etc/sysconfig/iptables.save 文​件​中​。​

      请​参​阅 第 3.5.5.1 节 “IPTables 控​制​脚​本​配​置​文​件​” 来​获​得​更​多​关​于 iptables-config 文​件​的​信​息​。​

    • status — 显​示​防​火​墙​的​状​态​并​列​出​所​有​活​跃​的​规​则​。​

      这​个​选​项​的​默​认​配​置​是​在​每​条​规​则​中​显​示 IP 地​址​。​要​显​示​域​名​和​主​机​名​信​息​,编​辑 /etc/sysconfig/iptables-config 文​件​,把 IPTABLES_STATUS_NUMERIC 项​的​值​改​为 no。​请​参​阅​第 3.5.5.1 节 “IPTables 控​制​脚​本​配​置​文​件​”来​获​得​更​多​关​于 iptables-config 文​件​的​信​息​。​

    • panic — 丢​掉​所​有​防​火​墙​规​则​。​所​有​配​置​的​规​则​表​中​的​政​策​都​被​设​为 DROP。​

      当​一​个​服​务​器​的​安​全​性​被​破​坏​时​这​个​选​项​将​非​常​有​用​。​您​可​以​使​用​这​个​选​项​来​停​止​所​有​到​这​个​系​统​的​网​络​流​量​,同​时​可​以​保​持​这​个​系​统​的​运​行​来​分​析​系​统​的​状​态​。​

    • save — 使​用 iptables-save 把​防​火​墙​规​则​保​存​到 /etc/sysconfig/iptables。​请​参​阅​第 3.5.4 节 “保​存 IPTables 规​则​”来​获​得​更​详​细​的​信​息​。​

窍​门​

要​使​用​相​同​的​初​始​脚​本​命​令​对 IPv6 进​行 netfilter 控​制​,把​本​节​中​介​绍​的 /sbin/service 命​令​中​的 iptables 替​换​为 ip6tables。​更​多​关​于 IPv6 和 netfilter 的​信​息​,请​参​阅 第 3.5.6 节 “IPTables 和 IPv6”。​

3.5.5.1. IPTables 控​制​脚​本​配​置​文​件​

iptables 初​始​脚​本​是​由 /etc/sysconfig/iptables-config 配​置​文​件​所​控​制​的​。​以​下​是​包​括​在​这​个​文​件​中​的​项​的​列​表​:

  • IPTABLES_MODULES — 在​防​火​墙​被​激​活​时​,指​定​一​组​空​间​独​立​的​额​外 iptables 模​块​来​加​载​。​这​可​以​包​括 connection tracking 和 NAT helper。​

  • IPTABLES_MODULES_UNLOAD — 在​重​新​启​动​和​停​止​时​卸​载​的​模​块​。​这​个​项​接​受​以​下​值​:

    • yes — 默​认​的​值​。​这​个​选​项​必​须​被​设​置​来​在​启​动​和​停​止​一​个​防​火​墙​时​达​到​一​个​正​确​的​状​态​。​

    • no — 这​个​选​项​只​有​在​卸​载 netfilter 模​块​出​现​问​题​时​才​应​该​设​置​。​

  • IPTABLES_SAVE_ON_STOP — 当​防​火​墙​停​止​时​把​当​前​的​防​火​墙​规​则​保​存​到 /etc/sysconfig/iptables。​这​个​项​接​受​以​下​值​:

    • yes — 当​防​火​墙​停​止​时​把​现​存​的​规​则​保​存​到 /etc/sysconfig/iptables,而​以​前​的​版​本​被​保​存​为 /etc/sysconfig/iptables.save。​

    • no — 默​认​值​。​当​防​火​墙​停​止​时​不​保​存​当​前​的​规​则​。​

  • IPTABLES_SAVE_ON_RESTART — 当​防​火​墙​重​新​启​动​时​,保​存​当​前​的​防​火​墙​规​则​。​这​个​项​接​受​以​下​值​:

    • yes — 当​防​火​墙​重​新​启​动​时​,保​存​现​存​的​规​则​到 /etc/sysconfig/iptables,而​以​前​的​版​本​被​存​为 /etc/sysconfig/iptables.save。​

    • no — 默​认​值​。​防​火​墙​重​新​启​动​时​,不​保​存​现​存​的​规​则​。​

  • IPTABLES_SAVE_COUNTER — 保​存​并​恢​复​所​有 chain 和​规​则​中​的​数​据​包​和​字​节​计​数​器​。​这​个​项​接​受​以​下​值​:

    • yes — 保​存​计​数​器​的​值​。​

    • no — 默​认​值​。​不​保​存​计​数​器​值​。​

  • IPTABLES_STATUS_NUMERIC — 输​出​的 IP 地​址​是​数​字​的​格​式​,而​不​是​域​名​和​主​机​名​的​形​式​。​这​个​项​接​受​以​下​值​:

    • yes — 默​认​的​值​。​在​状​态​输​出​中​只​包​括 IP 地​址​。​

    • no — 在​状​态​输​出​中​返​回​域​名​或​主​机​名​。​

3.5.6. IPTables 和 IPv6

如​果 iptables-ipv6 软​件​包​被​安​装​,红帽企业 Linux 包​括​的 netfilter 可​以​过​滤 IPv6 协​议​。​用​来​处​理 IPv6 netfilter 的​命​令​是 ip6tables。​

这​个​命​令​的​多​数​项​与 iptables 中​的​项​相​同​,但​是 nat 规​则​表​还​不​被​支​持​。​这​意​味​着​还​无​法​执​行 IPv6 网​络​地​址​翻​译​的​任​务​,如 masquerading 和 port forwarding。​

ip6tables 规​则​被​保​存​在 /etc/sysconfig/ip6tables 文​件​中​。​以​前​被 ip6tables 初​始​脚​本​保​存​的​规​则​被​保​存​在 /etc/sysconfig/ip6tables.save 文​件​中​。​

ip6tables 初​始​脚​本​的​配​置​选​项​被​保​存​在 /etc/sysconfig/ip6tables-config 中​,每​个​项​的​名​称​与 iptables 中​对​应​项​的​名​称​非​常​相​似​。​

例​如​,iptables-configIPTABLES_MODULES 项​:在​对​应​的 ip6tables-config 文​件​中​是 IP6TABLES_MODULES。​

3.5.7. 其​它​资​料​

更​多​关​于 iptables 数​据​包​过​滤​的​信​息​可​以​在​以​下​获​得​。​

3.5.7.1. 安​装​的​文​档​

  • man iptables — 包​括​了​对 iptables 的​描​述​,以​及 target、​选​项​和​匹​配​扩​展​的​完​整​列​表​。​

3.5.7.2. 有​用​的​网​站​

  • http://www.netfilter.org/ — netfilter/iptables 项​目​的​官​方​网​站​。​它​提​供​了​各​种​与 iptables 相​关​的​信​息​: Linux IP 防​火​墙​的​维​护​者 Rusty Russell 编​写​的 FAQ 和​不​同​的​帮​助​信​息​;HOWTO 文​档​包​括​了​基​本​的​网​络​概​念​、​内​核​数​据​包​过​滤​和 NAT 的​配​置​。​

  • http://www.linuxnewbie.org/nhf/Security/IPtables_Basics.html — 介​绍​了​数​据​包​通​过 Linux 内​核​的​方​法​,以​及​构​建​基​本 iptables 命​令​的​方​法​。​

第 4 章 安​全​和 SELinux

4.1. 对 SELinux 的​介​绍​

Security-Enhanced Linux (SELinux) 是​一​个​集​成​到 2.6.x 内​核​中​的​、​使​用 Linux 安​全​模​块​LSM)的​安​全​体​系​结​构​,它​是​美​国​国​家​安​全​局​(NSA)和 SELinux 社​区​的​一​个​项​目​。​把 SELinux 集​成​到 红帽企业 Linux 是 NSA 和 Red Hat 通​力​合​作​的​结​果​。​

4.1.1. SELinux 概​述​

SELinux 提​供​了​一​个​构​建​到 Linux 内​核​中​的​、​灵​活​的 Mandatory Access Control(强​制​访​问​控​制​) (MAC) 系​统​。​在​标​准​的 Linux Discretionary Access Control(自​主​访​问​控​制​) (DAC) 中​,一​个​应​用​程​序​或​进​程​以​一​个​用​户​的​身​份​(UID 或 SUID)运​行​,它​们​对​目​标​(如​文​件​、​套​接​字​和​其​它​进​程​)有​特​定​的​访​问​权​限​。​而​运​行​一​个 MAC 内​核​可​以​防​止​恶​性​程​序​或​有​设​计​漏​洞​的​程​序​对​系​统​进​行​损​坏​或​破​坏​。​

SELinux 为​系​统​上​的​所​有​用​户​、​应​用​程​序​、​进​程​和​文​件​都​定​义​了​访​问​和​变​迁​权​利​。​SELinux 使​用​一​个​根​据​实​际​要​求​设​定​的​或​严​格​或​宽​松​的​安​全​政​策​来​控​制​这​些​实​体​之​间​的​交​互​作​用​。​

在​日​常​使​用​中​,一​般​的​系​统​用​户​通​常​不​怎​么​注​意 SELinux 的​存​在​,只​有​系​统​管​理​员​才​需​要​考​虑​在​他​们​的​服​务​器​环​境​中​要​实​施​的​安​全​政​策​应​该​多​么​严​格​才​合​适​。​根​据​实​际​需​求​,安​全​政​策​可​以​很​严​格​也​可​以​很​宽​松​,可​以​非​常​详​细​。​这​种​详​细​的​配​置​可​以​使 SELinux 内​核​对​整​个​系​统​进​行​完​全​精​细​的​控​制​。​

SELinux 决​策​进​程​

当​一​个​主​观​项​(subject)(如​一​个​应​用​程​序​)要​访​问​一​个​客​观​项​(object)(如​一​个​文​件​)时​,内​核​中​的​安​全​政​策​强​制​服​务​器​会​检​查 access vector cache(访​问​矢​量​缓​存​) (AVC),其​中​缓​存​着​的​主​客​观​项​的​权​限​。​如​果​根​据 AVC 中​的​数​据​不​足​以​决​策​的​话​,该​请​求​会​继​续​并​到​达​安​全​服​务​器​,该​服​务​器​会​查​看​这​个​应​用​程​序​的 security context(安​全​上​下​文​) 以​及​那​个​矩​阵​中​的​文​件​。​根​据​查​看​的​结​果​,访​问​权​限​可​能​被​授​予​,也​可​能​被​拒​绝​。​如​果​访​问​权​限​被​拒​绝​,avc: denied 信​息​会​记​录​到 /var/log/messages 文​件​中​。​主​观​项​和​客​观​项​的​安​全​上​下​文​是​由​所​安​装​的​安​全​政​策​决​定​的​。​同​时​,安​全​政​策​也​提​供​安​装​安​全​服​务​器​矩​阵​所​需​要​的​信​息​。​

请​参​阅​以​下​图​示​:

SELinux 决​策​进​程​

SELinux 决​策​进​程​。​

图 4.1. SELinux 决​策​进​程​

SELinux 操​作​模​式​

SELinux不​是​在​强​制​模​式​下​运​行​,而​是​可​以​在​容​许​模​式​下​运​行​,其​中 AVC 被​检​查​而​且​拒​绝​信​息​被​并​记​录​,但 SELinux 并​不​强​制​实​施​相​应​的​安​全​政​策​。​这​对​故​障​排​除​和​开​发​或​优​化 SELinux 政​策​是​很​有​用​的​。​

要​获​得​关​于 SELinux 工​作​原​理​的​更​多​信​息​,请​参​阅​第 4.1.3 节 “其​它​资​源​”。​

4.1.2. 与 SELinux 相​关​的​文​件​

以​下​章​节​介​绍 SELinux 的​配​置​文​件​和​相​关​文​件​系​统​。​

4.1.2.1. SELinux 伪​文​件​系​统​

/selinux/ 伪​文​件​系​统​包​括​内​核​子​系​统​最​常​使​用​的​各​种​命​令​。​这​个​类​型​的​文​件​系​统​与 /proc/ 伪​文​件​系​统​非​常​相​似​。​

系​统​管​理​员​和​用​户​通​常​不​需​要​直​接​操​作​这​个​部​件​。​

以​下​实​例​显​示​一​个 /selinux/ 目​录​的​示​范​内​容​:

-rw-rw-rw-  1 root root 0 Sep 22 13:14 access
dr-xr-xr-x  1 root root 0 Sep 22 13:14 booleans
--w-------  1 root root 0 Sep 22 13:14 commit_pending_bools
-rw-rw-rw-  1 root root 0 Sep 22 13:14 context
-rw-rw-rw-  1 root root 0 Sep 22 13:14 create
--w-------  1 root root 0 Sep 22 13:14 disable
-rw-r--r--  1 root root 0 Sep 22 13:14 enforce
-rw-------  1 root root 0 Sep 22 13:14 load
-r--r--r--  1 root root 0 Sep 22 13:14 mls
-r--r--r--  1 root root 0 Sep 22 13:14 policyvers
-rw-rw-rw-  1 root root 0 Sep 22 13:14 relabel
-rw-rw-rw-  1 root root 0 Sep 22 13:14 user

例​如​,对 enforce 文​件​运​行 cat 命​令​会​显​示​一​个 1(强​制​模​式​)或 0(容​许​模​式​)。​

4.1.2.2. SELinux 配​置​文​件​

以​下​章​节​描​述 SELinux 配​置​和​政​策​文​件​,以​及​在 /etc/ 目​录​中​相​关​的​各​种​文​件​系​统​。​

4.1.2.2.1. /etc/sysconfig/selinux 配​置​文​件​

在 红帽企业 Linux下​,可​以​使​用​两​种​方​法​来​配​置 SELinux:使​用 安全级别配置工具 (system-config-securitylevel) 或​手​动​编​辑​配​置​文​件 (/etc/sysconfig/selinux)。​

/etc/sysconfig/selinux 是​启​动​或​中​止 SELinux 的​主​要​配​置​文​件​,也​可​以​用​来​设​定​哪​些​政​策​需​要​在​系​统​上​被​强​制​执​行​,以​及​如​何​强​制​执​行​它​们​。​

备​注​

/etc/sysconfig/selinux 包​含​一​个​连​接​到​实​际​的​配​置​文​件​(/etc/selinux/config)的​符​号​链​接​。​

以​下​解​释​一​整​套​可​供​配​置​使​用​的​子​选​项​:

  • SELINUX=enforcing|permissive|disabled — 在​一​个​系​统​上​定​义 SELinux 最​高​级​别​(top-level)的​状​态​。​

    • enforcing — SELinux 安​全​政​策​被​强​制​执​行​。​

    • permissive — SELinux 系​统​输​出​警​告​信​息​,但​不​强​制​执​行​安​全​政​策​。​

      这​可​以​被​用​来​进​行​故​障​排​除​。​在​容​许​模​式​中​,系​统​会​记​录​更​多​的​拒​绝​信​息​。​这​是​因​为​一​些​主​观​项​在​容​许​模​式​中​可​以​继​续​进​行​的​动​作​在​强​制​模​式​中​会​被​拒​绝​。​例​如​,当​在​容​许​模​式​中​访​问​一​个​目​录​树​时​,访​问​每​一​级​目​录​时​都​会​产​生 avc: denied 信​息​。​而​在​强​制​模​式​中​,SELinux 早​就​起​初​阶​段​被​中​止​,以​至​于​避​免​了​其​它​拒​绝​信​息​的​产​生​。​

    • disabled — SELinux 被​完​全​中​止​。​SELinux 挂​机​程​序​就​从​内​核​中​脱​离​,那​么​伪​文​件​系​统​就​脱​离​注​册​。​

      小​诀​窍​

      在 SELinux 中​止​期​间​所​运​行​的​动​作​可​能​会​导​致​文​件​系​统​不​再​拥​有​正​确​的​安​全​上​下​文​,即​由​该​政​策​定​义​的​安​全​上​下​文​。​重​新​标​记​文​件​系​统​的​最​好​方​法​就​是​创​建​标​识​文​件 /.autorelabel 并​且​重​新​启​动​机​器​。​这​会​使​重​新​标​识​的​工​作​在​引​导​进​程​的​早​期​进​行​,也​就​是​在​任​何​其​它​进​程​运​行​前​进​行​。​使​用​这​个​方​法​可​以​防​止​在​错​误​的​安​全​上​下​文​中​创​建​文​件​;或​在​错​误​的​上​下​文​中​启​动​。​

      在​启​用 SELinux 来​重​新​标​识​这​个​文​件​系​统​之​前​使​用 fixfiles relabel 命​令​是​可​能​的​。​但​是​,这​个​方​法​并​不​是​好​方​法​,因​为​在​此​进​程​完​成​后​,有​些​进​程​仍​然​有​可​能​在​错​误​的​安​全​上​下​文​中​潜​在​运​行​,而​这​些​进​程​也​可​能​在​错​误​的​安​全​上​下​文​中​创​建​文​件​。​

    备​注​

    在​每​个​配​置​行​最​后​添​加​不​必​要​的​空​格​,或​在​文​件​的​最​后​添​加​额​外​的​行​都​可​能​会​导​致​无​法​预​测​的​行​为​发​生​。​为​了​保​险​,请​删​除​不​必​要​的​空​格​。​

  • SELINUXTYPE=targeted|strict — 指​定​哪​个​政​策 SELinux 应​该​被​强​制​执​行​。​

    • targeted — 只​有​选​定​的​网​络​守​护​进​程​会​得​到​保​护​。​

      重​要​信​息​

      在​默​认​选​定​的​政​策​下​,以​下​守​护​进​程​得​到​保​护​:dhcpd, httpd (apache.te)、​named、​nscd、​ntpd、​portmap、​snmpd、​squidsyslogd。​系​统​的​其​它​守​护​进​程​在 unconfined_t 域​中​运​行​。​这​个​域​允​许​其​安​全​上​下​文​中​的​主​观​项​和​客​观​项​使​用​标​准​的 Linux 安​全​系​统​来​运​作​。​

      这​些​守​护​进​程​的​政​策​文​件​位​于 /etc/selinux/targeted/src/policy/domains/program 文​件​中​。​这​些​文​件​可​能​会​在​更​新​的 红帽企业 Linux 版​本​发​行​时​有​所​改​变​。​

      这​些​守​护​进​程​的​安​全​政​策​的​强​制​执​行​可​以​通​过​使​用​由 安全级别配置工具system-config-securitylevel)控​制​的​布​尔​值​被​开​启​或​关​闭​。​

      把​一​个​选​定​的​守​护​进​程​布​尔​值​设​为 0(零​)会​中​止​对​这​个​守​护​进​程​的​安​全​政​策​变​迁​。​例​如​,您​可​以​把 dhcpd_disable_trans 设​定​为 0 来​防​止 initdhcpdunconfined_t 域​转​换​到 dhcpd.te 中​指​定​的​域​。​

      使​用 getsebool -a 命​令​列​出​所​有 SELinux 布​尔​值​。​以​下​是​使​用 setsebool 命​令​来​设​定 SELinux 布​尔​值​的​一​个​实​例​。​-P 选​项​使​这​一​改​变​成​为​永​久​效​果​。​如​果​没​有​这​个​选​项​,布​尔​值​会​在​重​新​启​动​时​被​重​新​设​定​为 1。​

      setsebool -P dhcpd_disable_trans=0
      
    • strict — 对​所​有​守​护​进​程​进​行​完​全​的 SELinux 保​护​。​安​全​上​下​文​会​为​系​统​中​的​所​有​主​客​观​项​设​定​,并​且​每​个​动​作​都​由​安​全​政​策​强​制​服​务​器​进​行​处​理​。​

  • SETLOCALDEFS=0|1 — 控​制​本​地​定​义​(用​户​和​布​尔​值​)如​何​被​设​定​。​如​果​这​个​值​设​定​为 1,这​些​定​义​被 来​自 /etc/selinux/<policyname> 中​文​件​的 load_policy 控​制​。​如​果​这​个​值​设​定​为 0,则​由 semanage 控​制​。​

    注​意​

    如​果​您​不​是​完​全​了​解​这​个​改​变​所​带​来​的​影​响​,请​不​要​改​变​它​的​默​认​值​(0)。​

4.1.2.2.2. /etc/selinux/ 目​录​

/etc/selinux/ 目​录​是​所​有​政​策​文​件​和​主​要​配​置​文​件​所​在​的​首​要​位​置​。​

以​下​实​例​显​示 /etc/selinux/ 目​录​中​的​示​范​内​容​:

-rw-r--r--  1 root root  448 Sep 22 17:34 config
drwxr-xr-x  5 root root 4096 Sep 22 17:27 strict
drwxr-xr-x  5 root root 4096 Sep 22 17:28 targeted

这​两​个​子​目​录 strict/targeted/ 是​含​有​同​一​个​名​称​的​政​策​所​有​文​件​的​特​定​目​录​(即​,stricttargeted。​

4.1.2.3. SELinux 工​具​程​序​

以​下​是​常​用​的 SELinux 工​具​程​序​:

  • /usr/sbin/setenforce — 实​时​修​改 SELinux 运​行​的​模​式​。​

    例​如​:

    setenforce 1 — SELinux 以​强​制​模​式​运​行​。​

    setenforce 0 — SELinux 在​容​许​模​式​下​运​行​。​

    要​真​正​中​止 SELinux,您​需​要​在 /etc/sysconfig/selinux 中​指​定​适​当​的 setenforce 参​数​;或​需​要​在 /etc/grub.conf 文​件​中​或​系​统​引​导​时​把​参​数 selinux=0 传​递​给​内​核​。​

  • /usr/sbin/sestatus -v — 显​示​一​个​运​行 SELinux 的​系​统​详​细​状​态​。​以​下​实​例​显​示 sestatus -v 输​出​信​息​的​一​个​片​段​:

    SELinux status:                 enabled
    SELinuxfs mount:                /selinux
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy version:                 21
    Policy from config file:        targeted
    
    Process contexts:
    Current context:                user_u:system_r:unconfined_t:s0
    Init context:                   system_u:system_r:init_t:s0
    /sbin/mingetty                  system_u:system_r:getty_t:s0
    
  • /usr/bin/newrole — 在​一​个​新​上​下​文​或​角​色​中​运​行​一​个​新​的 shell。​安​全​政​策​必​须​允​许​转​换​到​新​角​色​。​

    备​注​

    这​个​命​令​只​在​安​装​了 policycoreutils-newrole 软​件​包​后​才​有​效​,严​格​的​和​MLS 安​全​政​策​都​需​要​这​个​软​件​包​。​

  • /sbin/restorecon — 通​过​标​记​带​有​合​适​文​件​或​安​全​上​下​文​的​扩​展​属​性​来​设​定​一​个​或​多​个​文​件​的​安​全​上​下​文​。​

  • /sbin/fixfiles — 在​这​个​文​件​系​统​上​检​查​或​纠​正​安​全​上​下​文​数​据​库​。​

请​参​阅​这​些​工​具​程​序​相​关​的​说​明​书​页​来​获​得​更​详​细​的​信​息​。​

请​参​阅 setoolspolicycoreutils 软​件​包​内​容​来​获​得​所​有​可​用​的​二​进​制​工​具​程​序​的​详​细​信​息​。​要​想​查​看​一​个​软​件​包​的​内​容​,使​用​以​下​命​令​:

rpm -ql <package-name>

4.1.3. 其​它​资​源​

如​需​了​解​更​多​关​于 SELinux 的​信​息​,请​参​阅​以​下​资​源​:

4.1.3.1. 安​装​的​文​档​

  • /usr/share/doc/setools-<version-number>/ 工​具​程​序​的​所​有​文​档​都​包​括​在 setools 软​件​包​中​,包​括​所​有​帮​助​脚​本​、​示​配​置​文​件​范​和​文​档​。​

4.1.3.2. 有​用​的​网​站​

  • http://www.nsa.gov/selinux/ NSA SELinux开​发​队​伍​的​主​页​,许​多​可​供​使​用​的​资​源​都​使​用 HTML 和 PDF 格​式​。​尽​管​这​些​链​接​中​的​很​多​并​不​是​只​适​用​于 SELinux,但​SELinux的​一​些​概​念​也​许​对​您​会​有​所​帮​助​。​

  • http://fedora.redhat.com/docs/ Fedora 文​档​工​程​的​主​页​,包​括 Fedora Core 专​用​的​比​较​新​的​材​料​,因​其​发​行​周​期​比​较​短​。​

  • http://selinux.sourceforge.net SELinux团​体​的​主​页​。​

4.2. SELinux 的​发​展​历​史​和​背​景​信​息​

最​初​,SELinux 是​美​国​国​家​安​全​局 (NSA )[2] 和​其​它​一​些​机​构​的​一​个​开​发​项​目​。​它​是 Flask 操​作​系​统​安​全​结​构​[3]的​一​个​实​现​。​NSA 使​用 Linux Security Modules (LSM ) 结​构​把 SELinux 集​成​到 Linux 的​内​核​中​。​Linus Torvalds 希​望​使​用​模​块​化​的​方​法​来​实​现​系​统​的​安​全​性​,而​不​只​是​简​单​地​把 SELinux 放​入​内​核​。​因​为​这​个​原​因​,LSM 被​创​建​来​把 SELinux 集​成​到​内​核​中​。​

在​最​初​的​阶​段​,SELinux 使​用​存​储​在​一​个​不​被​使​用​的 ext2 inode 区​域​中​的​persistent security IDs (PSIDs)。​这​些​标​识​(如 non-human-readable)被 SELinux 对​应​到​一​个​安​全​上​下​文​标​识​。​但​是​,这​需​要​改​变​所​有​文​件​系​统​的​类​型​来​支​持 PSIDs,因​此​,这​并​不​是​一​个​可​扩​展​的​解​决​方​案​,也​并​不​被 Linux 内​核​的​上​游​社​区​所​支​持​。​

接​下​来​,SELinux 发​展​为 Linux 内​核 2.4.<x> 系​列​的​一​个​可​加​载​的​内​核​模​块​。​这​个​模​块​把 PSIDs 保​存​在​一​个​普​通​文​件​中​,因​此 SELinux 可​以​支​持​更​多​的​文​件​系​统​。​这​个​解​决​方​案​从​性​能​角​度​来​看​并​不​是​最​好​的​,而​且​在​不​同​的​平​台​上​并​不​统​一​。​最​后​,SELinux 代​码​被​上​游​社​区​集​成​到 2.6.x 内​核​中​,它​完​全​支​持 LSM 并​在 ext3 文​件​系​统​上​有 扩​展​的​属​性​(extended attributes) (xattrs )。​SELinux 改​为​使​用 xattrs 来​存​储​安​全​上​下​文​信​息​。​xattr 的​名​称​空​间​(namespace)可​以​使​同​一​个​系​统​中​存​在​的​多​个​安​全​模​块​相​互​独​立​。​

被​上​游​社​区​所​接​受​的​与​内​核​相​关​的​工​作​,以​及​后​续​的 SELinux 开​发​,是 NSA、​红​帽​和 SELinux 开​发​社​区​通​力​合​作​的​结​果​。​

更​多​关​于 SELinux 的​发​展​历​史​可​以​通​过​访​问 http://www.nsa.gov/selinux/ 获​得​。​



[2] NSA 是​美​国​联​邦​政​府​的​信​息​情​报​部​门​,它​负​责​与​信​息​和​情​报​相​关​的​安​全​工​作​。​您​可​以​访​问 NSA 的​网​站 - http://www.nsa.gov/about/,来​获​得​更​详​细​的​信​息​。​

[3] Flask 是​从​一​个​把 Distributed Trusted Operating System (DTOS ) 集​成​到 Fluke 研​究​操​作​系​统​中​的​项​目​发​展​出​来​的​。​Flask 是​这​个​结​构​的​名​称​,它​是​在 Fluke 操​作​系​统​上​实​现​的​。​