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

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  libwrap(print 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

文件语法格式:

daemon_list:  client_list[:options]

[email protected]:  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所有接受控制的服务)

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

client_list举例:

IP

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

HOSTNAME(FQDN、.magedu.com注意前面的点不能少表示是magedu.com这个域)

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

#whatis hosts_access

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

%c(client information,格式[email protected],[email protected])

%s(server information,格式[email protected],[email protected])

%h(client hostname)

%H(server hostname)

%p(The 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

以上是学习《马哥运维课程》做的笔记。

时间: 2024-10-25 03:30:34

Linux运维 第三阶段 (十二)tcp wrapper的相关文章

Linux运维 第三阶段 (二十) tomcat

一.相关概念(1.编程语言:2.servlet.jsp:3.tomcat): tomcat(app-server server) 为提高tomcat工作性能,前端要引入很多组件(如cache server(varnish)同样对它生效) 1.编程语言: php相关框架.网站程序设计涉及到的基本内容: php: 开发语言,脚本语言,动态语言: 安装的php是个运行环境: 用php开发语言开发网站程序,这个程序在运行环境中解释执行,若每条指令都解释执行.每个用户请求的动态内容都解释执行这将非常慢:在

Linux运维 第三阶段 (二) DHCP服务

1.软件包:dhcp: 服务名:主程序dhcpd.中继服务dhcrelay: 端口:udp67.68.546.547: 配置文件:/etc/dhcp/dhcpd.conf         主配置文件 /etc/sysconfig/dhcrelay  中继配置文件 /usr/share/doc/dhcp*/dhcpd.conf.sample      主配置文件模板 2.搭建DHCP 服务端:#yum  -y  install dhcp #cp /usr/share/doc/dhcp*/dhcpd

Linux运维 第三阶段 (三) vsftpd服务

Linux运维 第三阶段 (二) vsftpd服务 1.FTP(filetransfer protocol),以TCP数据包的模式进行服务器与客户端之间的文件传输: 数据连接:TCP20,用于上传下载数据:TCP21,用于发送FTP命令信息: 数据连接的建立类型:主动模式(服务端从20端口主动向客户端发起连接):被动模式(服务端在指定范围内某个端口被动等待客户端连接): FTP的用户类型:匿名用户(anonymous或ftp):本地用户(账号密码等信息保存在/etc/passwd./etc/sh

Linux运维 第三阶段 (十九) varnish(1)

Linux运维 第三阶段 (十九) varnish 一.相关概念: http/1.0-->http/1.1(重大改进:对缓存功能实现了更精细化的设计) RFC(request file comment,每一种协议都有请求注解文档,讲协议规范) http页面由众多的web object组成,有些是静态,有些是通过程序执行后生成的:为加速web的访问,browser中引入了缓存机制,能将访问的静态内容或可缓存的动态内容缓存到本地,而后client再次到原始server上请求之前相同的内容时,如果原始

Linux运维 第三阶段 (十七) memcached

一.相关概念: memcached.org(live journal站点贡献的),很多流行站点都在用,如wikipedia.twitter.youtube.mixi等,memcached是非常流行的缓存服务,众多的应用程序开发基本都支持memcached缓存(C有C库,C++有C++库,php有php库,开发时都可直接调用memcached功能,若某个应用程序开发时不用memcached,它就不能往memcached中缓存数据,缓存数据与否取决于app自身,由app决定缓不缓存用不用它) mem

Linux运维 第三阶段 (六) 搭建LAMP环境

Linux运维 第三阶段(六) 搭建LAMP环境 环境:RHEL6 X386或X86_64,其中64位在此文中已用()标明注意事项. 一.准备工作 1.安装编译工具gcc.gcc-c++ 注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源-- # yum -y install gcc # yum -y install gcc-c++ 2.关闭系统RPM安装包的Apache.MySQL的服务 关闭启动的服务httpd.mysqld #service httpd stop #

Linux运维 第三阶段 (十三)nss&pam

Linux运维第三阶段(十三)nss&pam 一.nss(network service switch网络服务转换) authentication(认证,决定用户的用户名和密码是否能通过检验) authorization(授权,决定用户是否能访问某服务) audition(审计) username-->UID groupname-->GID http-->80port FQDN-->IP(hosts文件,DNS,mysql,NIS(networkinformation se

Linux运维 第三阶段 (十一)iptables

Linux运维第三阶段(十一)iptables iptables linux防火墙:netfilter(框架framework):iptables(生成防火墙规则并将其附加在netfilter上,真正实现数据报文过滤.NAT.mangle等规则生成的工具):真正起作用的是规则,规则放在netfilter上才能生效 网络防火墙的功能根据TCP/IP首部实现的 IP报文(见文末附图): fragment ID(段标识) MF(more fragment) DF(don't fragment,单个报文

Linux运维 第三阶段 (七) NFS

Linux运维 第三阶段 (七) NFS配置 1,服务器端软件:安装nfs-utils和portmap(rpcbind)nfs-utils: 提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件 portmap: NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的.通俗的说PortMap就是用来做PORT的mapping 的.NFS需要