linux培训系列第七讲.pdf

上传人:赵** 文档编号:50070640 上传时间:2022-10-12 格式:PDF 页数:54 大小:110.40KB
返回 下载 相关 举报
linux培训系列第七讲.pdf_第1页
第1页 / 共54页
linux培训系列第七讲.pdf_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《linux培训系列第七讲.pdf》由会员分享,可在线阅读,更多相关《linux培训系列第七讲.pdf(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、rrktqt的个人空间Linux培训系列作者:红联Linux培训系列第七讲将介绍 TCP/IP 和以太网 Linux 联网的基本原理,说明如何使用 inetd 和 xinetd 超级服务器,提供保护 Linux 系统的重要技巧,还将说明如何设置和使用 Linux 打印服务器。内容基础,语言简短简洁红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章及教程基本能满足不同水平的朋友学习。红联Linux门户:红联Linux论坛: Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联目录TCP/IP 联网TCP/IP 联网仅有以太网还不太够解决方案:

2、以太网上的 TCP/IPIP 地址简介将 IP 地址与以太网接口关联使用 ifconfig-aTCP/IP 在运行了名称解析限制使用 DNS连接至外部世界因特网服务因特网服务inetd 简介配置 inetd:/etc/services配置 inetd;/etc/inetd.conf禁用服务使用初始脚本停止启动 inetd用手工方式停止启动 inetdTCP 封装器简介用 TCP 封装器进行日志记录用 TCP 封装器限制对本地用户的访问用 TCP 封装器将访问限制为已知主机xinetd:扩展的 inetdxinetd 配置安全性概述安全性概述日志文件的文件权限root 用户其它文件的文件权限用户

3、文件的文件权限查找 SUID/SGID 程序用 ulimit 设置用户限制用 ulimit 设置 CPU 时间限制关闭未使用的网络服务(超级服务器)关闭未使用的网络服务(独立服务器)测试更改拒绝登录以进行维护iptables(ipchains)简介iptables 和 Linux 信息包过滤器入侵检测 系统日志(syslog)入侵检测 tripwire入侵检测 portsentry常规指南:保持软件为最新打印打印安装打印假脱机程序守护程序(lpd)基本打印机设置(/etc/printcap)创建假脱机文件目录使用打印假脱机程序客户机博客:http:/2/54制作于:2007-01-28 Pow

4、ered by X-Spacerrktqt的个人空间Linux培训系列作者:红联打印至远程 LPD 服务器打印至远程的 MS Windows 或 Samba 服务器Magicfilter调整 printcap 以指向 MagicfilterLinux海量文章海量Linux技术文章博客:http:/3/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联TCP/IP 联网TCP/IP 联网发布时间:2007-01-28 11:42:17简介 设置一个由大量 Linux 机器组成的基于以太网的局域网(LAN)是常见且相对简单的任务

5、。通常,需要做的就是确保 Linux 系统都安装了某种以太网卡。然后,使用以太网电缆将机器连接到中央以太网集线器或交换机。若所有系统都把对相应的以太网卡的支持(以及 TCP/IP 支持)编译到内核中,则就技术而言,这些系统已经具备了在新的以太网 LAN 上通信的一切条件。博客:http:/4/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联仅有以太网还不太够发布时间:2007-01-28 11:42:49尽管有了让 LAN 工作所需的所有硬件和内核支持,仍不会有多大用处。绝大多数 Linux 应用程序与服务并不使用原始的以

6、太网信息包或帧交换信息。相反,它们使用称为 TCP/IP 的高级协议。毫无疑问,您一定听说过TCP/IP 它是一组大体上形成因特网基础的协议(因此得名:传输控制协议网际协议)。博客:http:/5/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联解决方案:以太网上的 TCP/IP发布时间:2007-01-28 11:43:17于是,解决方案就是配置新的以太网 LAN 以使它可以交换 TCP/IP 流量。要理解解决方案是如何工作的,首先需要知道一点有关以太网的知识。特别地,以太网 LAN 上每台机器中的以太网卡都有唯一的硬件

7、地址。网卡在生产时就被分配了硬件地址,硬件地址看起来与下面相似:00:01:02:CB:57:3C博客:http:/6/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联IP 地址简介发布时间:2007-01-28 11:43:49这些硬件地址被用做以太网 LAN 上单个系统的唯一地址。使用硬件地址的话,一台机器可以做一些事情,例如,可以向另一台机器发送以太网帧。这一方法存在的问题是基于 TCP/IP 的通信使用另一寻址方案,即称为IP 地址的寻址方案。IP 地址看起来如下:192.168.1.1博客:http:/7/54制

8、作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联将 IP 地址与以太网接口关联发布时间:2007-01-28 11:44:20为了使以太网 LAN 使用 TCP/IP,需要将每台机器的以太网卡(因而也就是它的硬件地址)与一个 IP 地址关联。幸运的是,在 Linux 下有一个将 IP 地址与以太网接口关联的简便方法。事实上,如果当前正在通过 Linux 使用以太网,那么分发版的系统初始化脚本中很可能有类似如下的命令:ifconfig eth0 192.168.1.1 broadcast 192.168.1.255 netmask

9、 255.255.255.0以上命令中,ifconfig 命令被用来关联 eth0(也就是 eth0 的硬件地址)和 192.168.1.1 IP 地址。另外,还指定了各种其它与 IP 相关的信息,包括广播地址(192.168.1.255)和网络掩码(255.255.255.0)。当命令完成时,eth0 接口将被启用并具有关联的 IP 地址。博客:http:/8/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联使用 ifconfig-a发布时间:2007-01-28 11:44:57可以通过输入 ifconfig-a 查看

10、当前正在运行的所有网络设备,命令执行结果的输出与下面相似:eth0 Link encap:Ethernet HWaddr 00:01:02:CB:57:3C inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisi

11、ons:0 txqueuelen:100 RX bytes:0(0.0 b)TX bytes:0(0.0 b)Interrupt:5 Base address:0 xc400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1065 errors:0 dropped:0 overruns:0 frame:0 TX packets:1065 errors:0 dropped:0 overruns:0 carrier:0

12、 collisions:0 txqueuelen:0 RX bytes:262542(256.3 Kb)TX bytes:262542(256.3 Kb)从上面的输出可以看到一个已配置的 eth0 接口和 lo(localhost)接口。lo 接口是特殊的虚拟接口,它经过配置以使您在即便没有网络的情况下也可以在本地运行 TCP/IP 应用程序。博客:http:/9/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联TCP/IP 在运行了发布时间:2007-01-28 11:45:25当所有网络接口都设置好并与相应的 IP 地

13、址关联后,以太网网络也可以用来传送 TCP/IP 流量。LAN 上的系统现在可以用 IP 地址相互寻址,象 ping、telnet 和 ssh 这样的命令将在机器间正常工作。博客:http:/10/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联名称解析限制发布时间:2007-01-28 11:45:55然而,尽管能够输入 ping 192.168.1.1 这样的命令,但还不能通过名称引用机器。例如,不能输入 ping mybox。要做到这一点,需要在每台 Linux 机器上设置名为/etc/hosts 的文件。在该文件中

14、,要指定一个 IP 地址,以及与每个 IP 地址关联的名称(或多个名称)。因此,如果我有带三个节点的网络,那么我的/etc/hosts 文件看起来可能与下面相似:127.0.0.1 localhost 192.168.1.1 mybox mybox.gentoo.org 192.168.1.2 testbox testbox.gentoo.org 192.168.1.3 mailbox mailbox.gentoo.org 请注意:/etc/hosts 包含“localhost”到 127.0.0.1 IP 地址的强制映射。我还指定了 LAN 上所有系统的主机名称,包括短名称(“mybox”)

15、和全限定名称(“mybox.gentoo.org”)。将这个/etc/hosts 文件复制到每个系统后,我就能够通过名称而不仅是 IP 地址来引用系统了。ping mybox 现在将可以执行了!博客:http:/11/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联使用 DNS发布时间:2007-01-28 11:46:26虽然这种方法可用于小型 LAN,但不便于在拥有许多系统的大型 LAN 上使用。对于这样的配置,通常最好是将所有的 IP 至主机名映射信息存储在一台机器上,然后在这台机器上设置所谓的“DNS 服务器”(域

16、名服务服务器)。然后,可以配置每台机器来联系这台特别的机器以接收最新的 IP 至名称映射。要做到这一点,可以在每台机器上创建一个与下面相似的/etc/resolv.conf 文件:domain gentoo.org nameserver 192.168.1.1 nameserver 192.168.1.2在上面的/etc/resolv.conf 中,我告诉系统所有非限定主机名(如与“testbox.gentoo.org”相对的“testbox”)都应视为本地主机名。我还指定一台运行在 192.168.1.1 上的 DNS 服务器,以及一台运行在 192.168.1.2 上的备份服务器。实际上,

17、几乎所有与网络连接的 Linux PC 都已经在其 resolv.conf 文件中指定了名称服务器,即使它们不在 LAN 上,也是如此。这是因为它们在其因特网服务供应商处被配置为使用 DNS 服务器,以便将主机名映射为 IP 地址(这样,那个系统上的用户就可以浏览 Web 并访问象 这样的著名站点,而无需通过 IP 地址来引用它们!)。博客:http:/12/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联连接至外部世界发布时间:2007-01-28 11:46:56说到与因特网连接,该如何配置我们简单的 3 系统 LAN

18、 以使它与“外部世界”的系统连接呢?通常,我们会购买某种路由器将我们的以太网网络与 DSL 或有线电视调制解调器、T1 或电话线连接。可以用 IP 地址配置这个路由器以使它能够与我们 LAN 上的系统通信。我们可以依次将 LAN 上每个系统都配置为将这个路由器作为其缺省路由或网关使用。这样做的意义在于:对不在我们 LAN 上的系统寻址的任何网络数据将被路由至我们的路由器,路由器再负责将数据转发至我们 LAN 之外的远程系统。通常,分发版的系统初始化脚本会为您处理缺省路由的设置。这些脚本执行该操作所用的命令看起来可能与下面相似:route add-net default gw 192.168.1

19、.80 netmask 0.0.0.0 metric 1 在上述 route 命令中,缺省路由设置为 192.168.1.80 路由器的 IP 地址。要查看系统上所有配置的路由,可以输入 route-n。目标为“0.0.0.0”的路由是缺省路由。博客:http:/13/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联因特网服务因特网服务inetd 简介发布时间:2007-01-28 11:47:47单个 Linux 系统可以提供数十、甚至数百个网络服务。例如,使用 telnet 程序,您可以访问远程系统上的telnet 服

20、务。同样地,使用 ftp 程序,您可与远程系统上的 ftp 服务连接。为了提供这些服务,远程系统运行每个服务器的实例(例如/usr/sbin/in.telnetd 和/usr/sbin/in.ftpd)以接受连接或者运行 inetd。inetd 程序接受每个进入的连接,然后根据其连接的类型启动处理该连接的适当的服务。出于这个原因,inetd 也被称为“因特网超级服务器”。在典型的安装了 Linux 的系统上,inetd 处理大多数进入的连接。只有少数程序(如 sshd 和 lpd)处理它们自己的网络通信而无需依靠 inetd 接受进入的连接。博客:http:/14/54制作于:2007-01-

21、28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联配置 inetd:/etc/services发布时间:2007-01-28 11:48:25上页提到 inetd 根据类型对进入的连接进行分类。每个进入的连接都在 TCP/IP 头中包含一些标识字段。我们最感兴趣的字段是源地址、目标地址协议和端口号。进入连接由 inetd 根据端口号和协议(通常是 TCP 或UDP,请查看/etc/protocols 以获得完整的 inetd 可以提供的服务列表)进行分类。每行都有如下格式:service-name port-number/protocol-name a

22、liases#comment例如,让我们研究最上面的几项:#grep#/etc/services|head-5tcpmux 1/tcp#TCP port service multiplexerecho 7/tcpecho 7/udpdiscard 9/tcp sink nulldiscard 9/udp sink null通常,/etc/services 已经包含所有有用的服务名称和端口。如果您希望添加自己的端口,可以查询已分配端口号列表。博客:http:/15/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联配置 ine

23、td;/etc/inetd.conf发布时间:2007-01-28 11:48:59inetd 的实际配置是在/etc/inetd.conf 中完成的,配置格式如下:service-name socket-type protocol wait-flag user server-program因为服务是在 inetd.conf 中由服务名称而不是端口指定的,所以,为了符合由 inetd 处理的条件,必须将服务列在/etc/services 中。让我们看看/etc/inetd.conf 一些常见的行。例如,telnet 和 ftp 服务:#grep telnet/etc/inetd.conftel

24、net stream tcp nowait root /usr/sbin/in.telnetd#grep ftp/etc/inetd.confftp stream tcp nowait root /usr/sbin/in.ftpd-l-a对这两个服务的配置为:使用 TCP 协议,并以 root 用户的身份运行服务器(in.telnetd 或 in.ftpd)。有关/etc/inetd.conf 中字段的完整说明,请参阅 inetd(8)手册页。博客:http:/16/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联禁用服务

25、发布时间:2007-01-28 11:49:31在 inetd 中禁用服务很简单:只要在/etc/inetd.conf 注释掉该服务所在的行即可。您可能不希望完全除去该行,以便以后需要时可以引用它。例如,有些系统管理员出于安全性的原因宁愿禁用 telnet(因为连接完全是明文):#vi/etc/inetd.confcomment out undesired line#grep.telnet/etc/inetd.conf#telnet stream tcp nowait root /usr/sbin/in.telnetd博客:http:/17/54制作于:2007-01-28 Powered b

26、y X-Spacerrktqt的个人空间Linux培训系列作者:红联使用初始脚本停止启动 inetd发布时间:2007-01-28 11:50:06我们在上页对/etc/inetd.conf 所做的更改将在重新启动 inetd 程序后才生效。大多数分发版在/etc/init.d 或/etc/rc.d/init.d 中有初始脚本:#/etc/rc.d/init.d/inet stopStopping INET services:OK#/etc/rc.d/init.d/inet startStarting INET services:OK 事实上,通常可以使用“restart”作为快捷方式:#/e

27、tc/rc.d/init.d/inet restartStopping INET services:OK Starting INET services:OK 博客:http:/18/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用手工方式停止启动 inetd发布时间:2007-01-28 11:50:44如果上页中的助手脚本不起作用,老式方法甚至更简单。可以使用 killall 命令停止 inetd:#killall inetd可以在命令行调用 inetd 来简单地再次启动它。它会自动在后台运行:#/usr/sbin/i

28、netd有一个快捷方式无需停止 inetd 就可命令它重新读取配置文件:只要向它发送 HUP 信号:#killall-HUP inetd此刻应该不能 telnet 或 ftp 到这个系统,因为 telnet 和 ftp 被禁用。尝试用 telnet localhost 进行检查。如果需要 telnet 或 ftp 访问,所需做的全部就是重新启用它!以下是我所遇到的情况:#telnet localhosttelnet:Unable to connect to remote host:Connection refused博客:http:/19/54制作于:2007-01-28 Powered by

29、 X-Spacerrktqt的个人空间Linux培训系列作者:红联TCP 封装器简介发布时间:2007-01-28 11:51:14tcp_wrappers 包提供了一个名为 tcpd 的很小的守护程序,该程序由 inetd 而不是实际的服务守护程序调用。tcpd 程序将每个进入连接的源地址编入日志,并可以过滤它们而只允许来自可信系统的连接。要使用 tcpd,可以按下列方式将它插入到 inetd 中:ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd-l-atelnet stream tcp nowait root /usr/sbin/tcpd

30、in.telnetd博客:http:/20/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用 TCP 封装器进行日志记录发布时间:2007-01-28 11:51:45缺省情况下,连接不受限制但会被日志记录下来。例如,我们可以重新启动 inetd 以使在前页做的更改生效。然后一些快速调查应该显示已记录的连接:#telnet localhostlogin:(press to abort)#tail-1/var/log/secureFeb 12 23:33:05 firewall in.telnetd440:connect

31、from 127.0.0.1tcpd 将记录 telnet 连接尝试,因此看起来有些东西在工作了。因为 tcpd 提供一致的连接日志记录服务,这就免除了单个服务守护程序每次自己将连接编入日志的需要。事实上,在接受连接的工作方面,它与 inetd 相似,因为那使每个守护程序不需要接受自己的连接。Linux(UNIX)的简单程度真是不可思议!博客:http:/21/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用 TCP 封装器限制对本地用户的访问发布时间:2007-01-28 11:52:16tcpd 程序配置为使用两个文

32、件:/etc/hosts.allow 和/etc/hosts.deny。这两个文件中行的格式为:daemon_list:client_list :shell_command 按以下顺序授权或拒绝访问。搜索在第一次匹配时停止:当与/etc/hosts.allow 中的项匹配时,则授权访问 当与/etc/hosts.deny 中的项匹配时,则拒绝访问 若没有匹配项,则授权访问 例如,若只允许对内部网络进行 telnet 访问,可通过在/etc/hosts.deny 中设置策略(拒绝除 localhost 以外的其它来源的所有连接)着手:in.telnetd:ALL EXCEPT LOCAL博客:h

33、ttp:/22/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用 TCP 封装器将访问限制为已知主机发布时间:2007-01-28 11:52:49无需重新装入 inetd,因为每当 telnet 端口有连接时,就会调用 tcpd。因此我们可以立即尝试:#telnet Trying 10.0.0.1.Connected to .Escape character is.Connection closed by foreign host.哦!被拒绝了!(这是人生中为数不多的几次经历:拒绝表示成功。)要重新启用来自自己网络的访

34、问,可在/etc/hosts.allow 中插入例外:in.telnetd:此刻我们就能够再次成功地用 telnet 访问系统了。而这仅仅触及了 tcp_wrappers 的能力的表面。在 tcpd(8)和 hosts_access(5)手册页中还有有关 tcp_wrappers 的更多信息。博客:http:/23/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联xinetd:扩展的 inetd发布时间:2007-01-28 11:53:19尽管 inetd 是经典的因特网超级服务器,但最近对它进行了多次改写以试图添加特性

35、和更多的安全性。xinetd 程序在许多新近的分发版(包括 Red Hat 和 Debian)中取代了 inetd。部分扩展的特性是:访问控制(内置 TCP 封装器)详尽的日志记录(连接持续时间和失败的连接等等)来自另一个主机的服务重定向 IPv6 支持 通过代码片段而不是一个汇总文件进行配置博客:http:/24/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联xinetd 配置发布时间:2007-01-28 11:54:01xinetd 的配置文件是/etc/xinetd.conf。最常见的情况下,那个文件仅包含为其余

36、服务设置缺省配置参数的几行:#cat/etc/xinetd.confdefaults instances =60 log_type =SYSLOG authpriv log_on_success=HOST PID log_on_failure=HOST RECORDincludedir/etc/xinetd.d文件的最后一行指示 xinetd 从/etc/xinetd.d 目录的文件代码片段读取额外的配置信息。我们快速地看看 telnet 代码片段:#cat/etc/xinetd.d/telnetservice telnet flags =REUSE socket_type =stream w

37、ait =no user =root server =/usr/sbin/in.telnetd log_on_failure+=USERID如您所见,配置 xinetd 并不困难,而且它比 inetd 更直观。您可以在 xinetd(8)、xinetd.conf(5)和 xinetd.log(5)手册页中获得有关 xinetd 的更多信息。在 Web 上也有关于 inetd、tcp_wrappers 和 xinetd 的大量信息。博客:http:/25/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联安全性概述安全性概述发

38、布时间:2007-01-28 11:54:38维护一个完全安全的系统是不可能的。然而,只要勤奋,则有可能使 Linux 机器足够安全,并让大多数偶尔出现的骇客、脚本小子(scrpt-kiddies)以及其它的“坏家伙”止步而去骚扰其他人。请记住:仅仅遵循本教程不会产生一个安全的系统。相反,我们希望您接触到主要主题的多个方面,并向您提供一些有关如何入门的有用示例。Linux 系统安全性可分为两个部分:内部安全性和外部安全性。内部安全性指预防用户无意或恶意地破坏系统。外部安全性指防止未授权用户获得对系统的访问。本章将首先介绍内部安全性,然后介绍外部安全性,最后介绍一些常规指导原则和技巧。博客:ht

39、tp:/26/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联日志文件的文件权限发布时间:2007-01-28 11:55:09内部安全性可以是很大的任务,这要看您对用户的信任程度。这里介绍的指导原则是设计用来防止偶然用户访问敏感信息和防止不公平地使用系统资源。至于文件权限,您可能希望修改以下三种情况的权限:首先,/var/log 中的日志文件不需要是所有人都可以读取的。没有理由让非 root 用户窥视日志。博客:http:/27/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间

40、Linux培训系列作者:红联root 用户其它文件的文件权限发布时间:2007-01-28 11:55:39其次,root 用户的点文件对于普通用户应是不可读的。检查 root 用户主目录中的文件(ls-la)以确保它们受到适当的保护。甚至可以使整个目录仅对 root 用户可读:#cd#pwd/root#chmod 700.博客:http:/28/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用户文件的文件权限发布时间:2007-01-28 11:56:12最后,用户文件在缺省情况下通常被创建为所有人可读。那可能不是用户

41、所期望的,而且它当然不是最好的策略。应该使用与下面类似的命令在/etc/profile 中设置缺省的 umask:if$UID=0;then#root user;set world-readable by default so that#installed files can be read by normal users.umask 022else#make user files secure unless they explicitly open them#for reading by other users umask 077fi应该查询 umask(2)和 bash(1)手册页以获取有

42、关设置 umask 的更多信息。请注意:umask(2)手册页涉及 C 函数,但它所包含的信息也适用于 bash 命令。博客:http:/29/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联查找 SUID/SGID 程序发布时间:2007-01-28 11:56:55寻求 root 访问权的恶意用户总是会在系统上寻找设置了 SUID 或 SGID 位的程序。应该仔细考虑每个程序以确定是否需要将其 SUID 或 SGID 位打开。系统上有些 SUID/SGID 程序可能是根本不需要的。要搜索具有这样性质的程序,可使用 fi

43、nd 命令。例如,可以在/usr 目录中启动对 SUID/SGID 程序的搜索:#cd/usr#find.-type f-perm+6000-xdev-exec ls ;-rwsr-sr-x 1 root root 593972 11-09 12:47./bin/gpg-r-xr-sr-x 1 root man 38460 01-27 22:13./bin/man-rwsr-xr-x 1 root root 15576 09-29 22:51./bin/rcp-rwsr-xr-x 1 root root 8256 09-29 22:51./bin/rsh-rwsr-xr-x 1 root ro

44、ot 29520 01-17 19:42./bin/chfn-rwsr-xr-x 1 root root 27500 01-17 19:42./bin/chsh-rwsr-xr-x 1 lp root 8812 01-15 23:21./bin/lppasswd-rwsr-x-1 root cron 10476 01-15 22:16./bin/crontab在这个清单中,我已经发现了需要更仔细检查的侯选对象:lppasswd 是 CUPS 打印软件分发版的一部分。因为没有在系统上提供打印服务,所以我会考虑除去 CUPS,那也会除去 lppasswd 程序。lppasswd 中可能没有危及安全

45、性的错误,但为什么要在不使用的程序上冒险呢?同样地,应该关闭所有不使用的服务。您总是可以在需要时再启用它们。博客:http:/30/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用 ulimit 设置用户限制发布时间:2007-01-28 11:57:29bash 中的 ulimit 命令提供了限制特定用户的资源使用情况的方法。一旦限制降低,则在进程的生命期内无法提高该限制。此外,该限制会被所有子进程继承。结果是:可以在/etc/profile 中调用 ulimit,而限制将以不能撤消的方式应用于所有用户(假设用户正在运

46、行 bash 或另一个 shell,该 shell 在登录时运行/etc/profile)。要检索当前限制,可使用 ulimit-a:#ulimit-acore file size (blocks,-c)0data seg size (kbytes,-d)unlimitedfile size (blocks,-f)unlimitedmax locked memory (kbytes,-l)unlimitedmax memory size (kbytes,-m)unlimitedopen files (-n)1024pipe size (512 bytes,-p)8stack size (kby

47、tes,-s)unlimitedcpu time (seconds,-t)unlimitedmax user processes (-u)3071virtual memory (kbytes,-v)unlimited以一种能实际提高系统安全性而不会对合法用户造成麻烦的方式设置这些限制是相当复杂的,所以调整这些设置时要小心。博客:http:/31/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联用 ulimit 设置 CPU 时间限制发布时间:2007-01-28 11:58:01作为 ulimit 的一个示例,我们尝试将一

48、个进程的 CPU 时间设置为 1 秒钟,然后用一个忙循环使它超时。一定要确保启动新的 bash 进程(象我们在下面做的那样),以在其中进行尝试;否则将被注销!#time bash#ulimit-t 1#while true;do true;doneKilledreal 0m28.941suser 0m1.990ssys 0m0.017s在上面的示例中,“user”时间加上“sys”时间等于该进程所用的全部 CPU 时间。当 bash 进程到达 2 秒标记时,Linux 断定它超过 1 秒的限制,因此该进程被杀掉。酷吧?注:一秒钟只是示例而已。不要对您的用户这样做!即使几小时也是不对的,因为 X

49、 真地很消耗时间(我当前的会话已用掉了 69+小时的 CPU 时间)。在实际的实现中,您可能要对某些项而不是 CPU 时间执行 ulimit。博客:http:/32/54制作于:2007-01-28 Powered by X-Spacerrktqt的个人空间Linux培训系列作者:红联关闭未使用的网络服务(超级服务器)发布时间:2007-01-28 11:58:55关闭未使用的网络服务一直是提高入侵预防能力的好方法。例如,如果正在运行因特网超级服务器(如本教程前面描述的 inetd 或 xinetd),那么 in.rshd、in.rlogind 和 in.telnetd 通常都在缺省情况下启用

50、。这些网络服务几乎都已被更安全的替代项(如 ssh)所取代。要在 inetd 中禁用服务,只需在/etc/inetd.conf 中在适当的行前面加上“#”将其注释掉;然后重新启动 inetd 即可。(这在本教程前面已有描述,若需要复习,可返回几页快速浏览。)要在 xinetd 中禁用服务,可以执行与/etc/xinetd.d 中适当的代码片段相似的工作。例如,要禁用 telnet,可以将/etc/xinetd.d/telnet 文件的整个内容注释掉,或简单地删除该文件。重新启动 xinetd 以完成此过程。如果正在结合 inetd 使用 tcpd,或如果正在使用 xinetd,还可以选择限制与

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁