Linux运维 第三阶段 (十二)tcp wrapper

本文涉及的产品
访问控制,不限时长
简介:

tcp wrapper

tcp wrapper(工作在TCP层的访问控制工具,通常只对TCP协议的应用做控制,它本身只是个库文件libwrap.so(由glibc提供))

当来自客户端的请求访问本机服务时,请求先到达本机网卡,再到内核TCP/IP协议栈,路由发现是访问本机的,转至用户空间服务所监听的套接字上,服务响应送至内核TCP/IP协议栈,再通过路由经网卡返回至客户端;有了tcp wrapper后,在这过程当中附加了一层访问控制机制,由tcp wrapper检查用户访问的请求是否允许,若允许则交至用户空间服务,否则在tcp wrapper上就拒绝无法到达用户空间服务,可理解为tcp wrapper工作在用户请求和服务所监听的套接字之间的一种检查过滤机制,可实现拦截对某种特定服务的访问请求,根据事先定义的规则决定是否允许访问指定服务

某一应用程序在开发时,开发者在程序里提供一个调用接口,从而能够调用libwrap.so这个库的话,那这个程序就受tcp wrapper访问控制,否则不受其控制

 

#ldd `which  sshd`  | grep  libwrapprint sharedlibrary dependencies,检查某一程序是否受tcp wrapper控制,查看是否有libwrap.so.0这个动态链接库文件)

libwrap.so.0 => /lib/libwrap.so.0(0x00c7a000)

注:编译某一程序时,可以将某些库文件直接编译进程序当中去(静态编译,静态链接),但这样会使得程序体积过于庞大,所以很多应用程序通常都是动态链接

 

#ldd `which  xinetd`  | grep  libwrap

 

#ldd `which  portmap`  | grep  libwrap(虽没查到,但它受tcpwrapper控制,因为它已将libwrap.so库文件静态编译进程序portmap里了)

#strings $(ldd  `which  portmap`) | grep  hosts

/etc/hosts.allow,/etc/hosts.deny(这两个文件至关重要,tcpwrapper就是根据这两个文件来定义某些特定服务能被哪些主机访问控制的)

 

检查顺序:先查/etc/hosts.allow,若有匹配则通过OK;若无匹配,则查/etc/hosts.deny,有匹配则禁止访问设定的服务,若仍无匹配则按默认法则通过allow

wKiom1Y7CAagdLjcAABPV3zmMZg915.jpg

文件语法格式:

daemon_list:  client_list[:options]

daemon@host:  client_list

 

daemon_list举例:

sshd: 192.168.0.daemon_list是可执行程序的名字,如sshd,vsftpd,in.telnetd,是#rpm  -ql telnet-server查询到的/usr/sbin/in.telnetd

ALL: 192.168.0.ALL是宏,表示tcp wrapper所有接受控制的服务)

vsftpd@192.168.0.11:  1.(表示在192.168.0.11主机上的vsftpd服务,仅允许1.0.0.0网段的主机访问

 

client_list举例:

IP

NETWORK ADDRESSNETWORK/MASK,注意MASK不能写成完整长度格式,如1.0.0.0/255.0.0.0;只能用短格式,简写如1.0.0.0/8

HOSTNAMEFQDN.magedu.com注意前面的点不能少表示是magedu.com这个域)

MACRO(宏,ALL表示所有,LOCAL表示与本地主机在同一网段的主机,KNOWS表示主机名可正常解析,UNKNOWN表示主机名不能解析,PARANOID表示正反向解析无法匹配)

 

#whatis hosts_access

#man 5  hosts_access(查看支持的宏)

%cclient information,格式user@host,user@address

%sserver information,格式daemon@host,daemon@address

%hclient hostname

%Hserver hostname

%pThe daemon processid

 

举例:sshd仅允许172.16.0.0/16访问

#vim /etc/hosts.allow

sshd: 172.16.

#vim /etc/hosts.deny

sshd: ALL

 

举例:telnet服务不允许172.16.0.0/16访问,但允许172.16.100.200访问,其它客户端不作控制

方法一:

#vim /etc/hosts.allow

in.telnetd: 172.16.100.200

#vim /etc/hosts.deny

in.telnetd: 172.16.

方法二:

#vim /etc/hosts.deny

in.telnetd: 172.16.  EXCEPT  172.16.100.200

方法三:

#vim /etc/hosts.allow

in.telnetd: ALL  EXCEPT  172.16. EXCEPT  172.16.100.200

#vim /etc/hosts.deny

in.telnetd: ALL

 

举例:client_list[:options]

#vim /etc/hosts.allow

in.telnetd: 172.16.  :DENY(禁止172.16.0.0/16访问telnet,在allow文件中写:DENY,也可在deny文件中写:ALLOW

#vim /etc/hosts.allow

in.telnetd: 172.16.  :SPAWN  echo  “`date`Login attempt from %c to %s” >>  /var/log/tcpwrapper.log

#vim /etc/hosts.deny

in.telnetd: ALL  :SPAWN  echo  “`date`  Login attempt from %h”  >> /var/log/tcpwrapper.log

 

 

本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1710045,如需转载请自行联系原作者

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
15天前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
109 3
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
172 3
|
3月前
|
运维 监控 网络协议
|
2月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
2月前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
70 3
|
3月前
|
存储 运维 搜索推荐
|
3月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
93 1
|
3月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
66 0
Linux C/C++之TCP / UDP通信
|
3月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
61 1
|
3月前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
193 1

热门文章

最新文章