inetd程序在系统中是作为一个服务进程出现,它监听许多端口并且在得到客户请求时启动这个端口的服务程序。
早期系统中使用的inetd被称作超级服务器,其实现控制对主机网络连接。当一个请求到达由inetd管理的服务端口,inetd将该请求转发给名为 tcpd的程序。tcpd根据配置文件host.{allow,deny}来判断是否允许服务该请求,如果请求被允许刚相应的服务器程序(如:ftpd、 telnet)将被启动。这个机制也被称为TCP_Wrapper
xinetd(eXended Internet services Daemon)提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。已经逐渐取代了inetd,并且提供了访问控制、加强的日志和资源管理功能,成了Linux系统的Internet标准超级守护进程。很多系统服务都用到了xinetd如:FTP、IMAP、POP和telnet等。/etc/services中所有的服务通过他们的端口来访问服务器的时候,先由xinetd来处理,在唤起服务请求之前,xinetd先检验请求者是否满足配置文件中指定的访问控制规则,当前的访问是否超过了指定的同时访问数目,还有配置文件中指定的其他规则等,检查通过,xinetd将这个请求交付到相应的服务去处理,自己就进入sleep状态,等待下一个请求的处理。
以telnet为例,每当有telnet的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,合乎要求,则会把这次连接原封不动的转给真正的telnet进程,由telnet完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供telnet服务。
#ldd $(which Command) | grep wrap "查看是否支持TCP Wrapper的服务"
[root@rhel6 ~]# ldd `which vsftpd` | grep wrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f58c2cdd000)    "有返回值则表示支持TCP_Wrapper"
[root@rhel6 ~]# ldd `which sshd` | grep wrap  
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fdbbc848000)
·    配置文件
TCP_Wrappers的主要配置文件为:/etc/hosts.allow和/etc/hosts.deny。
/usr/sbin/tcpd进程首先检查/etc/hosts.allow,如果请求访问的主机名或IP包含在此文件中,则允许访问。
如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。如果请求访问的主机名或IP包含在hosts.deny文件中,则访问就被拒绝;
如果都没有,默认许可
·    访问控制规则的格式
访问控制需要加在/etc/hosts.allow和/etc/hosts.deny里,规则格式如下:
       <daemon list>:<client list>[:<option>:<option>:...]
     daemon list        服务进程名列表,如telnet的服务进程名为in.telnetd
     client list            访问控制的客户端列表,可以写域名、主机名或网段,如.example.com或者192.168.1.
     option               可选选项,这里可以是某些命令,也可以是指定的日志文件

  1. [root@rhel6 ~]# cat /etc/hosts.allow
  2. #
  3. # hosts.allow   This file contains access rules which are used to
  4. #               allow or deny connections to network services that
  5. #               either use the tcp_wrappers library or that have been
  6. #               started through a tcp_wrappers-enabled xinetd.
  7. #
  8. #               See 'man 5 hosts_options' and 'man 5 hosts_access'
  9. #               for information on rule syntax.
  10. #               See 'man tcpd' for information on tcp_wrappers
  11. in.telnetd:.xfcy.org 
  12. vsftpd:192.168.0. 
  13. sshd:192.168.0.0/255.255.255.0 
  14. [root@rhel6 ~]# cat /etc/hosts.deny
  15. #
  16. # hosts.deny    This file contains access rules which are used to
  17. #               deny connections to network services that either use
  18. #               the tcp_wrappers library or that have been
  19. #               started through a tcp_wrappers-enabled xinetd.
  20. #
  21. #               The rules in this file can also be set up in
  22. #               /etc/hosts.allow with a 'deny' option instead.
  23. #
  24. #               See 'man 5 hosts_options' and 'man 5 hosts_access'
  25. #               for information on rule syntax.
  26. #               See 'man tcpd' for information on tcp_wrappers
  27. #
  28. ALL:ALL 
  29. /etc/hosts.deny里的ALL:ALL表示,除非在/etc/hosts.allow里明确允许访问,否则一律拒绝
  30. /etc/hosts.allow里第一行in.telnetd:.xfcy.org表示,只有xfcy.org这个域里的主机允许访问telnet服务,注意xfcy.org前面的那个点(.)
  31. /etc/hosts.allow里第二行表示,只有192.168.0这个网段的用户允许访问FTP服务,注意0后面的点(.)
  32. /etc/hosts.allow里第三行表示,只有192.168.0这个网段的用户允许访问SSH服务,注意这里不能写为192.168.0.0/24

本文转自Vnimos51CTO博客,原文链接:http://blog.51cto.com/vnimos/1177594,如需转载请自行联系原作者

Linux下的TCP Wrapper机制相关推荐

  1. Linux下基于TCP的简易文件传输(socket编程)

    Linux下基于TCP的简易文件传输(socket编程) OSI和TCP/IP: 关于TCP/IP协议 关于TCP协议 TCP编程的一般步骤[^2] TCP文件传输实现 功能概述 服务器编程 客户端编 ...

  2. Linux下各类TCP网络服务器的实现源代码

    http://www.linuxeden.com/forum/t146870.html 大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务.这里附上源代码来个小结 ...

  3. 从一道面试题谈linux下fork的运行机制

    http://kb.cnblogs.com/page/76622/ 今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译: #i ...

  4. Linux下程序的保护机制(checksec)

    Linux下程序的保护机制 前言 相信很多人,查看程序信息时会用到,checksec这个命令.它会给你返回如下图的结果,但是很多最开始看到的人,很多都看不懂,如果身为小白的我,跟在大佬后面比葫芦画瓢, ...

  5. linux 网络服务器 源码下载,linux下 各类tcp网络服务器的实现源代码.doc

    linux下 各类tcp网络服务器的实现源代码.doc 还剩 25页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: %s", sock, Ge ...

  6. 机制 linux_从一道面试题谈linux下fork的运行机制

    今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译: #include "stdio.h" #includ ...

  7. LINUX下FORK的运行机制详细解析

    摘要:由于fork函数运行机制的复杂性,造就了当两个fork并排时,问题就变得很复杂.解这个题的关键,一是要对linux下进程的机制有一定认识,二是抓住上文提到的几个关于fork的关键点. 今天一位朋 ...

  8. Linux下各类TCP网络服务器的实现源代码 转

    大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务.这里附上源代码来个小结吧. 首先,循环网络服务器编程实现的步骤是这样的: 这种服务器模型是典型循环服务,如果不 ...

  9. [转][linux]简单的linux下的tcp/udp

    转自:https://blog.csdn.net/cabing2005/article/details/53068880 详细函数以及参数解释请看原链接. windows下的tcp/udp参考:htt ...

最新文章

  1. Google Gflags使用
  2. first day
  3. java and asp.net
  4. silverlight 客户端之间的通讯
  5. API编程基本控件使用
  6. [CF460E]Roland and Rose
  7. 分享 | 光纤光缆布线基础知识及系统设计
  8. linux python软连接_Linux软链接的创建,删除,修改
  9. shell 进入hadoop_php通过shell调用Hadoop的方法
  10. 【jQuery笔记Part1】06-jQuery对象与js对象转换
  11. Python 数据结构与算法 —— 哈弗曼树
  12. Java进阶必备,人人都能听懂的JVM
  13. linux系统中jdk的卸载及安装
  14. 大数运算(加减乘除)
  15. html中设计对联,js实现很实用的对联广告代码 可自适应高度
  16. VUE-Cli报No Babel config file detected错误的一系列解决方法
  17. POJ1008:玛雅日历
  18. win10计算器_你所不知道的 Windows 10 小诀窍:万能计算器、虚拟键盘、屏幕截图标注...
  19. Email邮件发送设置 工具开发整理(网易邮箱、Mailgun为例) 下篇
  20. 教育技术学跟计算机专业,我是教育技术学专业可以报计算机专业吗?

热门文章

  1. linux 自启动程序 优先级,Linux自启动服务优先级/顺序设置
  2. Delphi XE 10.4 FMX ListView 一个不易察觉的 BUG
  3. 计算机病毒ppt教案免费,第十四课 计算机病毒 课件(共14张ppt)+教案
  4. xamarin拖一个gridview控件报错怎么解决_[笔记阁]Xamarin初探:版式面板(一)
  5. python控制语句中的条件语句_『Python』条件控制语句
  6. 中国新能源商用车行业投资现状及前景规划分析报告2022-2027年版
  7. 泰国基础教育管理实行新体制
  8. 工作中常用的linux命令,工作中常用的Linux命令
  9. Python IDLE 无法启动
  10. poj2823 线段树模板题 点修改(也可以用单调队列)