前言:来CU已经两年多了,在这里认识了许多高手,学到了许多知识,最初吸引我到这个地方的就是现在这个版块最近一段时间感觉比较冷清,所以写了这些东西,希望大家喜欢哦。
1. Tcp Wapper基础知识介绍
Tcp_Wapper是在 Solaris, HP_UX以及 Linux中广泛流行的免费软件。它被设计为一个介于外来服务请求和系统服务回应的中间处理软件。最常见的用法是与inetd一起使用。当Inetd接收到一个外来服务请求的时候,并不是直接调用,而是调用TCP Wrapper(可执行文件tcpd),TCP Wrapper根据这个所请求的服务和针对这个服务所定制的存取控制规则来判断对方是否有使用这个服务的权限,如果有,TCP Wrapper将该请求按照配置文件定义的规则转交给相应的守护进程去处理同时记录这个请求动作,然后自己就等待下一个请求的处理。
TCP Wrapper机制的主要目的在于,来自客户端的请求只被允许同一个独立的守护进程(xinetd)直接通信,而它请求的目标服务被TCP Wrapper包裹起来,这样就提高了系统的安全性和系统管理的方便性。Tcp wrapper随着应用逐渐成为一种标准的Unix安全工具,成为unix守护程序inetd的一个插件。通过Tcp wrapper,管理员可以设置对inetd提供的各种服务进行监控和过滤,以保证系统的安全性。
2. Tcp Wapper源码获取、编译与安装
由于它已经在Solaris, HP_UX以及 Linux中泛使用,而在Tru 64上使用的很少,所以在这里给大家做一个详细介绍,我机器的操作系统版本为:tru 64 4.0F
(1)下载源码地址:
ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz
(2)解压缩
#gunzip tcp_wrappers_7.6.tar.gz
#tar xvf tcp_wrappers_7.6.tar
(3)编译源码程序
# make REAL_DAEMON_DIR=/usr/sbin hpux
最后一个参数是hpux,你可以根据你的操作系统来做调整,这里由于没有DEC的我就使用这个替代了。接着将生成的几个主要文件拷贝到相应的系统目录下。
#cp tcpd /usr/sbin
#cp safe_finger /usr/sbin
#cp tcpdchk /usr/sbin
#cp tcpdmatch /usr/sbin
#cp try-from /usr/sbin
#cp hosts_access.3 /usr/man/man3
#cp hosts_access.5 /usr/man/man5
#cp hosts_options.5 /usr/man/man5
#cp tcpd.8 /usr/man/man8
#cp tcpdchk.8 /usr/man/man8
#cp tcpdmatch.8 /usr/man/man8
#cp libwrap.a /usr/lib
#cp tcpd.h /usr/include
其中:
(1)tcpd是所有internet服务的主要访问控制守护进程,运行 inetd 或 xinetd 而不是运行单独的服务守护进程时要用到它。
(2)tcpdchk 一个检查 tcpd wrapper 设置和提供错误信息。
(3)tcpdmatch 用来预知 tcp wrapper 如何控制一个服务的特殊请求。
(4)try-from可以通过远程shell命令找出主机名字和地址是不是正确的。
(5)safe_finger 是finger工具的 wrapper ,提供自动的主机名反向查找。
3、如何将服务纳入管控状态
大家知道inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。如果我们要想将telnet、ftp 交由tcpd管控,需要修改/etc/inetd.conf。
修改前为:
ftp stream tcp nowait root /usr/sbin/ftpd ftpd
telnet stream tcp nowait root /usr/sbin/telnetd telnetd
修改后为:
ftp stream tcp nowait root /usr/sbin/tcpd ftpd
telnet stream tcp nowait root /usr/sbin/tcpd telnetd
请记着修改完后要重新启动process
#vi /etc/inetd.conf
#ps –ef | grep inetd
#kill –HUP $process_ID
4、使用TCP Wrappers限制访问的配置
为了配置TCP wrappers,用户需要在两个文件里接受或拒绝连接的标准:/etc/hosts.allow和/etc/hosts.dent。前一个文件定义计算机允许的访问,后一个文件指定应该拒绝的连接。如果某个系统同时出现在两个文件里,hosts.allow是优先的。如果某个系统没有出现在任何一个文件里,TCP Wrappers会允许它进行连接。另外,如果运行最严格的TCP Wrappers安全,用户可以在/etc/hosts.deny文件力包含一行“ALL:ALL”,它会禁止所有由TCP Wrappers处理的输入访问。然后用户就可以在/etc/hosts.allow里为特定客户程序打开服务程序的端口。
/etc/hosts.allow和/etc/hosts.deny的格式是完全一样的,当然同样的项目在两个文件中具有相反的作用。这些项目的基本格式是:
Service-names :client-list [:shell-command]
请看如下两个文件
# vi /etc/hosts.deny
all:all
(注:禁止所有TCP Wrappers处理的输入访问)
# vi /etc/hosts.allow
telnetd:10.65.69.157 10.65.70.
ftpd: 10.65.69. EXCEPT 10.65.69.1
(注: Telnet telnetd行告诉TCP wrappers接受来自于10.65.69.157机器及10.65.60.0/24网段的telnet连接.
Ftp ftpd告诉TCP wrappers接受来自于10.65.690/24网段中除10.65.69.1之外的所有计算机的FTP连接。也许10.65.69.1是路游器或其他不应该做FTP客户端的主机),修改这两个文件不用重新启动xinetd进程的,会直接生效的。)
5、检测的方法
检测tcp_wrapper 是否正常work
(1)#./tcpdchk –v
Using network configuration file: /etc/inetd.conf
>>> Rule /etc/hosts.allow line 1:
daemons: telnetd
clients: 10.65.69.157 10.65.70.
access: granted
>>> Rule /etc/hosts.allow line 2:
daemons: ftpd
clients: 10.65.69. EXCEPT 10.65.69.1
access: granted
>>> Rule /etc/hosts.deny line 1:
daemons: ALL
clients: ALL
access: denied
(2)# tcpdmatch telnetd 10.65.69.157
client: address 10.65.69.157
server: process telnetd
matched: /etc/hosts.deny line 1
access: denied
(3)# tcpdmatch telnetd 10.65.69.199
client: address 10.65.69.199
server: process telnetd
matched: /etc/hosts.deny line 1
access: denied
6、结束语
上面介绍只是TCP Wrapper一些简单功能,它还提供了有许多其它特性,有些特性能够实现十分精细的效果,因此,有这方面需求的网友,应该仔细查看关于TCP Wappers控制文件格式的官方文档来实现自己的功能,以保证系统的安全。上面这些是我在4.0f系统上已经实验过的例子,希望对喜欢的网友提供帮助,同时如果有什么错误,请指出和大家一起探讨。
hosts.deny 設定:
sshd: ALL EXCEPT 10.65.69.157 10.65.69.156
参考
文章来源于领测软件测试网 https://www.ltesting.net/