传输层的安全控制工具------TCP_Wrappers

1.简单了解什么是TCP_Wrappers:
TCP_Wrappers是Linux中的一个安全机制[即TCP_Wrappers防火墙],在一定程度上限制某种服务的访问权限,达到了保护系统的目的,TCP_Wrappers是一个工作在第四层(传输层)的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的程序就可以受TCP_Wrappers的安全控制。TCP_Wrappers的主要功能就是控制谁可以访问谁不可以访问,对指定程序实现访问控制,常见的程序有telnet、ssh、sendmail、ftp 、pop3 和 stunnel。
根据这个安全控制工具的名字,我们就可以发现TCP_Wrappers 是不提供基于UDP连接的访问控制,针对UDP连接的访问控制我们可以通过使用内置或第三方的防火墙来实现。
如果需要查看某应用程序是否支持TCP_Wrappers,我们可以通过下列命令查看:

[root@localhost ~]# strings /usr/sbin/sshd|grep hosts_access
hosts_access

2.TCP_Wrappers的工作原理:
在这里插入图片描述
TCP_Wrappers有一个TCP的守护进程叫作tcpd。我们以ssh远程登录为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。如上图所示,当我们发起一个ssh的连接请求时,tcpd进程会截获我们的连接请求,它通过先与/etc/hosts.allow文件进行匹配看是否允许,允许则直接将请求转给ssh进程,由ssh进程响应连接,匹配失败再与/etc/hosts.deny拒绝文件进行匹配,匹配成功拒绝请求,匹配失败即没做任何设置,默认允许。
3.使用TCP_Wrappers:
TCP_Wrappers主要是依靠两个配置文件/etc/hosts.allow和/etc/hosts.deny来实现接受和拒绝具有TCP_Wrappers控制权限的程序,详细信息具体可以查看man手册(man 5 hosts_access, man 5 hosts_options),这里我们就做简单的演示和使用。
初始状态下,/etc/hosts.allow和/etc/hosts.deny两个配置文件中什么都没有添加,此时没有任何限制,任何ip都可以连接。下面我们来了解一下,如何通过这两个配置文件实现访问控制,配置文件格式遵循如下规则:

daemon_list@host: client_list [:options :option…]
daemon_list:程序的列表,可以是单个也可以是多个,多个时以逗号为分隔符;
@host:是我们的限制的自己网卡访问接口,设置允许或禁止他人从自己的哪个网口进入(可以不写,不写就代表所有);
client_list:客户列表,用来记录客户端访问者的ip地址,如果需要控制的用户较多,可以使用空格或逗号分割,其格式如下:
基于IP地址或一个ip网段:192.168.10.1 192.168.10.
基于主机名: www.panghu.com .panghu.com //较少用
基于网络/掩码:192.168.10.0/255.255.255.0
内置ACL: ALL、LOCAL、KNOWN、UNKNOWN、PARANOID
ALL------所有主机;
LOCAL------本地主机;
KNOWN------主机名可解析成ip地址;
UNKNOWN------主机名无法解析成IP地址;
PARANOID------正向解析与反向解析不对应的主机;
EXCEPT------反向操作;

TCP_Wrappers的缺点:只能针对服务程序和主机地址进行访问控制策略的设置,而不能指定网络解析和其他属性进行设置。
TCP_Wrappers的特点:配置改变,立即生效。
TCP_Wrappers的访问控制判断顺序:先允许后拒绝,允许绝对优先
3.下面我们以ssh远程登录为例,进行一下案例的实现(在这里我是通过两台虚拟机进行实验的,192.168.10.206为服务器端,192.168.10.211为客户机端):
案例一:不做任何配置的情况下,利用客户端ssh登录服务端。
在这里插入图片描述
案例二:编辑配置文件/etc/hosts.deny拒绝客户端ssh登录对配置文件/etc/hosts.allow不做任何操作。
服务端:

[root@server ~]# vim /etc/hosts.deny
sshd:192.168.10.211

客户端测试:
在这里插入图片描述
ssh_exchange_identification: read: Connection reset by peer.代表TCP_Wrappers已拒绝请求。
案例三: 编辑配置文件/etc/hosts.deny拒绝客户端ssh登录再编辑配置文件/etc/hosts.allow允许客户端登录。
服务端:

[root@server ~]# vim /etc/hosts.allow
sshd:192.168.10.211

客户端测试:
在这里插入图片描述
案例四:服务端允许192.168.10.0网段的用户登录,但是拒绝192.168.10.211用户登录。
服务端配置:

[root@server ~]# vim /etc/hosts.allow
sshd:192.168.10. EXCEPT 192.168.10.211

这里就存在了两种情况,如果配置文件/etc/hosts.deny定义了拒绝192.168.10.211用户的话,那么拒绝该用户登录,但是若/etc/hosts.deny配置文件中,没有定义拒绝该主机的话,那么会允许该主机登录,因为192.168.10.0网段已经允许其中就包括192.168.10.211。
案例五:拒绝所有的ssh与telnet服务访问服务端。

[root@server ~]# vim /etc/hosts.deny
in.telnetd,sshd:ALL
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值