tcp_wrapper:简单的基于主机的访问控制工具
一、常用的主机访问控制工具
独立(stand alone)守护进程(httpd,vsftpd)、瞬时(transient)守护进程(rsync,tftp,telnet), 这两类守护进程都支持基于iptables进行控制。哪一端口运行客户端访问,哪一端口不允许客户端访问,基于主机做防火墙时,都能进行控制。
做主机防火墙时,有些瞬时守护进程,甚至是某些独立独立守护进程,还能够接受另一种方式,tcp_wrapper,来控制。
在众多的基于主机的安全访问控制中,tcp-wrapper是简单而易于配置的一种。
在linux下能实现基于主机访问控制的常用工具有三个:iptables、tcp_wrapper、xinetd(超级守护进程)。
二、tcp_wrapper简介
显而易见,只能控制tcp协议下的软件。
简单来说,tcpwrapper本身是一个守护进程,工作于tcp协议上。iptables工作于内核的tcp/ip协议栈上,而tcp_wrapper工作于内核的tcp/ip协议栈的tcp协议上,而且是在tcp的入口处启动一个进程,监视每一个tcp服务的相关请求,同时把这个报文本身跟tcp_wrapper的配置文件中的放行规则或拒绝规则中的规则进行对比。若果一旦匹配,则给予放行或拒绝访问。
工作进程为:tcpd
工作在tcp包文所要经过的位置上,有且只有一个位置。工作于tcp协议层,比工作在网络层的iptables更高一层,因此可以和iptables结合使用。但tcp_wrapper的控制完成之后,iptables就无需控制了,同理,iptables控制完成之后,tcp_wrapper也就无需控制了。二者可以有一个能完成控制就可以了。
iptables既然能完成工作,为什么还需要tcp_wrapper呢?因为tcp_wrapper的配置非常简单。
配置文件:/etc/hosts.allow,/etc/hosts.deny
但是并非所有服务都能接受tcp_wrapper的控制,事实上,tcp_wrapper与其说是一个服务,不如说是一个库更合适。因为所有的守护进程,都是工作在用户空间的,所以与其说tcp_wrapper是一个守护进程,不如说是一个库更合适。
所有的服务都能接受iptables控制,但并非所有都接受tcp_wrapper控制。只有用户在开发某个程序时,如果链接到这个库上,或者说依赖于这个库,就意味着他他是接受tcp_wrapper控制的。
三、使用tcp_wrapper控制
a).只需将受控制程序名写入配置文件即可实现控制:
允许访问:/etc/hosts.allow
拒绝访问:/etc/hosts.deny
b).控制原理
程序链接的库文件,会自动在用户访问服务时,基于tcpd检测
/etc/hosts.allow、/etc/hosts.deny两个配置文件,并判断某一主机是否能够访问服务。
c).匹配机制
1.先检查/etc/hosts.allow,如果被允许,则直接放行;
2.如果/etc/hosts.allow没有匹配项,则检查/etc/hosts.deny;如果有匹配项则禁止访问;
3.如果均无匹配,则默认放行。
d).配置文件语法格式
daemo_list:client_list [:options] daemon_list:一定是应用程序名,不是进程名;如果有多个,则用逗号隔开;如果匹配所有,则用ALL; client_list:IP地址:172.16.100.100主机名称:www.magedu.com网络地址/子网掩码:(子网掩码只能使用长格式)简短格式:如:172.16. 表示 172.16.0.0/255.255.0.0 [:options]deny 使在hosts.allow中选项denyallow 使在hosts.deny中选项allow这样的机制可以让我们只需写一个配置文件就可以将所有配置搞定例: vim /etc/hosts.allowin.telnetd: ALL EXCEPT 172.16.251.105 :denyspawn 发起执行一条命令,比如:如果有人访问访问服务器,别拒绝了,这通常是一种恶意访问,或非正常访问,就可以使用spawn echo一些命令保存至日志中vim /etc/hosts.allowin.telnetd: 172.16 EXCEPT 172.16.251.105 vim /etc/hosts.denyin.telnetd: ALL : spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper.log %c:user@host%s:server@host%h:客户端主机名 %p:服务器上的进程PID获取完整帮助信息:man 5 hosts_access注意:echo的信息无需加引号,否则命令替换不会进行
e).tcp_wrapper有几个内置的宏(Macro)
用于client_list的有:ALL,NONE,UNKNOW(主机名无法解析的地址), PARANOID(正反向解析不匹配的地址) 用于daemon_list的有:ALL 两者都可以都可以用:EXCEPT (排除)例: vim /etc/hosts.allowin.telnetd: 172.16. EXCEPT 172.16.251.105
f).事例
如果我们要定义仅放行某一网段,则定义/etc/hosts.allow放行网段,在/etc/hosts.deny定义拒绝所有主机。
演示控制:telnet
yum install telnet-serverldd `which in.telnetd` 没有显示ldd `which xinetd` 显示有,telnet自己本身不监听程序,而是由xinetd监听,所有它是接受tcp_wrapper控制的。chkconfig telnet onservice xinetd startss -tnl | grep 23仅放行172.16网段:vim /etc/hosts.allowin.telnetd: 172.16.vim /etc/hosts.denyin.telnetd: ALL不用重启,立即生效,因为工作在内核中的,和iptables一样立即生效
总结:
tcp_wrapper确实非常简单而又易于配置。尤其是控制ftp服务时,强烈推荐,因为基于iptables的访问控制与tcp_wrapper相比,真的太复杂了。
转载于:https://blog.51cto.com/hoolee/1405392
tcp_wrapper:简单的基于主机的访问控制工具相关推荐
- 一款简单的基于Web的投票工具(PHP+SQLite 实现)
最近实现了一个简单的投票工具--小兵投票(下文称"本软件"). 本软件是一款简单的基于Web的投票工具,使用 PHP+SQLite 实现. 本软件是一款开 ...
- python性能测试可视化_locust安装及其简单使用----基于python的性能测试工具
1.已安装python3.6 ,安装步骤略 pip安装: pip install locust 检查locust是否安装成功 locust --help 2.安装 pyzmq If you inten ...
- Nginx基于IP的访问控制
当Nginx作为web服务的时候也会有安全功能的模块,可以通过修改配置文件的方式来设置允许和拒绝的IP来访问.有些IP被设置拒绝访问后,访问的时候会出现403,也就是拒绝访问.不过由于IP的数量庞大, ...
- python图片识别验证码软件_基于python图片识别工具(图片识别,车牌,PDF,验证码)...
先上图 不多说. 对于一般的用户来说识别率还是能达到百分之90以上. 已经打包成exe文件.windows用户可以直接使用.要软件的加我QQ python代码: # -*- coding: UTF- ...
- Python简单主机批量管理工具
Python简单主机批量管理工具 一.程序介绍 需求: 简单主机批量管理工具需求:1.主机分组2.主机信息使用配置文件3.可批量执行命令.发送文件,结果实时返回4.主机用户名密码.端口可以不同5.执行 ...
- 针对访问控制列表ACL 与 基于角色的访问控制RBAC进行简单介绍
2019独角兽企业重金招聘Python工程师标准>>> 访问控制列表(Access Control List,ACL) ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每 ...
- 最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具
===================================================== 最简单的基于FFmpeg的libswscale的示例系列文章列表: 最简单的基于FFmpeg ...
- 开源工具利器之基于主机的IDS:Wazuh
声明 好好学习,天天向上 好好跟着蜗牛学苑的邓强老师学习技术原理 官网 前身OSSEC https://www.ossec.net/现在已开源 https://wazuh.com/ https://g ...
- Nginx运行控制虚拟主机和访问控制
目录 一.Nginx服务概述 二.Nginx安装 三.Nginx的运行控制 四.配置文件nginx.conf 1.全局配置 2.I/O事件配置 3.HTTP配置 4.访问状态统计 五.Nginx访问控 ...
最新文章
- 啊里大鱼短信发送API
- redhat5.5安装oracle11g的补丁包,在64位redhat5.5上面安装oracle 11g
- 问题 RadioButtonList+TextBox的复合控件如何做
- Scala集合实现WordCount单词统计代码
- 【一】Drupal 入门之新建主题
- 教你如何挑选深度学习GPU
- python selenium 获取元素下的元素个数_Python + Selenium,分分钟搭建 Web 自动化框架!(送自动化测试书籍)...
- ArcGIS Pro快速汉化方法-汉化GP
- windows计算机搜索文件,win7如何根据文件中的文字搜索文件?教你win7直接搜索文件内容...
- 币圈投资必败的5种“韭菜”人格
- 开机黑屏,硬盘灯不亮,没有自检画面,进不去bios
- kail linux配置无线网络,Kali Linux 无线渗透测试入门指南 第一章 配置无线环境
- ROS集成开发环境 --- RoboWare(安装及学习笔记)
- mbedtls 连接 阿里云物联网
- 2023年4月14日,open ai 还是能接收到短信验证码
- 最简单的python语言程序设计_编程中最简单的语言Python,这样学或许更容易
- 互联网未来7大猜想,互联网营销
- 网页设计简历中个人作品html,网页设计师简历自我评价填写样本
- 基于属性的访问控制(ABAC)
- 为什么有些30岁的程序员代码敲着敲着就创业了