1、TCPWrappers  原理
Telnet、SSH、FTP、POP和SMTP等很多网络服务都会用到TCPWrapper,它被设计为一个介于外来服务请求和系统服务回应的中间处理软件。
 
 
基本处理过程
当系统接收到一个外来服务请求的时候,先由TCP Wrapper处理这个请求,TCP Wrapper根据这个请求所请求的服务和针对这个服务所定制的存取控制规则来判断对方是否有使用这个服务的权限,
如果有,TCPWrapper将该请求按照配置文件定义的规则转交给相应的守护进程去处理同时记录这个请求动作,然后自己就等待下一个请求的处理。
 
查看一个服务是否支持tcp_wrapper
在Linux系统中有许多服务,包括基于System V服务、基于Xinetd服务。其中 基于Xinetd的服务都是支持tcp_wrapper,因为xinetd服务本身就支持tcp_wrapper。而只有一部分的System  V服务支持tcp_wrapper,如:sshd、vsftpd等。
用户可以通过下面的两种方式得知某服务是否支持tcp_wrapper。
  • strings  可执行工具路径| grep [tcp_wrappers|hosts_access]
  • ldd   可执行工具路径|grep libwrap
 
[root@natsha ~]# ldd /usr/sbin/sshd |grep libwrap
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f97ecca5000)
 
2、TCPWrappers规则定义
在TCPWrappers中通过/etc/hosts.allow和/etc/hosts.deny配置规则允许或阻止指定客户端对指定服务的访问,修改保存此文件后配置无需重启服务立即生效。
 
在/etc/hosts.allow和/etc/hosts.deny文件定义规则的方法采用以下格式:
 
Daemon_list@Host: Client_list [ :Options :Option… ]
 服务:客户端   [:选项]
(1)服务:指定TCPWrappers需要控制的服务名称。如果是SystemV服务直接指定服务名称。如果是超级服务必须指定超级服务的启动脚本名称。【也就是后台】
 
后台进程应该是服务的可执行工具名
例如:telnet-server服务的可执行工具是in.telnetd,因此在/etc/hosts.allow及/etc/hosts.deny中应该写in.telnetd,而不是telnet或telnetd。
   
(2)客户端:指定TCPWrappers需要控制哪些客户端对指定服务的访问。指定客户端方法如下:
单一主机:IP
指定网段:IP/24
指定DNS后缀:example.com
指定FQDN:client.example.com
指定所有客户端:ALL
                    
 (3)选项:包括allow、deny以及一些其他参数。推荐不使用/etc/hosts.deny文件配置。
 需要阻止操作时,直接在/etc/hosts.allow中使用deny动作。        
 
 
选项中其他参数
A、执行外部命令
可以使用spawn参数让TCPWrappers执行一些外部命令。日志文件:/var/log/example.log
 
sshd,in.telnetd:192.168.111.:spawn echo "`date +'%%F %%T'` login from client\: %c to %d">>/var/log/tcpwrap.log
 
            TCPWrappers变量
             %c                访问的客户端信息(user@host)
             %s             访问的服务器端信息(server@host)
             %h                访问的客户端的FQDN(如果可以DNS反向解析)
             %p                服务器PID
      
B、  排除
  在/etc/hosts.allow和/etc/hosts.deny中指定客户端时,可使用EXCEPT参数在一个范围内排除指定客户端。
 
#禁止172.16.0.0/16网络访问我,排除172.16.100.0/24和172.16.100.1之外
            vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
 
3、tcp_wrapper访问控制判断顺序
如果同时在“hosts.allow”与“hosts.deny”配置了某个相反的限制,那么最终以哪一个文件为准呢?
tcp_wrapper中有访问控制判断顺序明确规定:
  • 访问是否被明确许可,如果是则直接通过。
  • 否则才会判断访问是否被明确禁止,如果是则禁止通过。
  • 如果都没有,默认许可。
 
 
 
4、配置实例
 
 
#仅仅仅仅允许192.168.1.0/24的主机访问sshd
 vim /etc/hosts.allow
    sshd: 192.168.1.0
 vim /etc/hosts.deny
    sshd: ALL
 
 
只允许192.168.1.0/24的主机访问telnet和vsftpd服务  
/etc/hosts.allow
vsftpd,in.telnetd: 192.168.1.
/etc/host.deny
vsftpd,in.telnetd: ALL
 
 
另外:
deny 主要用在/etc/hosts.allow定义“拒绝”规则
    如:vsftpd: 172.16. :deny
 
allow 主要用在/etc/hosts.deny定义“允许”规则
    如:vsftpd:172.16. :allow

Linux 防火墙之TCP Wrappers的更多相关文章

  1. Linux网络安全篇,认识防火墙(三),TCP Wrappers

    1.防火墙设置文件 任何以xinetd管理的服务都可以通过 /etc/hosts.allow /etc/hosts.deny 这两个文件来设置防火墙(针对源IP或域进行允许或操作的设置). 其实/et ...

  2. firewall-cmd 防火墙命令详解 及 TCP Wrappers

    firewall-cmd 常用参数及作用 参数 作用 --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域,使其永久 ...

  3. linux TCP Wrappers

    1. TCP Wrapper简介 (出处:http://www.softpanorama.org/Net/Network_security/TCP_wrappers/) (维基百科)TCP Wrapp ...

  4. TCP Wrappers(简单防火墙)---限制IP登录ssh

    1.TCP Wrappers 简介 TCP_ Wrappers是- 一个工作在第四层(传输层)的的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap ...

  5. Linux防火墙

    9.1 认识防火墙   只要能够分析与过滤进出我们管理之网域的封包数据, 就可以称为防火墙. 硬件防火墙 由厂商设计好的主机硬件, 这部硬件防火墙内的操作系统主要以提供封包数据的过滤机制为主,并将其他 ...

  6. TCP Wrappers

    TCP Wrappers 是 RHEL 7 系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序作出允许或拒绝的操作.换句话说,Linux 系统中其实有两个层面的防火墙,第一 ...

  7. Linux防火墙:iptables禁IP与解封IP常用命令

    在Linux服务器被攻击的时候,有的时候会有几个主力IP.如果能拒绝掉这几个IP的攻击的话,会大大减轻服务器的压力,说不定服务器就能恢复正常了. 在Linux下封停IP,有封杀网段和封杀单个IP两种形 ...

  8. Linux防火墙(Iptables)的开启与关闭

    Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...

  9. linux 防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

随机推荐

  1. yagent使用说明

    介绍   yagent是ycache的一个组件,用于管理memcached或redis的缓存实例.主要功能包括启动cache实例.将cache实例的信息写到zk上给yconsole使用.检测cache ...

  2. 【剑指offer38】字符串的排列

    如果没有要求字典序排序,则直接采用递归的思想,将字符串的排列看成两步,第一步,交换第一个字母和任意一个字母(包括自己,但不包括和自己相等的其他字母)固定第一个字母,固定第一个字母,然后对后面的字符串也 ...

  3. logistic regression中的cost function选择

    一般的线性回归使用的cost function为: 但由于logistic function: 本身非凸函数(convex function), 如果直接使用线性回归的cost function的话, ...

  4. Not sending mail to unregistered use

    其实这个问题是Jenkins管理用户的一个问题,它可以自动从git或者svn读取用户信息以及邮件(如果git等中设置了的话), 但它不又不创建Jenkins上的用户,所以你可以在pepole列表上看到 ...

  5. React事件方法、React定义方法的几种方式、获取数据、改变数据、执行方法传值

    1.案例实现代码如下 import React, { Component } from 'react'; /** * 特别注意this,对于传值和绑定都十分重要 */ class Home4 exte ...

  6. 阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版

    遍历枚举 改造获取的方法,这样获取的对象就是单例模式 再次运行测试程序 对象只有一个实例的情况下对i这个值进行了反复的操作.当多个人活着多线程在使用时.这就会出现类成员变量由于第一个人的修改.后面看到 ...

  7. 跨域请求配置 Amazon AWS S3 腾讯云 阿里云 COS OSS 文件桶解决方案以及推荐 Lebal:Research

    跨域请求配置 跨域请求指的就是不同的域名和端口之间的访问.由于 ajax 的同源策略影响.跨域请求默认是不被允许的. 使用@font-face外挂字体时,可能遇到跨域请求CROS问题:F12控制台报错 ...

  8. playbook部署mangodb

    playbook文件 [root@localhost ~]# cat deploy_mongo.yaml --- - hosts: webservers become: yes become_meth ...

  9. C#代码获取另一程序的错误提示,并关闭窗口。

    A程序报错弹框如下: B程序捕捉到此错误消息,并关闭.B程序核心代码如下. private void timer_Click(object sender, EventArgs e) { //查找Mes ...

  10. cocos2dx[3.2](9) 新回调函数std::bind

    自从3.0引用了C++11标准后,回调函数采用的新的函数适配器:std::function.std::bind. 而曾经的回调函数menu_selector.callfunc_selector.ccc ...