第十六章 tcp_wrappers
16.1 tcp_wrappers简介
tcp wrappers:Transmission Control Protocol Wrappers为由inetd生成的服务提供了增强的安全性。TCP Wrappers是一种对使用/etc/inetd.sec的替换方法。
TCP Wrappers提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未经授权的访问的方法。
tcp_wrapper是一种对基于TCP协议开发并提供服务的应用程序提供的一层访问控制工具。
tcp_wrapper一般翻译为tcp包装器,能够实现监听在某一tcp服务上,对于进出某本主机区访问某一套接字的应用做检查且能够实现授权访问。
16.2 tcp_wrappers工作模式
TCP Wrappers使用访问控制列表(ACL)来防止欺骗。ACL是/etc/hosts.allow和/etc/hosts.deny文件中的系统列表。
在配置为验证主机名到IP地址映射,以及拒绝使用IP源路由的软件包时,TCP Wrappers提供某些防止IP欺骗的保护。
16.3 tcp_wrappers工作原理
在服务器向外提供的tcp服务上包装一层安全检测机制。外来连接请求首先通过这个安全检测,获得安全认证后才可被系统服务接受。
TCP Wrapper作为客户服务器模型的一部分,依赖/etc/hosts.allow和/etc/hosts.deny文件作为简单访问控制语言的基础,可用于任何包含了libwrap.so的daemon程序使用。访问控制语言限定的规则是:基于客户端地址和客户端试图访问的daemon程序,选择性地允许客户端访问服务器在本地系统上的daemon程序。
简单来说,tcp_wrapper本身是一个守护进程,工作于tcp协议上。iptables工作于内核的tcp/ip协议栈上,而tcp_wrapper工作于内核的tcp/ip协议栈的tcp协议上,且是在tcp的入口处启动一个进程,监视每一个tcp服务的相关请求,同时把这个报文本身跟tcp_wrapper的配置文件中的放行规则或拒绝规则中的规则进行对比。匹配后进行相应的操作(放行或拒绝访问)。
tcp_wrapper工作在tcp包文所要经过的位置上,有且只有一个位置。工作于tcp协议层,比工作在网络层的iptables更高一层,因此可以和iptables结合使用。但tcp_wrapper的控制完成之后,iptables就无需控制了,同理,iptables控制完成之后,tcp_wrapper也无需控制了。
那么既然iptables也可以进行控制,为什么还要用tcp_wrapper呢?其一是因为tcp_wrapper配置非常简单,tcp_wrapper是一个用户空间的工具;其二是因为tcp_wrapper只能对基于TCP协议开发并调用了libwrap库的应用程序进行访问控制,而iptables则无此限制。
tcp_wrapper基于库调用实现其功能:调用libwrap库
只有基于TCP协议开发并调用了libwrap库的应用程序才能使用tcp_wrapper对其进行访问控制。
判断服务是否能够由tcp_wrapper进行访问控制的方法有以下两个方向:
a) 动态编译的程序:使用ldd命令,其如果调用了libwrap库则表示支持tcp_wrapper控制
b) 静态编译的程序:使用string命令(string /path/to/program)查看应用程序文件,其结果如果出现以下内容则表示支持tcp_wrapper控制
hosts.allow
hosts.deny
16.4 tcp_wrapper配置
16.4.1 tcp_wrapper配置文件
tcp_wrapper的配置文件有两个:/etc/hosts.allow和/etc/hosts.deny
16.4.2 tcp_wrapper配置
在配置文件中为各服务分别定义访问控制规则实现访问控制,文件中的规则是即时生效的。
配置文件语法:
daemon_list: client_list[:options]
常用的daemon_list格式:
应用程序的文件名称,而非服务名
应用程序的文件名称列表,彼此间使用逗号分隔,例如:sshd,vsftpd
ALL:表示所有服务
常用的client_list格式:
IP地址
主机名
网络地址:必须使用完整格式的掩码(如255.255.255.0),不能使用前缀格式掩码(如/24)
简短格式的网络地址:如172.16. 表示172.16.0.0/255.255.0.0
ALL:所有主机
KNOWN:所有可以解析主机名的主机
UNKNOW:所有无法解析主机名的主机
PARANOID:主机名的正反解结果不匹配
EXCEPT:除了。如在hosts.allow文件中如下定义:
vsftpd: 172.16. EXCEPT 172.16.100.1 #表示允许172.16网段的主机(除了172.16.100.1)访问vsftpd vsftpd: 172.16. EXCEPT 172.16.100.0/255.255.255.0 EXCEPT 172.16.100.1 #表示允许172.16网段的主机(除了172.16.100.0子网)和172.16.100.1这台主机访问vsftpd
常用的[options]:
deny:拒绝,主要用于hosts.allow文件中,实现deny功能
allow:允许,主要用于hosts.deny文件中,实现allow功能
spawn:启动额外应用程序,常用于实现记录日志。如在hosts.deny文件中如下定义:
vsftpd: ALL :spawn /bin/echo `date` login attempt from %c to %s, %d >> /var/log/vsftpd.deny.log #表示拒绝所有人访问vsftpd,若有人来访问记录至/var/log/vsftpd.deny.log文件中
%c:client ip
%s:server ip
%d:daemon name
tcp_wrapper规则检查逻辑:
client --> /etc/hosts.allow --> (Y) --> ALLOW
client --> /etc/hosts.allow --> (N) --> /etc/hosts.deny --> (Y) --> DENY
client --> /etc/hosts.allow --> (N) --> /etc/hosts.deny --> (N) --> ALLOW
下图是tcp_wrapper的工作流程:
转载于:https://blog.51cto.com/itchentao/1943001
第十六章 tcp_wrappers相关推荐
- 第十六章、Raid及mdadm命令
第十六章.Raid及mdadm命令 10_01_Raid及mdadm命令之一 (17 - $) 各种接口的速率: IDE: 133Mbps SATA: 300Mbps, 600Mbps, 6Gbps ...
- 第十六章 推荐系统-机器学习老师板书-斯坦福吴恩达教授
第十六章 推荐系统 16.1 问题规划 16.2 基于内容的推荐系统 16.3 协同过滤 16.4 协同过滤算法 16.5 向量化:低秩矩阵分解 16.6 实现细节:均值规范化 16.1 问题规划 1 ...
- 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理
第二十六章.Linux核心编译与管理 最近升级日期:2009/09/18 我们说的 Linux 其实指的就是核心 (kernel) 而已.这个核心控制你主机的所有硬件并提供系统所有的功能,所以说,他重 ...
- 鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)
第十六章.例行性工作排程 (crontab) 最近升级日期:2009/09/11 学习了基础篇也一阵子了,你会发现到为什么系统常常会主动的进行一些任务?这些任务到底是谁在配置工作的?如果你想要让自己设 ...
- pdfstamper生成pdf无法显示汉字_正点原子STM32F4/F7水星开发板资料连载第四十六章 汉字显示实验...
1)实验平台:正点原子水星 STM32F4/F7 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载 ...
- 判断按键值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...
1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十六章电容 ...
- 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...
1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十六章 ...
- 第三百三十六章 斗宗强者间的大战!
第三百三十六章 斗宗强者间的大战! <script language="javascript" src="/js/style2.js"></s ...
- 构建之法第一、二、十六章
<构建之法>第一.二.十六章疑问 我通过阅读发现这是一本十分有趣的书.不同于别的书的晦涩难懂,<构建之法>利用浅显易懂的语言,贴近生活的例子向我们讲述了软件工程的内容. 第一章 ...
最新文章
- python培训好学吗-人工智能“速成班”Python好学吗 小心别被忽悠了
- C++ Primer 5th笔记(6)chapter6 函数:函数指针
- Python中面向对象的讲解(2)
- a 中调用js的几种方法
- 使用迭代器时如何避免ConcurrentModificationException
- CentOS7 编译安装golang和rpm安装golang
- This is my first time to write blog
- spring MongoDB 集成(分页)
- autojs今日头条急速脚本
- U盘检测及量产工具大合集
- 微信 html5 动图格式,微信真人动态表情包 怎么给自己录制GIF动态图片 你也可以录制搞笑微信gif图片;...
- MT【252】椭圆内接三角形内切圆半径
- 【课程下载】基于Cocos2d-x游戏引擎实战开发超人
- 分布式session解决方案
- RecyclerView的canScrollVertically方法踩坑
- 关于提取千位百位十位个位数字
- 运用R语言绘制小提琴图
- mysql查询每门课程成绩最好的前两名学生id和姓名
- RealView编译器常用特有功能
- Frame 与JFrame 的区别