一、TCP Wrappers(简单防火墙)

### --- TCP Wrappers简介:

~~~ TCP_Wrappers是一个工作在#第四层(传输层)的安全工具,
~~~ 对#有状态连接(TCP)的特定服务进行检测并实现访问控制,
~~~ 界定方式是凡是#调用libwrap.so库文件的程序就#可以收TCP_Wrappers的安全控制,
~~~ 它的主要功能就是控制谁可以访问,常见的程序有#rpcbind/vsftpd/sshd/telent。
### --- 判断方式:

~~~ 查看对应服务命令所在位置:which sshd
~~~ 查看指定命令执行时是否调用livwrap.so文件:ldd /usr/sbin/sshd |grep libwrap.so
### --- 判断某一服务是否被TCP Wrappers所限制的方式依据

[root@server15 ~]# which sshd // 查询服务程序服务命令所在位置
/usr/sbin/sshd
[root@server15 ~]# which ssh
/usr/bin/ssh
[root@server15 ~]# ldd /usr/sbin/sshd |grep libwrap.so // 调用livwrap.so文件,说明sshd这个服务被TCP Wrappers所控制
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f256e7b2000)
### --- 查看Apache是否被TCP Wrappers限制

[root@server15 ~]# yum install -y httpd
[root@server15 ~]# which httpd
/usr/sbin/httpd
[root@server15 ~]# ldd /usr/sbin/httpd |grep libwrap.so // 没有,说明Apache并不受TCP Wrappers所控制和关闭

二、TCP Wrappers工作原理

|NO.Z.00007|——————————|LinuxNetwork|——|Linux&SshTcpRoot.V04|——|TCPWrappers|_其他

### --- TCP Wrappers工作原理

~~~ 以ssh为例,每当有ssh的连接请求时,先读取系统管理员所设置的访问控制文件,
~~~ 符合要求,则会把这次连接原封不动的转给ssh进程,由ssh完成后续工作,
~~~ 如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求。拒绝ssh服务
### --- 优先查看hosts.allow,匹配即停止。

~~~ 允许个别,拒绝所有,hots.allow文件添加允许的策略,hosts,deny文件添加all
~~~ 拒绝个别,允许所有,hosts.allow文件为空,hosts.deny文件添加单个拒绝的策略
~~~ hosts.allow的优先级要高于hosts.deny的。

三、TCP Wrappers使用:允许哪一个服务被那些客户端连接

### --- 拒绝单个IP使用ssh远程连接

hosts.allow:空着就可以
[root@server15 ~]# vim /etc/hosts.deny
sshd:10.10.10.240 // 10.10.10.240是本机vmbox的虚拟网卡绑定的地址
Xshell:\> ssh root@10.10.10.15 // 通过windows本地连接被拒绝
[root@server14 ~]# ssh root@10.10.10.15 // 通过一台主机可以直接连接
### --- 拒绝某一网段使用ssh远程连接

[root@server15 ~]# vim /etc/hosts.deny
sshd:10.10.10.
Xshell:\> ssh root@10.10.10.15 // windows连接被拒绝
[root@server14 ~]# ssh root@10.10.10.15 // 通过一台主机可以直接连接
### --- 仅允许某一IP使用ssh远程登录

[root@server15 ~]# vim /etc/hosts.deny
sshd:all
[root@server15 ~]# vim /etc/hosts.allow
sshd:10.10.10.14 // 仅允许10.10.10.14连接,其它的都不允许
[root@server14 ~]# ssh root@10.10.10.15
Last login: Tue Feb 2 03:54:12 2021 from 10.10.10.14 // 10.10.10.14可以直接连接
[root@server15 ~]# ssh root@10.10.10.15
ssh_exchange_identification: read: Connection reset by peer // 10.10.10.15本机都不可以连接

附录一:

### --- TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, 
~~~ /etc/hosts.deny以此实现访问控制,默认情况下/etc/hosts.allow,
~~~ /etc/hosts.deny什么都没有添加,此时没有限制

### --- 配置文件编写规则:
service_list@host:client_list
service_list:是程序(服务)的列表,可以是多个,多个时,使用,隔开
~~~ @host:设置允许或禁止他人从自己的那个网卡进入,这一项不写,就代表全部。
~~~ client_list:使访问者的地址,如果需要控制的用户较多,客户以使用空格或,隔开
### --- 格式如下:

~~~ 基于IP地址:192.168.88.1 192.168.88.
~~~ 基于主机名:www.atyanqi.com .atyanqi.com较少用
~~~ 基于网络/掩码:192.168.0.0/255.255.255.0
~~~ 内置ACL:ALL(所有主机)、LOCAL(本地主机)
### --- 实验案例:
~~~ 拒绝单个IP使用ssh远程连接:
~~~ 配置文件:
hosts.allow:空着
hosts.deny: sshd:192.168.88.20

~~~ 拒绝某一网段使用ssh远程连接
hosts.allow:空着
hosts.deny:sshd:192.168.88.
~~~ 仅允许某一IP使用ssh远程登录
hosts.allow:sshd:192.168.88.20
hosts.deny:sshd:ALL

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart

                                                                                                                                                   ——W.S.Landor