tcp_wrappers应用详解

简介
    TCP wrappers 通常被称为 wrappers,它是由 Wieste Venema 编写,已经出现几年了。其背后的思想很简单,其要旨是可以在您的 AIX (UNIX/Linux) 主机上快速轻松地锁定流行的通过 TCP 访问的客户端。
    Wrappers 允许系统管理员控制 wrappers 支持的基于 TCP 的服务或守护进程的访问。Tcpd 控制从 /etc/inetd.conf 中运行的 TCP 守护进程。不过,很多基于 TCP 的应用程序已加入 wrappers 支持(一般使用 libwrap 库),并且能感知 wrapper;不通过 /etc/inetd.conf 进行控制也没有关系。可以在 wrappers 下进行访问控制的通常有 telnet、ssh、sendmail、ftp 包、pop3 和 vsftpd。

Wrappers 提供对基于 UDP 的连接的有限控制,不过我建议使用内置或第三方防火墙进行基于 UDP 的访问。

1.首先我得了解程序是否支持tcp_wrapper,使用strings命令和ldd命令获取hosts_access或libwrap

(1)并非所有服务均能由tcp_wrapper

(2)判断某服务程序是否能够由tcp_wrapper
        动态编译:

 ldd 命令检测其是否链接至libwrap库上即可
 # ldd `which sshd` | grep libwrap
 libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f6788fe8000)

静态编译:

 strings /path/to/program
  # which rpcbind
  /sbin/rpcbind
  # strings /sbin/rpcbind | grep hosts_access
  hosts_access

2.tcp_wrapper配置文件语法格式:
        daemon_list: client_list
        daemon_list:
            应用程序名称;
            应用程序列表:如果有多个,用逗号分隔即可;
            ALL:匹配所有进程
        
        client_list:
            IP地址:172.16.100.100
            主机名:www.opensamlee.com
            网络地址/子网掩码:掩码仅允许使用长格式,不允许使用CIDR格式
            172.16. 表示 172.16.0.0/255.255.0.0
            
        tcp_wrapper有几个内置的Macro     
            用于client_list的有:ALL, KNOWN, UNKNOWN, PARANOID
            用于daemon_list的有:ALL
        
        EXCEPT: 可以用于client或daemon之中,起到排除功能
        
        [:options]
            在hosts.allow文件使用deny选项: 在hosts.allow文件定义拒绝规则
            在hosts.deny文件使用allow选项:在hosts.deny文件定义放行规则
        
        spawn命令调用:
            echo
                %c: [email protected]
                %s: [email protected]
                %h: 客户端主机名
                %p: 服务器上的进程的PID
        
        #man 5 hosts_access:获取其完整帮助信息    
        注意:echo的信息无需加引号,否则,命令替换可能不会进行

 in.telnetd:     ALL : spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper.log

3.tcp_wrapper匹配机制:
1、先检查/etc/hosts.allow,如果被允许,则直接放行;
2、如果/etc/hosts.allow没有匹配项,则检查/etc/hosts.deny,如果被拒绝,则禁止访问;
3、如果二者均无匹配,则放行

tcp_wrapper实践应用案例:

  1. 本机ip为:172.16.100.7,

(1)仅放行172.16网段访问本机telnet服务:

(2)仅放行172.16网段访问本机telnet服务,但不允许172.16.100.8访问

安装telnet服务:

# yum -y install telnet-server

查看telnet程序依赖的工作链

# ldd `which in.telnetd` 
linux-vdso.so.1 =>  (0x00007fff450c1000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f8055a31000)
libc.so.6 => /lib64/libc.so.6 (0x00007f805569d000)
/lib64/ld-linux-x86-64.so.2 (0x0000003541000000)
# ldd `which xinetd`
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fe109c7e000)

启动telnet服务:

# chkconfig telnet on
# service xinetd start
Starting xinetd:                                           [  OK  ]
# ss -tnl |grep :23
LISTEN     0      64                       :::23                      :::*

定义tcp_wrapper规则文件---仅放行172.16网段访问本机telnet服务:

# vim /etc/hosts.allow
in.telnetd:    192.168.0.
# vim /etc/hosts.deny 
in.telnetd:    ALL

定义tcp_wrapper规则文件---仅放行172.16网段访问本机telnet服务,但不允许172.16.100.8访问

# vim /etc/hosts.allow
in.telnetd:    172.16. EXCEPT 172.16.100.8
# vim /etc/hosts.deny 
in.telnetd:    ALL

使用172.16.100.8主机访问:
# telnet 172.16.100.7
Trying 172.16.100.7...
Connected to 172.16.100.7.
Escape character is ‘^]‘.
Connection closed by foreign host.

2.本机ip:172.16.100.7

(1)sshd仅允许172.16.0.0/16网段访问:

方法:
1、/etc/hosts.allow
sshd: 172.16.
2、/etc/hosts.deny
sshd: ALL

3.本机ip:172.16.100.7

telnet服务不允许172.16.0.0/16,但允许172.16.100.200访问;其他客户端不做控制。

方法1:
1、/etc/hosts.allow
in.telnetd: 172.16.100.200
2、/etc/hosts.deny
in.telnetd: 172.16.
方法2:
/etc/hosts.deny
in.telnetd: 172.16. EXCEPT 172.16.100.200
方法3:
/etc/hosts.allow
in.telnetd: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
/etc/hosts.deny
in.telnetd: ALL

3.本机ip:172.16.100.7

使用spawn命令调用记录用户访问控制记录信息:

/etc/hosts.allow
记录登录用户日志:
##记录允许172.16.主机访问记录
in.telnetd: 172.16. : spawn echo "somebody entered,`date`" >> /var/log/tcpwrapper.log
##记录允许172.16.主机 且排除 172.16.100.8主机的访问sshd记录
sshd: 172.16. EXCEPT 172.16.100.8 :spawn echo "somebody entered,`date`" >> /var/log/tcpwrapper.log

/etc/hosts.deny
in.telnetd: ALL
sshd: ALL

4.本机ip:172.16.100.7
(1)仅允许172.16.0.0/16网络内的主机访问vsftpd;但不允许172.16.200.8访问

方法:
/etc/hosts.allow
vsftpd: 172.16. EXCEPT 172.16.200.8
/etc/hosts.deny
vsftpd: ALL

5.本机ip:172.16.100.7
(1)仅允许172.16.0.0/16网络内的主机访问rsync;但不允许172.16.56.8访问

方法:
/etc/hosts.allow
rsync: 172.16. EXCEPT 172.16.200.8
/etc/hosts.deny
rsync: ALL

6.使用tcp_wrapper控制vsftp服务仅允许172.16.0.0网络中的主机访问,但要拒绝172.16.200.中的所有主机,对所有的拒绝访问尝试使用记录日志:

方法:
/etc/hosts.allow
vsftpd: 172.16. 
/etc/hosts.deny
vsftpd: 172.16.200. spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper_vsftpd.log

以上tcp_wrappers应用详解所有内容。

时间: 2024-10-14 00:37:52

tcp_wrappers应用详解的相关文章

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简

linux FTP配置详解

一.vsftpd说明: LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:  (1)anonymous(匿名帐号) 使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己

vsftp配置详解

vsftp配置详解 FTP:文件传输协议(File Transfer Protocol) 是用于在网络上进行文件传输的一套标准协议.它属于网络传输协议的应用层. FTP服务一般运行在20和21两个端口 20用于在客户端和服务器之间传输数据流(主动模式时使用)  21用于传输控制流,并且是命令通向ftp服务器的进口. FTP两种使用模式: 主动PORT模式:PORT模式 由FTP服务器端发起,FTP服务器使用20端口连接客户端的某一个大于1023的随机端口. 被动PASV模式:PASV模式 由FT

ftp用户类型、配置文件详解以及“425 Security:Bad IP connection”解决方式

一:ftp用户类型 1:匿名用户anonymous,实际登陆访问文件目录时,是使用本地系统用户ftp登陆,访问ftp的家目录即/var/ftp,默认此目录只有root才有写权限(ftp的安全机制),推荐在此目录下创建目录并赋予ftp写权限 2:本地系统用户,登陆时会直接访问此用户的家目录,为了安全起见在操作系统创建用户时添加"-d /bin/nologin",设置此用户为不可登陆操作系统 3:虚拟用户,使用mysql等数据库管理用户,需在配置文件上将用户映射到某一本地系统用户 二:ft

vsftpd配置文件参数详解

vsftpd配置文件详解 1.默认配置: 1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或anonymous,口令为空:匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传. 3>本地用户的登录名为本地用户名,口令为此本地用户的口令:本地用户可以在自 己家目录中进行读写操作:本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载. write_en

vsftp.conf 配置文件详解

/etc/vsftpd/vsftpd.conf文件详解,分好类,方便大家查找与学习 #################匿名权限控制############### anonymous_enable=YES  #是否启用匿名用户no_anon_password=YES #匿名用户login时不询问口令 下面这四个主要语句控制这文件和文件夹的上传.下载.创建.删除和重命名.anon_upload_enable=(yes/no):  #控制匿名用户对文件(非目录)上传权限.anon_world_read

vsftpd.conf超详解配置

1.默认配置 以下根据默认配置给出中文注释 # Example config file /etc/vsftpd/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled 

vsftpd配置文件详解 ---配置解说

vsftpd配置文件详解 1.默认配置: 1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或anonymous,口令为空:匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传. 3>本地用户的登录名为本地用户名,口令为此本地用户的口令:本地用户可以在自 己家目录中进行读写操作:本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载. write_en

linux下vsftp安装配置详解

一:简介 FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件.相比于HTTP,FTP协议要复杂得多.复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令:另一个是数据链路,用来上传或下载数据. FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式. PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命