linux下的Tcp wrappers

简介

TCP_Wrappers是一个工作在第四层(传输层)的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。

工作原理

TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。
在这里插入图片描述

TCP_Wrappers的使用

TCP_Wrappers的使用主要是依靠两个配置文件 /etc/hosts.allow, /etc/hosts.deny 用于拒绝和接受具有TCP_Wrappers控制全的程序,详细信息具体可以查看man帮助,这里我们就做简单的演示和使用(man 5 hosts_access, man 5 hosts_options)
要说明的是当我们启动一个受控制的软件的时候,比如ssh,
不过在刚开始的时候, /etc/hosts.allow,/etc/hosts.deny 什么都没有添加,此时没有限制,是都可以连接的,现在我们来说如何设置,禁止和允许连接,配置文件格式遵循如下规则:

daemon_list@host: client_list [:options :option…]

daemon_list: 是程序的列表,可以是多个,是多个时,使用,隔开
@host: 可以没有,是我们的限制的网卡访问接口(自己的),设置允许或禁止他人从自己的那个网口进入。这一项不写,就代表全部。
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
    ALL:所有主机
    LOCAL:本地主机
    KNOWN:主机名可解析成ip的
    UNKNOWN:主机名无法解析成IP的
    PARANOID:正向解析与反向解析不对应的主机
  EXCEPT 反向

  只能针对服务程序和主机地址进行访问控制策略的设置,而不能指定网络解析和其他属性。
  Iptables---------> tcp_wrappers--------> service

两个控制文件
/etc/hosts.allow 定义允许的访问
/etc/hosts.deny 定义拒绝的访问


特点: 配置改变,立即生效

tcp_wrappers的访问控制判断顺序
/etc/hosts.allow—>/etc/hosts.deny–>允许所有

案例一:

在A服务器上/etc/hosts.deny中写入如下内容:

sshd:172.24.8.129 

在B服务器上通过ssh命令来远程登陆A服务器,已经没有响应
在A服务器上删除该条目后,B服务器即可正常登陆A服务器

A服务器:
[root@A ~]# systemctl stop firewalld
[root@A ~]# setenforce 0
[root@A ~]# vim /etc/host.deny
再最后一行添加如下命令
sshd:172.24.8.129

B服务器:
[root@B ~]# ssh root@172.24.8.130
ssh_exchange_identification: read: Connection reset by peer

删除A中/etc/host.deny里添加的命令后
[root@B ~]# ssh root@172.24.8.130
The authenticity of host '172.24.8.130 (172.24.8.130)' can't be established.
ECDSA key fingerprint is 66:4b:64:5c:b9:a3:db:50:a1:4d:ba:1f:22:37:05:be.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.24.8.130' (ECDSA) to the list of known hosts.
root@172.24.8.130's password: 
Last login: Wed Apr 10 01:54:03 2019 from 172.24.8.1
[root@A ~]# 
案例二:

在A服务器上/etc/hosts.deny中写入如下内容:

sshd:192.168.40.132 EXCEPT 192.168.40.132

----------------------------不管怎样允许在前
B服务器上可以使用ssh命令来远程登陆A服务器

A服务器:
[root@A ~]# vim /etc/hosts.deny
再最后一行添加如下命令
sshd:172.24.8.129 EXCEPT 172.24.8.129	//先匹配允许的主机所以先匹配172.24.8.129主机允许,所以可以访问

B服务器:
[root@B ~]# ssh root@172.24.8.130
root@172.24.8.130's password: 
Last login: Wed Apr 10 01:56:26 2019 from 172.24.8.129
[root@A ~]# 
案例三:

清空A服务器上的/etc/hosts.deny中的内容
然后在/etc/hosts.allow中写入如下内容:

sshd:172.24.8.129 EXCEPT 172.24.8.129 

----------------------------不管怎样允许在前
hosts.allow文件中没有定义的时候是要查看hosts.deny文件的,如果该文件也没有定义,那么就是允许的

A服务器:
[root@A ~]# vim /etc/hosts.deny		//删除文件内所有信息
[root@A ~]# vim /etc/hosts.allow
在文件末尾加上如下信息
sshd:172.24.8.129 EXCEPT 172.24.8.129		//率先匹配允许的主机

B服务器:
[root@B ~]# ssh root@172.24.8.130
root@172.24.8.130's password: 
Last login: Wed Apr 10 02:03:00 2019 from 172.24.8.129
[root@A ~]# 

查询哪些服务支持tcp_wrappers
如果某个服务调用了libwrap.so这个动态链接库,那么这个服务就是支持的
也可以使用以下命令来查看:

[root@A ~]# ldd `which sshd` | grep libwrap
	libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f820ec34000)
[root@A ~]# 
拒绝haha用户登录到我当前主机的几种方法
passwd -u  -l
usermod -s /sbin/nologin haha
Vim /etc/ssh/sshd_config
Allow user 

拒绝主机172.16.80.68 ssh远程登录到我当前主机有几种方式实现
Vim /etc/hosts.deny
Sshd:172.16.80.68
Iptables -I INPUT -s 172.16.80.68 --dport 22 -p tcp -j REJECT
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.16.80.68 service name=ssh reject'
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值