本意内容

  • TCP_Wrappers介绍
    • TCP_Wrappers的使用
    • 基本语法:
    • 测试工具:
  • 实验:

TCP_Wrappers介绍

作者:Wieste Venema,IBM,Google
工作在第四层(传输层)的TCP协议
对有状态连接的特定服务进行安全检测并实现访问控制
以库文件形式实现

  • 某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的
  • 判断服务程序是否能够由tcp_wrapper进行访问控制的方法:
    ldd /PATH/TO/PROGRAM|grep libwrap.so

TCP_Wrappers的使用

  • 配置文件:
    /etc/hosts.allow中添加,允许登录,并记录日志
    /etc/hosts.deny中添加,拒绝登录,并记录日志
  • 帮助参考:man 5 hosts_accessman 5 hosts_options
  • 检查顺序:hosts.allowhosts.deny(默认允许)
    注意:一旦前面规则匹配,直接生效,将不再继续

基本语法:

Daemon_list@Host: Client_list [ :Options :Option… ]

  1. 先来看看一些简单的示例(注意修改的哪个文件):
#允许192.168.1.0/24的主机访问sshd
[root]$ vim /etc/hosts.allowsshd: 192.168.1.#拒绝所有访问
[root]$ vim /etc/hosts.denysshd: ALL#仅仅仅仅允许192.168.1.0/24的主机访问sshd
[root]$ vim /etc/hosts.allowsshd: 192.168.1.
[root]$ vim /etc/hosts.denysshd: ALL#禁止192.168.1.0/24的主机访问telnet和vsftpd服务
[root]$ vim /etc/hosts.allowvsftpd,in.telnetd: 192.168.1.

Daemon_list@Host: Client_list [ :Options :Option… ]

  1. Daemon_list@Host格式

    1. 单个应用程序的二进制文件名,而非服务名,例如vsftpd
    2. 以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd
    3. ALL表示所有接受tcp_wrapper控制的服务程序
      主机有多个IP,可用@hostIP来实现控制
      如:in.telnetd@192.168.0.254
  2. Client_list格式(以逗号或空格分隔的客户端列表)

    1. 基于IP地址:192.168.10.1
    2. 网络地址:192.168.1.  #相当于192.168.1.0/24(CentOS7)
    3. 基于网络/掩码:192.168.0.0/255.255.255.0
    4. 基于主机名:www.magedu.com .magedu.com 较少用
    5. 基于网络组(NIS域):@mynetwork
    6. 内置变量:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID
  3. [:options]选项:

    • 帮助:man 5 hosts_options
    • deny 主要用在/etc/hosts.allow定义“拒绝”规则
      如:vsftpd: 172.16. :deny
    • allow 主要用在/etc/hosts.deny定义“允许”规则
      如:vsftpd:172.16. :allow
    • spawn 启动一个外部程序完成执行的操作
    • twist 实际动作是拒绝访问,使用指定操作替换当前服务,标准输出和ERROR发送到客户端,默认至/dev/null
    • EXCEPT用法示例:排除某些内容
#禁止172.16.0.0/16网络访问我,排除172.16.100.0/24和172.16.100.1之外
vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1

测试工具:

  • tcpdmatch [-d] daemon[@host] client
    -d 测试当前目录下的hosts.allow和hosts.deny

  • 示例
    sshd: ALL :spawn echo "$(date +%%F) login attempt from %c to %s,%d" >>/var/log/sshd.log

  • 说明:
    %c 客户端信息
    %s 服务器端信息
    %d 服务名
    %p 守护进程的PID
    %% 表示%

vsftpd: 172.16. :twist /bin/echo “connection prohibited”

实战一下

lastb | awk '!/^btmp|^$/{ip[$3]++}END{for(i in ip){if(ip[i]>=4){system("echo sshd:"i">> /etc/hosts.deny")}}}'

实验:

  1. 实验环境
    主机|IP
    -|-
    host A| 172.16.10.10
    host B| 172.16.10.20

  2. 实验之前我们还验证下sshd服务是否依赖libwrap库

ldd /usr/sbin/sshd | grep libwrap

host A

  1. 先来试试host A 能不能连接host B
ssh 172.16.10.20
#连接成功

host B

  1. 编辑配置文件/etc/hosts.deny
[root]$ vim /etc/hosts.deny
sshd:172.16.10.10

host A

  1. 然后hostA再连接hostB,就会被拒绝了,2个IP都不行
ssh 172.16.10.20
#或
ssh 182.168.88.77

host B

  1. 来给host B添加一个ip,再修改下配置文件/etc/hosts.deny,实现对某个地址的访问控制
ip a a 172.16.10.200 dev eth1vim /etc/hosts.denysshd@172.16.10.20:172.16.10.10

  1. 还可以控制多个服务,用逗号隔开
vim /etc/hosts.denysshd,in.telnetd:172.16.10.10
  1. EXPECT的用法,排除内容
sshd:172.16.10. EXCEPT 172.16.10.10

  1. 还有更多的用法
# 禁止172.20.1.开头的所有ip地址
sshd:172.20.1.
#禁止172.20.1.0/24 网段内的所有主机(cnetos7支持此种写法)
ssh:172.20.1.0/24
#禁止172.20.1.0/255.255.255.0网段内的所有地址
ssh:172.20.1.0/255.255.255.0
#禁止所有ip地址
ssh:ALL
#禁止不包含.号的主机名的主机访问
ssh:LOCAL
#禁止所有主机名可以解析的地址
ssh:KNOW
#禁止不能解析的域名主机
ssh:UNKNOW
#禁止域名解析和反解析不匹配的主机
ssh:PARANOID

Linux进阶_TCPWrappers介绍相关推荐

  1. Linux 进阶笔记(二)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  2. Linux 进阶笔记(一)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  3. Linux进阶之路————磁盘查询

    引言 承接<Linux进阶之路----Linux磁盘分区与挂载>,本文介绍实际生产中对于磁盘的监控和查询. 一.查询磁盘整体使用情况 基本语法: df -h 该命令会显示包括我们手动挂载的 ...

  4. Linux进阶之路————组管理与权限管理

    引言 这篇博客将会总结一些关于组的概念和相关操作,以及文件的一些权限管理. 一.组的基本介绍 在前面的博文<Linux进阶之路----用户管理>已经有提到用户组的概念,实际上,组的概念并不 ...

  5. Linux进阶之路————Linux运行级别(重置密码)

    引言 前面的<Linux进阶之路----开机.重启和用户登录注销>已经简单介绍过Linux系统运行级别的概念,今天来详细介绍和总结一下Linux的运行级别. inittab配置文件 在配置 ...

  6. Linux进阶篇--磁盘分区管理

    Linux进阶篇–磁盘分区管理 11.1 磁盘基础介绍 设备文件 * I/O Ports:I/O设备地址 * 设备类型:   块设备:block,存取单位"块",来自于磁盘   字 ...

  7. Linux常用命令介绍及使用

    Linux初级指令 ls --List ls 介绍  这是我学Linux的第一个命令,相信也是很多人学习Linux的第一个命令.ls全称list. List information about the ...

  8. 19.1 Linux监控平台介绍;19.2 zabbix监控介绍;19.3,19.4 安装zabbi

    19.1 Linux监控平台介绍 常见开源监控软件: 1. cacti.nagios.zabbix.smokeping.open-falcon等等 2. cacti.smokeping偏向于基础监控, ...

  9. linux监控平台介绍、zabbix监控介绍、安装zabbix

    linux监控平台介绍 常见开源监控软件 cacti.nagios.zabbix.smokeping.open-falcon 等等. nagios和zabbix流行度很高. cacti.smokepi ...

最新文章

  1. Linux电源管理(10)_autosleep
  2. Antdv日期选择组件国际化问题
  3. vba 定义类_VBA中类的介绍及应用简介
  4. uni-app运行编译报错
  5. JEB 无源码调试 以dvm smali字节码方式,Demo尝试
  6. java中的char类型所占空间
  7. win7未能成功安装驱动服务器,win7插入鼠标提示未能成功安装设备驱动程序的解决办法...
  8. 计算机图片照片查看器为何打不开,电脑看相片时照片查看器打不开怎么办
  9. 智慧云教育平台实战项目笔记
  10. 基于VB2008的winsocket控件网络编程
  11. 齐次线性方程组、齐次方程、齐次多项式
  12. python求极限中有算术平方根如何表达_Python求算数平方根和约数的方法汇总
  13. NginxLua实现WAF防火墙
  14. 2022年湖南省自考考试学前教育幼儿园课程练习题及答案
  15. 用友U8案例教程总账前台操作
  16. Metric评价指标-Embedding Similarity
  17. python3 TypeError: 'map' object is not subscriptable
  18. redis学习--三种特殊数据类型,GEO地理位置,HyperLogLog,BitMap
  19. python发送邮件(一)
  20. 10分钟,我写完了8小时的CSS样式,我真棒!

热门文章

  1. 金三银四:蚂蚁金服面试题及答案之一面(持续更新)
  2. 2020熔化焊接与热切割作业考试题库及熔化焊接与热切割考试试题
  3. VSCode 英文转换成中文显示
  4. mysql com_select_mysql学习一之SELECT语句
  5. 中国省市 插入sql语句
  6. ContentResolver
  7. lda 可以处理中文_LDA主题模型,希拉里邮件门文本分析
  8. android彩蛋长按无反应,Android TextView长按复制功能失效解决办法
  9. mysql修改密码报错问题以及远程工具连接华为云数据库报错问题
  10. 有没有比说“晚安”更华丽的句子?