`

第十八章 服务的防火墙管理 xinetd, TCP Wrappers

 
阅读更多
一般来说,系统的防火墙分析主要可以透过封包过滤或者是透过软件分析,我们的 Linux 默认有提供一个软件分析的工具, 那就是 /etc/hosts.deny, /etc/hosts.allow 这两个可爱的配置文件!另外,如果有安装 tcp wrappers 套件时, 我们甚至可以加上一些额外的追踪功能呢!底下就让我们分别来谈谈这些玩意儿吧!

/etc/hosts.allow, /etc/hosts.deny 管理

我们在前面几章知道了要管制 at 的使用可以透过修订 /etc/at.{allow|deny} 来管理,至于 crontab 则是使用 /etc/cron.{allow|deny} 来管理的。那么有没有办法透过个什么机制,就能够管理某些程序的网络使用呢? 就有点像管理某些程序是否能够接受或者是拒绝来自因特网的联机的意思啦!有的!那就是 /etc/hosts.{allow|deny} 啰。

任何以 xinetd 管理的服务,都可以透过 /etc/hosts.allow, /etc/hosts.deny 来配置防火墙。那么什么是防火墙呢?简单的说,就是针对来源 IP 或网域进行允许或拒绝的配置, 以决定该联机是否能够成功达成连接的一种方式就是了。其实我们刚刚修改 /etc/xinetd.d/rsync 里头的 no_access, only_from 也可以进行这方面的防火墙配置。不过,使用 /etc/hosts.allow, /etc/hosts.deny 则更容易集中控管,在配置与查询方面也较为方便! 那么就让我们谈谈这两个文件的配置技巧吧!

其实 /etc/hosts.allow 与 /etc/hosts.deny 也是 /usr/sbin/tcpd 的配置文件,而这个 /usr/sbin/tcpd 则是用来分析进入系统的 TCP 网络封包的一个软件,TCP 是一种面向连接的网络联机封包,包括 www, email, ftp 等等都是使用 TCP 封包来达成联机的喔。 所以啰,顾名思义,这个套件本身的功能就是在分析 TCP 网络数据封包啦!而 TCP 封包的文件头主要记录了来源与目主机的 IP 与 port ,因此藉由分析 TCP 封包并搭配 /etc/hosts.{allow,deny} 的守则比对,就可以决定该联机是否能够进入我们的主机啦。 所以啦,我们要使用 TCP Wrappers 来控管的就是:

来源 IP 或/与 整个网域的 IP 网段;
port (就是服务啦,前面有谈到启动某个端口是 daemon 的责任啊)
基本上只要一个服务受到 xinetd 管理,或者是该服务的程序支持 TCP Wrappers 函式的功能时,那么该服务的防火墙方面的配置就能够以 /etc/hosts.{allow,deny} 来处理啰。换个方式来说,只要不支持 TCP Wrappers 函式功能的软件程序就无法使用 /etc/hosts.{allow,deny} 的配置值啦,这样说,有没有比较清楚啊。不过,那要如何得知一个服务的程序有没有支持 TCP Wrappers 呢,你可以这样简单的处理喔。

范例一:测试一下达成 sshd 及 httpd 这两个程序有无支持 TCP Wrappers 的功能
[root@www ~]# ldd $(which sshd httpd)
/usr/sbin/sshd:
        libwrap.so.0 => /usr/lib64/libwrap.so.0 (0x00002abcbfaed000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00002abcbfcf6000)
....(中间省略)....
/usr/sbin/httpd:
        libm.so.6 => /lib64/libm.so.6 (0x00002ad395843000)
        libpcre.so.0 => /lib64/libpcre.so.0 (0x00002ad395ac6000)
....(底下省略)....
# 重点在于软件有没有支持 libwrap.so 那个函式库啰


ldd (library dependency discovery) 这个命令可以查询某个程序的动态函式库支持状态,因此透过这个 ldd 我们可以轻松的就查询到 sshd, httpd 有无支持 tcp wrappers 所提供的 libwrap.so 这个函式库文件。从上表的输出中我们可以发现, sshd 有支持但是 httpd 则没有支持。因此我们知道 sshd 可以使用 /etc/hosts.{allow,deny} 进行类似防火墙的抵挡机制,但是 httpd 则没有此项功能喔!

配置文件语法

这两个文件的配置语法都是一样的,基本上,看起来应该像这样:

<service(program_name)> : <IP, domain, hostname> : <action>
<服务   (亦即程序名称)> : <IP 或领域 或主机名> : < 动作 >
# 上头的 < > 是不存在于配置文件中的喔!


重点是两个,第一个是找出你想要管理的那个程序的文件名,第二个才是写下来你想要放行或者是抵挡的 IP 或网域呢。 那么程序的文件名要如何写呢?其实就是写下档名啦!举例来说上面我们谈到过 rsync 配置文件内不是有 server 的参数吗? rsync 配置文件内 /usr/bin/rsync 为其参数值,那么在我们这里就得要写成 rsync 即可喔!依据 rsync 的配置文件数据,我们将抵挡的 127.0.0.100, 127.0.0.200, 及放行的 140.116.0.0/16 写在这里,内容有点像这样:

[root@www ~]# vim /etc/hosts.deny
rsync : 127.0.0.100 127.0.0.200 : deny


当然也可以写成两行,亦即是:

[root@www ~]# vim /etc/hosts.deny
rsync : 127.0.0.100       : deny
rsync : 127.0.0.200       : deny


这样一来,对方就无法以 rsync 进入你的主机啦!方便吧!不过,既然如此,为什么要配置成 /etc/hosts.allow 及 /etc/hosts.deny 两个文件呢?其实只要有一个文件存在就够了, 不过,为了配置方便起见,我们存在两个文件,其中需要注意的是:

写在 hosts.allow 当中的 IP 与网段,为默认『可通行』的意思,亦即最后一个字段 allow 可以不用写;
而写在 hosts.deny 当中的 IP 与网段则默认为 deny ,第三栏的 deny 亦可省略;
这两个文件的判断依据是: (1) 以 /etc/hosts.allow 为优先,而 (2) 若分析到的 IP 或网段并没有记录在 /etc/hosts.allow ,则以 /etc/hosts.deny 来判断。
也就是说, /etc/hosts.allow 的配置优先于 /etc/hosts.deny 啰!基本上,只要 hosts.allow 也就够了,因为我们可以将 allow 与 deny 都写在同一个文件内,只是这样一来似乎显得有点杂乱无章,因此,通常我们都是:

允许进入的写在 /etc/hosts.allow 当中;
不许进入的则写在 /etc/hosts.deny 当中。
此外,我们还可以使用一些特殊参数在第一及第二个字段喔!内容有:

ALL:代表全部的 program_name 或者是 IP 都接受的意思,例如 ALL: ALL: deny
LOCAL:代表来自本机的意思,例如: ALL: LOCAL: allow
UNKNOWN:代表不知道的 IP 或者是 domain 或者是服务时;
KNOWN:代表为可解析的 IP, domain 等等信息时;

再强调一次,那个 service_name 其实是启动该服务的程序,举例来说, /etc/init.d/sshd 这个 script 里面, 实际上启动 ssh 服务的是 sshd 这个程序,所以,你的 service_name 自然就是 sshd 啰! 而 /etc/xinetd.d/telnet (你的系统可能尚未安装) 内有个 server 的配置项目, 那个项目指到 in.telnetd 这个程序来启动的喔!要注意的很!(请分别使用 vi 进这两支 scripts 查阅) 好了,我们还是以 rsync 为例子来说明好了,现在假设一个比较安全的流程来配置,就是:

只允许 140.116.0.0/255.255.0.0 与 203.71.39.0/255.255.255.0 这两个网域,及 203.71.38.123 这个主机可以进入我们的 rsync 服务器;
此外,其他的 IP 全部都挡掉!
这样的话,我可以这样配置:

[root@www ~]# vim /etc/hosts.allow
rsync:  140.116.0.0/255.255.0.0
rsync:  203.71.39.0/255.255.255.0
rsync:  203.71.38.123
rsync:  LOCAL

[root@www ~]# vim /etc/hosts.deny
rsync: ALL  <==利用 ALL 配置让所有其他来源不可登陆


转自:http://vbird.dic.ksu.edu.tw/linux_basic/0560daemons_3.php
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    用TCP Wrappers加固Linux.pdf

    TCP Wrappers是一个安全工具,它通过控制 `/etc/hosts.allow` 和 `/etc/hosts.deny` 两个配置文件,来决定哪些远程主机和服务可以访问系统上的网络服务。 首先,`hosts.allow` 文件用于指定允许访问的主机和服务,...

    简析Suse Linux的xinetd服务.pdf

    总的来说,Suse Linux的xinetd服务是一个功能强大的网络服务管理工具,它简化了对多个轻量级网络服务的管理,并提供了日志记录和安全控制功能。了解并熟练掌握xinetd的使用,对于管理和维护Suse Linux系统的网络服务...

    xinetd-master.zip

    它作为一款超级Internet服务器,负责管理和控制多种轻量级的网络服务,如TCP/IP协议族中的各种服务。Xinetd的出现旨在提高系统的安全性、效率和灵活性,通过集中式管理和配置,使得系统管理员可以更方便地管理网络...

    redhat9从入门到精通(第一部分)

    第18章 GUI应用程序 第19章 红帽子图形前端 第五部分 Linux联网基础 第20章 TCP/IP基础 第21章 在局域网中管理Linux 第22章 保护Linux网络 第六部分 Linux网络服务 第23章 远程访问与xinetd服务 第...

    dns 等服务的配置

    在IT行业中,Linux系统管理是不可或缺的一部分,而DNS(Domain Name System)服务、iptables防火墙以及TCP Wrappers是其中至关重要的组件。这篇详尽的文章将深入解析这些服务的配置,帮助你更好地理解和管理你的...

    用xinetd简化Linux与Windows的通讯.pdf

    1. **xinetd介绍**: xinetd是inetd服务的扩展版,是一个Internet服务守护进程,能够启动和管理Internet服务。它会在接收到连接请求时启动相应服务,服务完成后自动关闭,从而节省系统资源。xinetd常被称为“超级服务...

    使用xinetd搭建VNCServer

    因此,本文将介绍如何使用xinetd服务来管理VNCServer,使得VNCServer只有在客户端连接时才启动,提高系统安全性和效率。 #### 二、xinetd简介 xinetd是Linux/Unix平台上的一个超级守护进程,它能够根据客户端请求...

    Linux运维-2系统管理-14服务管理-160基于xinetd服务管理.avi

    Linux运维-2系统管理-14服务管理-160基于xinetd服务管理.avi

    xinetd.zip

    xinetd-2.3.14-40.el6.x86_64,xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能...

    xinetd-2.3.15.tar.gz

    超级服务xinetd最新源码下载。 xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。它能提供以下特色:  * 支持对tcp、udp、RPC服务(但是当前对RPC的支持不够稳定)  * 基于时间段的访问控制  * 功能...

    xinetd完整代码

    **xinetd(eXtended Internet Services Daemon)** 是Linux操作系统中的一种超级服务器,它负责管理和控制基于网络的服务。这个“xinetd完整代码”很可能是xinetd的源码包,版本为2.3.15。通过研究这个源码,我们...

    xinetd-2.3.14-34.el6.x86_64.rpm

    xinetd是一个网络服务管理程序,它可以在需要时启动服务,从而提高了系统的安全性,因为它可以限制不必要的网络服务。 描述提到"安装telnet包之前安装",这提示我们xinetd可能作为基础服务,需要在安装其他如telnet...

    ssh防止暴力破解和xinetd超级服务的使用

    ssh防止暴力破解和xinetd超级服务的使用,非常不错的,可以配置提升安全

    071403 xinetd超级守护进程1

    Xinetd(eXtended Internet Services Daemon)被称为“超级守护进程”,它是一个在Linux系统中广泛使用的网络服务管理工具。它的主要职责是管理和控制网络服务,尤其是那些不常使用的或者需要动态开启的服务。在早期...

    xinetd-2.3.14-40.el6.x86_64.rpm

    在命令行下执行 rpm -ivh xinetd*.rpm 进行安装,安装完后,编辑 /etc/xinetd.d/telnet,把disable 的yes 改为no 。执行命令 service xinetd start 即可启动服务,必要时关闭防火墙

    xinetd-2.3.14-18.fc9.i386

    xinetd是一个daemon程序,所有结尾带d的程序都是daemon程序,也...第二个是super daemon,它始终处于sleep状态,直到有人唤醒它,xinetd就是一个super daemon,但它的使命是将一个请求转给其他服务,也就是服务的管理者

    2-3-ssh防止暴力破解和xinetd超级服务的使用.doc

    ssh防止暴力破解和xinetd超级服务的使用

    linux下通过xinetd服务管理 rsync 实现开机自启动

    ### Linux 下通过 xinetd 服务管理 rsync 实现开机自启动 在 Linux 系统中,rsync 是一个非常强大的文件同步工具,它能够帮助用户高效地在两台主机之间进行数据同步。通常情况下,rsync 服务是通过单独的服务配置来...

    xinetd-2.3.14.tar.gz

    linux telnet服务守护进程,在命令行下执行 rpm -ivh xinetd*.rpm 进行安装,安装完后,编辑 /etc/xinetd.d/telnet,把disable 的yes 改为no 。执行命令 service xinetd start 即可启动服务,必要时关闭防火墙

    xinetd-2.3.15-13.el7.x86_64.rpm

    xinetd rpm文件,用来配合haproxy,通过xinetd提供的http服务mycatstatus来让Haproxy进行Mycat服务检测,即检测Mycat存活状态。Haproxy通过调用该http服务获取Mycat运行状态。

Global site tag (gtag.js) - Google Analytics