tcpwrapper

本文介绍了TCPWrapper的功能及其在安全控制方面的作用。TCPWrapper通过监听并验证TCP连接请求来增强服务器的安全性,支持动态和静态链接程序的验证。文章还详细解释了配置文件的使用方法以及如何实现精细的访问控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tcpwrapper

 

这片文章介绍以下tcpwrappertcp的包装器)。

tcpwrapper的作用是对基于tcp的程序进行安全控制。它通过使用/usr/sbin/tcpd这样一个进程来代为监听任何一个使用了tcpwrapper的发起连接的tcp请求。假设sshd接受tcpwrapper的验证,当有一个连接发起ssh连接时先有tcpwrapper进行身份验证,如果通过了验证,则将连接转向sshd,否则直接拒绝连接。

tcpwrapper只能为tcp的连接进行验证。它实际是通过库文件libwrap.so来实现控制的,并不是所有的tcp连接都接受其控制。查看的方法是:1.如果是动态链接的话用 ldd `which COMMAND` | grep libwrap.so 如果结果有着库文件的话说明其接受tcpwrapper的控制;2.如果是静态连接的方式使用命令 strings `which COMMAND` grep hosts 如果结果有hosts.allowhosts.deny这两个文件说明是接受其控制。当对非独立守护进程检查的时候需对xinetd进行检查。

tcpwrapper工作在传输层。其配置文件为/etc/hosts.allow/etc/hosts.deny当服务发起的时候首先/etc/hosts.allowà/etc/hosts.denyà默认是allow。所以如果只想接受某个固定的访问,首先在allow中添加用户,在deny中拒绝所有。

配置文件的语法格式 deamon clients[options]

如果有两块网卡可以在deamon@IP 或是hostname,这样可以实现只对一块儿网卡的控制。切记deamon必须是可执行程序的二进制的名字,而不是进程名。如sshd是有OpenSSH提供的但定义的时候必须写sshd,再如telnet服务在写的时候必须写in.telnetd等。这可以在其启动脚本中找到。因为它只是对二进制本身做控制

egsshd@192.168.0.139192.168.0.172

改变后不需要重启任何服务

在配置文件中有以下几个关于clients本地宏定义:

ALL 表示对所有主机

LOCAL 主机名中不包含域名的主机

UNKNOWN 主机名称无法解析的主机

KNOWN 主机名可以解析的主机

PARANOID 正向解析和反向解析不匹配的结果

对于deamon的宏定义只有ALL一个表示多有接受控制的

clients的表示有

1.          IP 192.168.0.172

2.          NAME www.zlyblog.com

3.          netmask 192.168.0.0/255.255.255.0

4.          NETGROUP @notexample(通过nis域控制)

其主机名后可以加EXCEPT的选项:EXCEPT egsshd 10.0.0.0/255.255.0.0 EXCEPT 10.0.0.100表示允许10.0.0网段中除了10.0.0.100的主机的访问

options可以有如下选项:

allow

deny eg allowin.telnetd 192.168.0.deny表示拒绝这个网段的主机

spawn 表示当tcpwrapper检查到一个访问的时候,执行的一个程序。eg:记录日志      egin.telnetd:192.168.0. :spawn echo “Login attempt from %c to %s “ >> /var/log/tcpwrapper.log        表示当有一个访问的时候记录一下日志

 

其中如上的%c %s我们可以通过man 5 hosts_access 来查看

%a (%A)        The client (server) host address.

 

%c     Client information: user@host, user@address,  a  host  name,  or  just an address, depending on how much information is available.

 

%d     The daemon process name (argv[0] value).

%h (%H)        The client (server) host name or address, if the  host  name  is unavailable.

%n (%N)        The client (server) host name (or "unknown" or "paranoid").

 

%p     The daemon process id.

 

%s     Server  information: daemon@host, daemon@address, or just a dae- mon name, depending on how much information is available.

 

%u     The client user name (or "unknown").

 

%%     Expands to a single '%? character.

 

可以参照上面的内容自己做一下练习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值