tcp_wrapper过滤
1.1 wrap简介
wrap工作在内核空间和应用程序中间的库层次中。在内核接受到数据包准备传送到用户空间时都会经过库层次,对于部分(只是部分)应用程序会在经过库层次时会被wrap库文件阻挡下来检查一番,如果允许通过则交给应用程序。
1.2 查看是否支持wrapper
wrap只会检查tcp数据包,所以称为tcpwrapper。但还不是检查所有类型的tcp数据包,例如httpd就不支持。是否支持,可以通过查看应用程序是否依赖于libwrap.so库文件。(路径/lib64/libwrap.so)
[root@mail ~]# ldd $(which sshd) | grep wrap
libwrap.so. => /lib64/libwrap.so. (0x00007f110efb7000)
[root@mail ~]# ldd $(which vsftpd) | grep wrap
libwrap.so. => /lib64/libwrap.so. (0x00007f1e73185000)
[root@mail ~]# ldd $(which httpd) | grep wrap
说明sshd和vsftpd都支持wrap机制,而apache的httpd不支持。
当然上面grep不出结果只能说明不支持这样的动态链接的方式,有些应用程序可能静态编译进程序中了,如旧版本的rpc应用程序portmap。
是否将wrap功能静态编译到应用程序中,可以通过以下方式查看。
strings $(which portmap) | grep hosts
如果筛选出的结果中有hosts_access或者/etc/hosts.allow和/etc/hosts.deny这两个文件,则说明是支持的。后两个文件正是wrap访问控制的文件。
要注意的是,如果超级守护进程xinetd被wrap控制了,则其下的瞬时守护进程都受wrap控制。
1.3 配置文件格式
hosts.allow和hosts.deny两个文件的语法格式是一样的,如下:
daemon_list: client_list [:options]
【"daemon_list:"的表示方法】:程序名必须是which查出来同名的名称,例如此处的in.telnetd
sshd:
sshd,vsftpd,in.telnetd:
ALL
daemon@host:
最后一项daemon@host指定连接IP地址,针对多个IP的情况。如本机有192.168.100.8和172.16.100.1两个地址,但是只想控制从其中一个ip连接的vsftpd服务,可以写"vsftpd@192.168.100.8:"。
【"client_list"的表示方法】
单IP:192.168.100.8
网段:两种写法:"172.16."和10.0.0.0/255.0.0.0
主机名或域匹配:fqdn或".a.com"
宏:ALL、KNOWN、UNKNOWN、PARANOID、EXCEPT
ALL表示所有主机;LOCAL表示和主机在同一网段的主机;(UN)KNOWN表示DNS是否可以解析成功的;PARANOID表示正解反解不匹配的;EXCEPT表示“除了”。
它们的语法可以man hosts_access。
tcpwrapper的检查顺序:hosts.allow --> hosts.deny --> 允许(默认规则)
例如sshd仅允许172.16网段主机访问。
hosts.allow:
sshd: 172.16.
hosts.deny:
sshd: ALL
telnet服务不允许172.16网段访问但允许172.16.100.200访问。有几种表达方式:
表达方式一:
hosts.allow:
in.telnetd: 172.16.100.200
hosts.deny:
in.telnetd: 172.16.
表达方式二:
hosts.deny:
in.telnetd: 172.16. EXCEPT 172.16.100.200
此法不能写入hosts.allow:"in.telnetd: 172.16.100.200 EXCEPT 172.16."
表达方式三:
hosts.allow:
in.telnetd: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
hosts.deny:
in.telnetd: ALL
EXCEPT的最形象描述是“在其前面的范围内挖一个洞,在洞范围内的都不匹配”。所以hosts.allow中,ALL内有一个172.16的洞是不被allow的,在172.16中又有小洞172.16.100.200是被排除在172.16洞外的,所以172.16.100.200是被allow的。
注意:被EXCEPT匹配到的表示不经过此条规则的检查,而不是反意。例如在allows中指明一个EXCEPT,当有except中的主机被匹配到,表示的不是该主机被拒绝。而是跳过allow检测进入deny的检测。
【:options的表达方式】
:ALLOW
:DENY
:spawn
ALLOW和DENY可以分别写入deny文件和allow文件,表示在allow文件中拒绝在deny文件中接受。如allow文件中:
in.telnetd: 172.16. :DENY
spawn表示启动某程序的意思(/etc/inittab中的respawn表示重启指定程序)。例如启动一个echo程序。
in.telnetd: 172.16 :spawn echo "we are good $(date) >> /var/log/telnetd.log"
tcp_wrapper过滤的更多相关文章
- Linux和Shell回炉复习系列文章总目录
本页内容都是本人回炉Linux时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接右上角叉 ...
- PowerShell过滤文件中的重复内容
Get-Content -Path E:\test11\data.txt | Sort-Object | Get-Unique 源文件: AA0001 2014-06-30 15:27:13.073 ...
- 使用Expression实现数据的任意字段过滤(1)
在项目常常要和数据表格打交道. 现在BS的通常做法都是前端用一个js的Grid控件, 然后通过ajax的方式从后台加载数据, 然后将数据和Grid绑定. 数据往往不是一页可以显示完的, 所以要加分页: ...
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
- 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等
在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...
- .NET深入实战系列--EF到底怎么写过滤条件
本文唯一访问地址:http://www.cnblogs.com/yubaolee/p/DynamicLinq.html 对于系统开发来说,按不同字段进行过滤查询是一种常见的需求.在EF中通常的做法是: ...
- 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...
- ABP框架 - 数据过滤
文档目录 本节内容: 简介 预定义过滤 ISoftDelete 何时可用? IMustHaveTenant 何时可用? IMayHaveTenant 何时可用? 禁用过滤 关于using声明 关于多租 ...
- Entity Framework 6 Recipes 2nd Edition(11-2)译 -> 用”模型定义”函数过滤实体集
11-2. 用”模型定义”函数过滤实体集 问题 想要创建一个”模型定义”函数来过滤一个实体集 解决方案 假设我们已有一个客户(Customer)和票据Invoice)模型,如Figure 11-2所示 ...
随机推荐
- mysql ERROR 1451 (23000)
问题描述:报错如下:ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint提示有外键约束, ...
- python PyInstaller 库
https://www.cnblogs.com/gopythoner/p/6337543.html https://www.cnblogs.com/duan-qs/p/6548875.html htt ...
- Android事件处理的三种方法
一.基于监听 setOnClickListener,setOnLongClickListener.setOnTouchListener 注意:如果onTouchEvent方法return true,则 ...
- CentOS 6下升级Python版本
CentOS6.8默认的python版本是2.6,而现在好多python组件开始只支持2.7以上的版本,比如说我今天遇到的pip install pysqlite,升级python版本是一个痛苦但又常 ...
- 关于Eclipse导入项目jsp出现红色叉的解决办法
简单图解概括 右击项目 到这里就ok 如果没解决就检查下以下三个地方的版本是否一致 如果还不行,有什么疑问可以留言,我会及时帮助解决的
- linux vsftp 简单配置
查看自己是否安装vsftp rpm -qa | grep vsftp rpm -qa 查看自己已安装的包 过滤vsftp systemctl rsetart vsftpd 重启服务 先关闭防火墙 sy ...
- tornadoの2
tornado之日记本—— 1.diary.py: import time from model.database import DataBase from tornado import we ...
- 《python语言程序设计》_第4章_选择
第四章 # 4.1 引言 布尔表达式:选择语句选择的条件. 程序: import math #加载math模块radius=eval(input("Enter an integer:&quo ...
- 协程 及 libco 介绍
libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程.如何实现协程.libco使用等方面了解协程和libco. why协程 为什么使用协程,我们先从server框 ...
- linux 下zip的用法实例
zip命令可以用来将文件压缩成为常用的zip格式.unzip命令则用来解压缩zip文件. 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r yasuo ...