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. Docker非常详细的讲解

    CSDN大牛写的,推荐 http://blog.csdn.net/tangtong1/article/details/53556129 阿里云docker镜像地址: https://dev.aliyu ...

  2. IP处理模块IPy

    #安装IPy模块#pip install IPy #from IPy import IPip_s = input('please input an IP or net-range:')#192.168 ...

  3. leetcode 188. 买卖股票的最佳时机 IV

    参见 本题采用了第一列初始化后,从左侧向右开始递推的方式,但从上往下递推应该也成立,以后尝试一下 想写一个普适性的适用于n天交易k次持有j股的状态方程但是有问题:对于交易次数过多的情况数组会超出界限: ...

  4. leetcode 200岛屿的个数

    主要考察图搜索: 方法一:染色法,时间O(mn) 遍历一遍,再通过BFS或DFS将所有临近岛屿染色,使用dfs时将numIslands中的bfs换成dfs即可: /***** 遍历所有的点: 只要遇见 ...

  5. Error-ASP.NET:The Value of property CloneFrom can not be empty string!

    ylbtech-Error-ASP.NET:The Value of property CloneFrom can not be empty string! 1.返回顶部 1. “/”应用程序中的服务 ...

  6. Custom Configuration 的两种方法:2.XmlSerializer XmlAttribute

    第二种:XmlSerializer XmlAttribute 1.CustomConfiguration.xml 2.CustomConfigurationSetting.cs 3.CustomCon ...

  7. linux LVM分区查看dm设备

    linux LVM分区查看dm设备 在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目. Device:            tps    kB_read/s   ...

  8. freetype HarfBuzz fontconfig Cairo 编译顺序

    There is also a circular dependency between freetype and HarfBuzz. Note that fontconfig and Cario ar ...

  9. 在Spring容器外调用bean

    这个东西源于这种需求:一个应用丢到服务其后,不管用户有没有访问项目,这个后台线程都必须给我跑,而且这个线程还调用了Spring注入的bean,这样自然就会想到去监听Servlet的状态,当Servle ...

  10. js 数组去重方法总结

    var arr = [1, 1, 'true', 'true', true, true, 15, 15, false, false, undefined, undefined, null, null, ...