侧边栏壁纸
博主头像
枕头下放双臭袜子博主等级

今我何功德,曾不事农桑

  • 累计撰写 162 篇文章
  • 累计创建 30 个标签
  • 累计收到 0 条评论

Linux网络服务-2-TcpWrappers

枕头下放双臭袜子
2020-04-08 / 0 评论 / 0 点赞 / 489 阅读 / 0 字 / 正在检测是否收录...

1、简介

    Linux系统中其实有两个层面的防火墙,一种是firewalld、iptables等基于TCP/IP协议的流量过滤防护工具,而Tcp_wrappers服务则是能够对系统服务进行允许和禁止的防火墙,从而在更高层面保护了Linux系统的安全运行。
    Tcp_Wrappers是一个工作在传输层的安全工具,对tcp(有状态连接)的某些特定服务进行安全监测且实现访问控制,特定服务是指调用libwrap.so库文件的程序。TCP_Wrappers的主要功能就是用来控制谁可以进行访问,常见的程序有rpcbind、vsftpd、sshd、telnet等

    tcp_wrappers主要依靠/etc/hosts.allow/etc/hosts.deny两个文件来实现防火墙功能

那如何判断应用程序是否支持Tcp_Wrappers呢?

    ① which查看对应服务的命令所在的位置

# which sshd

    ② ldd 命令检测其是否链接至libwrap库上

# ldd …… | grep libwrap.so

image.png

    如果上述命令有输出,则证明该程序调用了libwrap.so库,所以也就受Tcp_Wrappers的控制

    ② 或者使用strings命令查看是否含有“host_access”,有则支持,无则不支持
image.png

2、原理

    当某服务的客户端请求到达服务器之后,首先读取系统管理员所设置的访问控制文件/etc/hosts.allow文件,如果请求的IP被写入了/etc/hosts.allow文件,请求会被立刻发送给该应用程序的服务器进程,允许这次连接;如果没有写入/etc/hosts.allow文件,则去访问/etc/hosts.deny文件,如果该请求连接的IP被写入了/etc/hosts.deny文件,就拒绝该连接请求,如果/etc/hosts.deny文件中也没有写入该IP地址,那么也会允许这次连接。

    原理如图所示:

    /etc/hosts.allow文件优先级高于/etc/hosts.deny文件

image.png

3、配置文件语法格式

    server_list@host : client_list : options

     server_list 格式 :选择执行tcp_wrappers的程序(服务)列表,可以是多个,使用逗号“,”隔开

     @host 格式 :设置允许或禁止用户从自身的哪个网卡接口进入。这一项可以不写(代表全部接口)

     client_list 格式 : 需要禁止或允许的访问者地址,可以是IP地址、主机名(不常用)、 网段( centos6只能是192.168.52.0.0/255.255.255.0格式的,而centos7之后可以是cidr类型的!),访问者地址较多时,使用 逗号“,”隔开

     option

        可带可不带

        ① 内置ACL :   ALL(所有主机)、LOCAL(本地主机)、KNOWN (能够解析的)、UNKNOWN (不能解析的)、PARANOID(正向解析与反向解析不对应的主机)

        ② 扩展选项 :   

            spawn : 执行某个命令(就像expect的内部命令spawn)

              %c 含义 : user@host

              %s 含义 : service@host

              %h 含义 : 客户端主机名

              %p 含义 : 服务器上的进程的PID

            例:

image.png

image.png

            twist : 中断命令的执行
            例:
image.png

4、参考的高级用法

下例用到了EXCEPT的嵌套,其意思是:

# cat /etc/hosts.allow
sshd:ALL EXCEPT .ishells.cn EXCEPT blog.ishells.cn

    允许所有访问sshd服务,在域.ishells.cn的不允许访问,但是blog.ishells.cn除外

# cat /etc/hosts.deny
sshd:ALL

    sshd:ALL 就是拒绝.ishells.cn的访问,因为默认是允许,所以在hosts.deny中必须明确定义。

参考内容:
1、尚硅谷Linux视频
2、博客:
https://www.cnblogs.com/wspblog/p/4297151.html
http://www.mamicode.com/info-detail-1297000.html

0

评论