zoukankan      html  css  js  c++  java
  • TCP_Wrappers访问控制

    一、TCP_Wrappers简介

    对有状态连接的特定服务进行安全检测并实现访问控制,它以库文件形式实现,某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的,判断服务程序是否能够由tcp_wrapper进行访问控制的方法:

    ldd /PATH/TO/PROGRAM|grep libwrap.so
    strings PATH/TO/PROGRAM|grep libwrap.so
    例sshd:

    1. [root@newhostname 1372]# which sshd
    2. /usr/sbin/sshd
    3. [root@newhostname 1372]# ldd /usr/sbin/sshd | grep libwrap
    4. libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f5659d39000)
    5. [root@newhostname 1372]# strings /usr/sbin/sshd | grep libwrap
    6. libwrap.so.0
    7. libwrap refuse returns

    它通过/etc/hosts.allow, /etc/hosts.deny这两个配置文件来对来访支持tcp_warppers模块的服务的ip进行访问限制。

    这两个配置文件的读取顺序优先allow,如果allow文件加载,将不再读取deny。

    二、配置文件内的基本语法:

    1、语法:服务组:host

    2、客户端Client_list格式

    以逗号或空格分隔的客户端列表
    基于IP地址:192.168.10.1 192.168.1.
    基于主机名:www.magedu.com .magedu.com 较少用
    基于网络/掩码:192.168.0.0/255.255.255.0
    基于net/prefixlen: 192.168.1.0/24(CentOS7)
    基于网络组(NIS 域):@mynetwork
    内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID

    例:

    1. 编辑/etc/host.allow下编辑
    2. in.telnetd,sshd:172.18.10.10 表示in.telnet和sshd两个服务允许172.18.10.10
    3. 编辑/etc/host.deny下编辑
    4. in.telentd:ALL 表示拒绝所有主机对in.telnetd的连接
    5. 如果上述文件同时存在,则表达的是只允许172.18.10.10访问intelnetd,其它主机不可访问,所有网段都可以访问sshd(如果没有在白名单的,默认为允许;白名单和黑名单同时有的,权限取白名单的)

    3、特殊用法 spawn、EXCEPT、twist

    expect 除非的意思:
    例:

    1. vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
    2. 如果这个配置在allow内,则表示允许所有主机访问,但抛出172.16.100.1在内的172.16.100.0网段的主机除外
    3. 如果这个配置在deny内, 则表示拒允许172.16.100.0网段内除了172.16.100.1 这个地址以外的地址访问,其他地址都拒绝访问

    spawn 启动一个外部程序完成执行的操作:
    例:

    1. sshd: ALL :spawn echo "$(date +%%F) login attempt from %c to %s,%d" >>/var/log/sshd.log
    2. 每当有主机来访就会有一条记录输出到/var/log/sshd.log文件内,注意spawn前面的:经常丢了
    3. %c 客户端信息
    4. %s 服务器端信息
    5. %d 服务名
    6. %p 守护进程的PID
    7. %% 表示%

    twist实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null
    例:

    1. 在host.allow内添加如下:
    2. vsftpd: 172.16. :twist /bin/echo "connectionprohibited" 该项目会将成功访问的动作替换成 /bin/echo "connectionprohibited" ,twist 就是替换的意思。

    测试工具:
    tcpdmatch [-d] daemon[@host] client
    -d 测试当前目录下的hosts.allow和hosts.deny
    例:

    1. tcpdmatch -d (测试当前目录下的配置文件,不一定是etc) sshd 192.168.27.5

    0000000000000000000

  • 相关阅读:
    access remote libvirtd
    python中获取当前所有的logger
    python标准库xml.etree.ElementTree的bug
    python Requests库在处理response时的一些陷阱
    Ubuntu12.04下安装Subversion并进行配置
    命令行打包war包
    Ubuntu12.04安装MariaDB并修改字符集为UTF-8
    Windows下Navicat远程连接Linux下MySQL服务器错误1130
    解决ubuntu下eth0不显示
    解决Ubuntu12.04下rpcbind: cannot open '/var/run/rpcbind/rpcbind.xdr' file for reading
  • 原文地址:https://www.cnblogs.com/momenglin/p/8486076.html
Copyright © 2011-2022 走看看