TCP_Wrappers 学习

一:为什么要学习TCP_Wrappers

tcp_Wrappers是一个简单的防火墙,它的全称是:Transmission Control Protocol(TCP)Wrappers。
它工作原理简单,方便易于上手,相当于我们手机的黑名单和白名单,对访问我们服务器的用户进行设置和管理。

1.1 TCP_Wrappers的特点

1)它工作在第二层数据链路层,可以对服务器的初始访问做筛查
2)它对有状态连接的特定服务进行安全检查,以库文件的形式实现访问控制
3)某一进程是否接受tcp_wrappers的控制,取决于它在编译的时候是否对libwrap库进行了编译

1.2 怎样判断一个进程是否能够实现tcp_wrappers管控

1)找到该服务的所在位置
如:我们分别对ssh和sshd这两个服务做检查


可以看到ssh服务的命令保存在/usr/bin/ssh
2)通过ldd命令查询出ssh和sshd命令中包含的所有库文件


3)里面的内容比较多,我们做一个筛查,找出里面的libwrap.so库文件
ssh

ssh的库文件中不包含libwrap.so库,说明ssh不受tcp_wrappers管理
sshd

我们可以看到sshd的库文件中包含libwrap库,所以sshd服务是可以被tcp_wrappers所管理的。

二、使用TCP_Wrappers

2.1 tcp_wrappers的工作原理


原理说明:
1)TCP_Wrappers有一个TCP协议的守护进程tcpd。用户访问服务器后,会监控到用户的访问。
2)当用户开始访问服务器后tcpd进程会截取用户的请求,通过/etc/hosts.allow「白名单」文件来核实,用户是否允许访问,允许则放行。
3)在/etc/hosts.allow文件中没有记录的转到/etc/hosts.deny「黑名单」文件,检查到访用户是否在本文件中有记录,有则拒绝服务,没有则开始提供服务

配置文件:

文件 理解意义
/etc/hosts.allow 可以理解为电话的白名单,只要在名单上的都可以通过
/etc/hosts.deny 可以理解为电话的黑名单,只要在名单上的都拒绝服务
2.2 配置规则说明

语法规则

daemon_list : client_list [ : shell_command ]daemon_list  单个应用程序的二进制文件名,而不是服务名,如果有多个,用逗号或空格分隔。如:sshd可以绑定服务地址,如,sshd@192.168.7.202:ALLALL表示所有接受tcp_wrapper控制的服务程序支持通配符client_list客户端列表 基于单个IP地址:192.168.10.1  基于网段IP地址:192.168.1. 注意,192.168.1.0这个写法是错误的。 基于主机名:www.hunk.tech .hunk.tech较少用 基于网络/掩码:192.168.0.0/255.255.255.0 基于net/prefixlen: 192.168.1.0/24(仅CentOS7) 基于网络组(NIS 域):@mynetwork 内置ACL:ALL 所有(进程或者主机)LOCAL 名称中不带点的主机KNOWN 可以解析的主机名UNKNOWN 无法解析的主机名PARANOID 正、反向查询不匹配或无法解析支持通配符shell_command执行指令如:sshd:all:spawn echo "`date +%%F-%%T` from %a pid=%p to %s" >> /app/sshd.logEXCEPT是排除的意思,一行规则里可以有多个,后面的是对前面的结果集进行排除。 vsftpd:172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1匹配整个172.16网段,但是把172.16.100的网段排除,在排除172.16.100网段中又把172.16.100.1的IP给排除。spawn 启动一个外部程序完成执行的操作,可以支持内置变量。内置变量请man ,找%的选项%a (%A) 客户端IP%c      客户端信息,可以是IP或主机名(如果能解析)%p      服务器进程信息 (PID)%s      连接的服务端的信息%%      当规则中包含%时,使用双%转义twist 特殊扩展
以指定的命令执行,执行后立即结束该连接。需在spawn之后使用。
2.3 实验使用

2.2.1 实验环境搭建
三台测试机需要可以互相联网通信。


服务器
服务器名称:studyLinux
ip地址:192.168.1.105
··········································
客户机01
客户机名称:client01
IP地址:192.168.1.107
·········································
客户机02
客户机名称:test-linuxStudy
IP地址:192.168.1.109
·········································
服务器端配置规则
准入规则配置文件:/etc/hosts.allow
拒绝规则配置文件:/etc/hosts.deny


实验一:对所有用户开放并记录用户登陆信息到tcpwrappers.log日志中

配置:
在服务器192.168.1.105中使用vim打开文件/etc/hosts.allow文件。加入如下代码

# 允许所有用户使用sshd服务,记录用户的信息到日志/var/log/tcpwrappers.log
sshd@192.168.1.105:ALL:spawn echo "`date +%%FF %%T` from %a to %s" >> /var/log/tcpwappers.log

代码说明:spawn启用外部程序,这里使用了数据重定向,把数据写入自定义的日志文件tcpwrappers.log中,保存在/var/log/目录下
查看当前服务器中是否已经创建了tcpwrappers.log文件


客户端测试
客户端一:192.168.1.107测试

登陆完成可以正常访问
客户端二:192.168.1.109测试

测试服务器系统日志记录

实验二:仅仅允许192.168.1.109登陆,禁止其他设备登陆,并给禁用用户发出提示“禁止连接”

服务器端配置文件
/etc/hosts.allow文件配置

/etc/hosts.deny文件配置

测试机开始测试配置规则
客户机1:(192.168.1.107)----需要的结果是访问被拒绝
测试使用ssh访问192.168.1.105

拒绝规则生效
客户机2(192.168.1.109)—需要的结果是 可以登陆到服务器

总结
通过上面的两个例子我们可以看到。
1)TCP_Wrappers是通过服务在编译时是否编译进去了libwrap库来实现是否允许TCP_Wrappers安全管理控制的。
2)TCP_Wrappers的安全控制是通过,白名单:/etc/hosts.allow 和 黑名单:/etc/hosts.deny 一起来控制的
3)/etc/hosts.allow文件的优先级高于/etc/hosts.deny

三、生产场景中的应用

在实际生产中,通常都是不允许直接连接服务器,服务器通常会指定一个或一个网段的设备可以登陆。通常指定的是同一局域网中的设备。如下图

服务器(服务器1、服务器2)是不会接受外部网络的ssh服务的,它们只会接受内部网络的访问(堡垒机或跳板机)。其中堡垒机会接受远程的ssh访问。运维人员通常都是先登陆堡垒机,然后通过堡垒机登陆服务器,对服务器进行管理。

这样做的原因

我们当前的网络环境,网上安全问题越来越严峻,很有可能你的服务器就正在被其他人在暴力破解,因为需要远程连接服务器,所以最有可能收到的就是ssh暴力破解。
我们可以使用命令lastb
lastb的作用是:列出登陆系统失败的全部用户信息。它会调用/var/log/btmp文件,该文件中记录了所有登陆失败的用户信息,如下图

当该命令显示出的一系列的错误时,很有可能您的服务器正在被不断的攻击中。
我们需要做的就是
1)更改sshd的端口
2)禁用所有对外的sshd服务,使用内网访问,
3)使用shell脚本,解析btmp日志,把同一IP多次登陆失败(notty)的。把它的ip地址写入/etc/hosts.deny中拒绝对它的服务。然后把脚本加入定时任务中,做不间断的检查。
后面会学到

linux学习之路:Tcp_wrappers相关推荐

  1. linux学习之路——ubuntu 16.04 开机开启数字小键盘解决方法

    linux学习之路--ubuntu 16.04 开机开启数字小键盘解决方法 参考文章: (1)linux学习之路--ubuntu 16.04 开机开启数字小键盘解决方法 (2)https://www. ...

  2. Linux学习之路(持续补充中......)

    Linux学习之路 Linux的基础知识 第一章:Linux的概述以及系统安装及使用 第一节:简单了解一下Linux发展历史与历程 Linux是一种自由.开源的类UNIX操作系统. linux 的创始 ...

  3. 高人指点 linux 学习之路

    博客的原创之路艰辛,小女子对创作人心生崇敬,转载是为了起步,从转载开始,过渡到有胆识和见识写自己的话吧,加油! Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为 <linux_de ...

  4. linux 的基本命令格式,Linux学习之路(一)命令基本格式

    据统计Linxu里面能够识别的命令超过3000个,而我们常用的Linux基本命令在60个左右.常用命令是我们必须掌握的命令,需要我们多练习才能记住,最起码要敲3遍以上. 简单的把常用命令分为以下几大类 ...

  5. Linux学习之路01

    决心开始学习自学Linux,以前混迹贴吧,现在觉得自己开始写一下博客,记录一下自己的学习之路,同时也是希望自己算是自己自学动手练习的记录吧. -- 题序 登录SSH服务 新建一个hello.c文件 # ...

  6. linux 学习之路

    很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...

  7. 我的Linux学习之路及参考书籍

    学习目的 很简单的考虑,最近在各大招聘网站上找工作,发现多数c/c++开发职位都需要Linux开发经验,让我很苦恼,因为Linux我到目前为止知之甚少,知道Linux的概念,也在大学期间了解过一段时间 ...

  8. 我的Linux学习之路(纯小白)

    说在前面:感激赏识我的人们,谢谢你带我入门~~~~满怀感恩,出发~~~ 第一部分:学习资料(书籍和B站上的Linux视频) 目前在看的几本Linux书籍: 1.Linux就该这么学-刘遄 网址:htt ...

  9. PHP开发者的Linux学习之路

    谈起一个高效动态网站的构建,那就不得不提到LAMP,即Linux操作系统.Apache网络服务器.Mysql数据库.Perl.PHP或Python编程语言等开源产品所组成的网站架构框架,其最大的优势是 ...

最新文章

  1. NOIP2018 集训(一)
  2. java 连接 pgsql
  3. 读书笔记|如何让用户为你的产品尖叫
  4. HDU 2757 Ocean Currents
  5. c语言元素插入数组并排序,一数组按顺序序存放,插入一个数,按原来排序规律放在相应位置...
  6. Bootstrap HTML 编码规范之实用为王
  7. [leetcode]174. 地下城游戏
  8. 湖北移动中兴B860AV2.1_S905L_线刷固件包
  9. Qt-高分辨率drawImage模糊问题
  10. 中国第一代技术网红,阿里云P10技术专家褚霸:我只是一个程序员 。
  11. 浏览器扩展插件:「油猴」使用详解 ( Tampermonkey )
  12. k8s的优势和部署模式
  13. 免费好用的图片压缩网站,有这五个就够了(收藏备用)
  14. python续行_python的续行
  15. QIIME 2 使用总结
  16. 高速USB模式下 UAC2.0
  17. 终于鼓起勇气,辞掉了第一份工作
  18. Android上关于cmwap/cmnet网络切换的疑惑?
  19. PDMan使用问题记录
  20. 2012年报刊杂志订阅目录【全面 1900条记录】

热门文章

  1. 一个优秀的公众号运营者需要具备哪些能力?
  2. MSTAR屏幕显示接口类-DIB,IBitmap,IDisplay,IDispCanvas,IFont,IImage等
  3. pythonflask教程 视频_Python Flask开发入门视频教程下载
  4. AE模板替换-众多图片沿着球体旋转!与您分享
  5. mysql基础笔记(一)
  6. 蓝牙解码格式哪个最好_HiFi级别的蓝牙解码耳放线,浅谈山灵MW200
  7. 美食网站主页java代码,基于jsp的美食网-JavaEE实现美食网 - java项目源码
  8. python双色球-(三)线性回归预测
  9. ubuntu16.04设置静态IP与DNS
  10. Mysql修改密码, Mysql密码修改不生效