加固Linux系统----保护服务和后台进程
2011-02-23 15:46
253 查看
保护服务和后台进程
服务的安全配置的第一个步骤是,禁用所有不需要的服务。不提供的服务不会为潜在的入侵者所利用,有效地降低了风险。
为了找出所有启用的服务,需要检查若干个位置。另外,要禁用不安全的服务,并使用更为安全的选择来取代它们。例如,telnet 不是加密的,所以,使用加密的 ssh 服务来取代 telnet(见第 2 部分)。
当保护服务时,考虑这些方面:
/etc/inittab
/etc/init.d 中的引导脚本
TCP 封装器(wrappers)
防火墙
/etc/inittab
在引导过程中,
/etc/inittab 中条目的格式是,前面是条目的标签,随后是在哪些运行级下此条目要执行,然后是动作关键字以及包括命令行参数的需要执行的命令。所有这些域都由冒号隔开,典型的条目应该类似这样:
(在
在这个示例中,条目的标签是
为了保护 Linux 系统,您应该理解 /etc/inittab 中所有条目的功能,并禁用潜在不必要的服务,方法是删除那个条目,或者在那一行的开头使用井号注释掉它。
在所有 Linux 系统中,都会有以下两类条目。第一类用来启动名为
/etc/init.d 中的引导脚本
/etc/init.d 中的引导脚本用来启动或者停止系统服务。对于每一个运行级,都有一个 /etc/rcN.d 目录(“N”是运行级的标识),其中包含了指向那些在运行级改变时需要调用的脚本的软链接。
如果链接名以“S”开头,则脚本在进入那个运行级时执行,启动相应的服务;如果以“K”开头,则脚本在退出那个运行级时执行,停止那个服务。
大部分情况下,引导脚本的名称会暗示它所控制的服务。要防止在特定的运行级中会启动某个服务,则删除运行级目录中指向相应引导脚本的链接,或者使用一个不做任何事情的虚脚本取代 /etc/init.d 中原来的引导脚本。
inetd/xinetd 后台进程
也可以在客户机请求时根据需要调用服务。这些请求被转交给超级后台进程
为了安全起见,建议使用
通过用于每个从属后台进程的独立配置文件来配置
清单 1. 配置文件,/etc/xinetd.d/ftp
为了禁用这个服务,参数
为了更详细的访问控制,
为了限制访问,但不完全禁用 ftp 后台进程,您可以如下修改配置文件 /etc/xinetd.d/ftp:
清单 2. 为限制访问而修改过的配置文件,/etc/xinetd.d/ftp
在前面的代码示例中,表示 IP 地址为 172.16.x.x 的主机可以连接到此主机,但地址属于 172.16.1.x、 172.16.2.x、172.16.3.x 和 172.16.10.x 的则不能连接。可见,当使用
服务的安全配置的第一个步骤是,禁用所有不需要的服务。不提供的服务不会为潜在的入侵者所利用,有效地降低了风险。
为了找出所有启用的服务,需要检查若干个位置。另外,要禁用不安全的服务,并使用更为安全的选择来取代它们。例如,telnet 不是加密的,所以,使用加密的 ssh 服务来取代 telnet(见第 2 部分)。
当保护服务时,考虑这些方面:
/etc/inittab
/etc/init.d 中的引导脚本
inetd/
xinetd后台进程
TCP 封装器(wrappers)
防火墙
/etc/inittab
在引导过程中,
init进程会去读取 /etc/inittab 文件中的条目。每一个条目 —— 每一行 —— 都定义了在特定的条件下运行哪个程序。这些程序或者本身是服务,或者是用于启动和停止服务。
init进程能识别若干个称为 运行级(run levels) (由一个字母标识)的状态。当输入了运行级或者发生特定的事件(比如电源故障)时,就会考察那些条目,并执行适当的命令。
/etc/inittab 中条目的格式是,前面是条目的标签,随后是在哪些运行级下此条目要执行,然后是动作关键字以及包括命令行参数的需要执行的命令。所有这些域都由冒号隔开,典型的条目应该类似这样:
my_service:35:once:/usr/local/bin/my_service someparameter
(在
inittab手册中可以找到动作关键字的完全列表。)
在这个示例中,条目的标签是
my_service。当输入的运行级为 3 或 5 时,它将使用参数
someparameter来运行程序
/usr/local/bin/my_service。一旦这个程序被终止,它将不会再重新启动(动作关键字“once”)。
为了保护 Linux 系统,您应该理解 /etc/inittab 中所有条目的功能,并禁用潜在不必要的服务,方法是删除那个条目,或者在那一行的开头使用井号注释掉它。
在所有 Linux 系统中,都会有以下两类条目。第一类用来启动名为
/sbin/getty(或者类似的)的程序,这些通常是用来允许通过 Linux 虚拟控制台或者串行线登录。第二类会运行 /etc/rc.d 目录中通常名为
rc的脚本,并将当前运行级作为参数给出。这个脚本控制服务的启动和停止(接下来会介绍)。
/etc/init.d 中的引导脚本
/etc/init.d 中的引导脚本用来启动或者停止系统服务。对于每一个运行级,都有一个 /etc/rcN.d 目录(“N”是运行级的标识),其中包含了指向那些在运行级改变时需要调用的脚本的软链接。
如果链接名以“S”开头,则脚本在进入那个运行级时执行,启动相应的服务;如果以“K”开头,则脚本在退出那个运行级时执行,停止那个服务。
大部分情况下,引导脚本的名称会暗示它所控制的服务。要防止在特定的运行级中会启动某个服务,则删除运行级目录中指向相应引导脚本的链接,或者使用一个不做任何事情的虚脚本取代 /etc/init.d 中原来的引导脚本。
inetd/xinetd 后台进程
也可以在客户机请求时根据需要调用服务。这些请求被转交给超级后台进程
inetd或者
xinetd。然后超级后台进程确定要启动哪个服务,并将请求传递到相应的后台进程。通常,telnet、ftp、rlogin 等服务使用
inetd或者
xinetd启动。
inetd后台进程在 /etc/inetd.conf 配置,那个文件中包含了关于每一个超级后台进程需要提供的服务的条目。配置 FTP 服务器的条目应该类似这样 ——
ftp stream tcp nowait root /usr/bin/ftpd in.ftpd -el—— 使用井号注释掉它,就可以禁用它。
为了安全起见,建议使用
xinetd。与
inetd相比,
xinetd能够启动基于 rpc 的服务,并支持访问控制。
xinetd可以限制进入连接的速度、来自特定主机的进入连接的数目,或者某个服务的总连接数。
通过用于每个从属后台进程的独立配置文件来配置
xinetd。这些文件位于 /etc/xinetd.d/ 目录中。前面 FTP 服务器的示例配置文件应该称为 called /etc/xinetd.d/ftp,类似这样:
清单 1. 配置文件,/etc/xinetd.d/ftp
service ftp { socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/ftpd server_args = -el disable = yes } |
disable被设置为
yes,如上面示例所示。
为了更详细的访问控制,
xinetd支持以下三个另外的参数:
only_from
no_access
access_time
为了限制访问,但不完全禁用 ftp 后台进程,您可以如下修改配置文件 /etc/xinetd.d/ftp:
清单 2. 为限制访问而修改过的配置文件,/etc/xinetd.d/ftp
service ftp { socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/ftpd server_args = -el disable = no only-from = 192.168.200.3 192.168.200.7 192.168.200.9 only-from += 192.168.200.10 192.168.200.12 172.16.0.0 no_access = 172.16.{1,2,3,10} access_times = 07:00-21:00 } |
only-from和
no_access可以接受数字 IP 地址(最右边的零作为任意数值处理)、IP 地址/网络掩码 范围、主机名以及 /etc/networks 中的网络名。如果组合使用
only-from和
no_access,
xinetd会为每个主机连接寻找最接近的匹配。
在前面的代码示例中,表示 IP 地址为 172.16.x.x 的主机可以连接到此主机,但地址属于 172.16.1.x、 172.16.2.x、172.16.3.x 和 172.16.10.x 的则不能连接。可见,当使用
no_access所用的因数符号时,不需要指定地址的所有四个部分。因数部分必须是地址最右边的部分。
相关文章推荐
- 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。守护进程是在后台运行不与任何控制终端关联,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于
- Linux 后台服务进程
- 开发 Linux 后台服务进程
- Linux 后台服务进程的开发
- Linux系统基础知识(三)进程及服务的控制
- Openwrt(linux)启动服务后台进程守护进程
- [收藏] Linux中系统服务/守护进程 (daemon) 的详细说明
- [收藏] Linux中系统服务/守护进程 (daemon) 的详细说明
- Linux_入门之进程和系统服务的控制
- 获取linux系统的各服务进程与CPU、内存、硬盘空间使用状态
- 加固Linux系统----保护本地文件系统
- Linux系统守护进程详解ntsysv 可以关掉那些服务
- 开发Linux后台服务进程
- <开linux系统挖掘机>linux前台进程与后台进程
- Linux守护进程-系统服务
- 简述Android系统前台进程、可见进程、服务进程、后台进程和空进程的优先级排序原因。
- linux系统查看端口和服务进程
- Linux中系统服务/守护进程 (daemon) 的详细说明
- 开发 Linux 后台服务进程
- 开发 Linux 后台服务进程