TCP_Wrappers 简介

2023-10-07 17:30
文章标签 tcp 简介 wrappers

本文主要是介绍TCP_Wrappers 简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

TCP_Wrappers

 


简介

TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。

工作原理

TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。

TCP_Wrappers的使用

TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,用于拒绝和接受具有TCP_Wrappers控制全的程序,详细信息具体可以查看man帮助,这里我们就做简单的演示和使用(man 5 hosts_access, man 5 hosts_options)

要说明的是当我们启动一个受控制的软件的时候,比如ssh,

不过在刚开始的时候,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制,是都可以连接的,现在我们来说如何设置,禁止和允许连接,配置文件格式遵循如下规则:

daemon_list@host: client_list [:options :option…]

daemon_list: 是程序的列表,可以是多个,是多个时,使用隔开
@host:可以没有,是我们的限制的网卡访问接口(自己的),设置允许或禁止他人从自己的那个网口进入。这一项不写,就代表全部。
client_list:是访问者的地址,如果需要控制的用户较多,可以使用空格或,隔开,格式如下:

  • 基于IP地址: 192.168.10.1 192.168.1.
  • 基于主机名: www.magedu.com .magedu.com 较少用
  • 基于网络/掩码: 192.168.0.0/255.255.255.0
  • 基于net/prefixlen: 192.168.1.0/24(CentOS7)
  • 基于网络组(NIS 域): @mynetwork
  • 内置ACL: ALL, LOCAL, KNOWN, UNKNOWN,PARANOID
    ALL:所有主机
    LOCAL:本地主机
    KNOWN:主机名可解析成ip的
    UNKNOWN:主机名无法解析成IP的
    PARANOID:正向解析与反向解析不对应的主机

 

我以三台虚拟机作为示例:
centOS 7:192.168.111.120
centOS 6:192.168.111.110
centOS 5:192.168.111.130

示例1
现在,我的centOS 6想拒绝centOS 7 的ssh访问:
我在hosts.deny中写:

sshd@192.168.111.110:192.168.111.120

然后我使用centOS 7 连接,就无法连接:

[root@CT73 ~]$ssh 192.168.111.110
ssh_exchange_identification: read:Connection reset by peer

示例2
或者我们还可以这样写(hosts.deny):

in.telnetd,sshd: ALL

这就意味着我们使用ssh,或者telnetd访问这个机器都是无法访问的,然后,我们就在hosts.allow中添加如下一行:

sshd:192.168.111.120

出现了下面的效果:

[root@CT73 ~]$ssh 192.168.111.110
root@192.168.111.110's password:
Last login: Thu Sep 28 14:51:57 2017 from 192.168.111.120
[root@CT691 ~]#

我们就可以连接了,我们想要访问其他主机的资源,在连接过程中,对方的机器会按照顺序先检查/etc/hosts.allow,再检查/etc/hosts.deny。如果在allow中允许连接,就可以连接的上,即便是又在deny中添加了限制也没效果,但是在allow中没有添加你的机器,但是在deny中设置了你的主机无法连接,那你是无法连接上对方的主机的。

示例3
我们还可以禁止后允许某个网段进行连接,以禁止为例:

in.telnetd,sshd@192.168.111.110:192.168.37.

这样的话192.168.37.网段的所有机器都无法通过这连个程序访问到我的机器。

示例4
现在,我们使用一个关联词,EXCEPT,host.deny文件配置如下:

in.telnetd,sshd: ALL

hosts.allow文件配置如下:

sshd:192.168.111. EXCEPT 192.168.111.120

此时,centOS 7 能否访问centOS 6呢:

[root@CT73 ~]$ssh 192.168.111.110
ssh_exchange_identification: read:Connection reset by peer

实验证明,我们是无法连接的,这是由于,虽然我们在hosts.allow文件中设置了整个192.168.111.这个网段都可以访问,但是使用EXCEPT关键字将192.168.111.120排除, 所以我们还是不能连接。
然后,我们重写一下hosts.allow文件:

sshd:192.168.111. EXCEPT 192.168.111.

然后,我们使用centOS 5和centOS 7连接:

[root@CT511 ~]#ssh 192.168.111.110
ssh_exchange_identification:Connection closed by remote host
[root@CT73 ~]#ssh 192.168.111.110
ssh_exchange_identification:Connection closed by remote host

 

一些选项

上面还有 [ :options :option… ]选项,我们我们看看他们是咋用的
(更多使用方法查看 man 5 hosts_options)

  • deny 主要用在/etc/hosts.allow定义“拒绝”规则
    如: vsftpd: 172.16. :deny
  • allow 主要用在/etc/hosts.deny定义“允许” 规则
    如: vsftpd:172.16. :allow
  • spawn 启动一个外部程序完成执行的操作
  • twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null

示例1
在hosts.allow拒绝连接:

sshd:192.168.111.120:deny

这样,虽然我们虽然在allow文件中添加可用规则,但是我们使用了:deny,生生的还是将该地址给拒绝了:

[root@CT73 ~]$ssh 192.168.111.110
ssh_exchange_identification: read:Connection reset by peer

实例2
在hosts.deny拒绝连接:

sshd:192.168.111.120:allow

这样,虽然我们虽然在deny文件中添加不可用规则,但是我们使用了:allow,依旧允许该IP连接:

[root@CT73 ~]$ssh 192.168.111.110
root@192.168.111.110's password:
Last login: Thu Sep 28 15:44:27 2017 from 192.168.111.130
[root@CT691 ~]#

实例3
我们可以使用spawn启用外部命令,那么我们就能使用外部命令写日志文件:
在hosts.allow中:

sshd,in.telnetd:192.168.111.:spawn echo "`date +'%%F %%T'` login from client\: %c to %d">>/var/log/tcpwrap.log

我们在使用centOS 7 访问后,看一下日志:

[root@CT691 ~]#tail /var/log/tcpwrap.log
2017-09-2816:27:28 login from client:192.168.111.120 to sshd

在/etc/hosts.allow中添加,允许登录,并记录日志
在/etc/hosts.deny中添加,拒绝登录, 并记录日志
%c 客户端信息
%s 服务器端信息
%d 服务名
%p 守护进程的PID
%% 代表%
: 符号转译

实例4
我们可以使用twist拒绝用户访问,并返回一个信息:

sshd,in.telnetd:192.168.111.:twist echo "Hello I am T_T !"

然后我们进行连接,使用调试模式,因为默认ssh是看不到返回信息的,telnet可以:

 

最后我们再说一个调试工具:
tcpdmatch  [-d]  daemon[@host]  client
-d 测试当前目录下的 hosts.allow和hosts.deny

这样,在别人没有连接的时候,我们就可以知道我们设置的那些IP是否可以连接我们的主机:
(hosts.deny)

sshd:192.168.111.120
[root@CT691 ~]#tcpdmatch -d ssh 192.168.111.120
client: address 192.168.111.120
server: process ssh
access: granted

这篇关于TCP_Wrappers 简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/159302

相关文章

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供

LIBSVM简介

LIBSVM简介 支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些