之前想通过外部主机访问自己主机上的VMWare虚拟机,使用了VMWare的NAT端口映射,经过一番尝试,算是成功了,总结一下。

  VMWare NAT端口映射就可以将虚拟机上的服务映射成自己主机上的端口,以供外部访问。不过需要主机上的windows系统开放相应的防火墙,windows的资料查起来比较困难,使用价值也不大,所以没有深究,目前直接关闭防火墙,以后有真正的需求再认真研究。

  当然虚拟机上CentOS的防火墙也必须打开,这个好像默认就是打开的(至少sshd的22端口是打开的),然后发现还是访问不了,查了一下资料,需要配置一下/etc/hosts.allow文件。终于到了正题,hosts.allow和hosts.deny,这两个文件是什么?

  CentO系统中提供一个叫TCP Wrapper的机制,是在防火墙之后的一道安全控制屏障,任何访问如果通过不了防火墙,那就没戏,通过了防火墙还得经过TCP Wrapper的考验。详情参考:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/ch-tcpwrappers.html。这里是官方的比较详细的说明。总结起来大该是如下几点:

  1) TCPWrapper只针对系统中的网络服务,比如sshd,sendmail,vsftpd等等(/etc/rc.d/init.d/目录下的服务)。

  2) TCPWrapper由/usr/lib/libwrap.a实现,代码中使用libwrap.a的服务才会启动hosts.allow和hosts.deny。通过strings -f <service-program> | grep hosts_access可以大致确定制定服务是否使用TCPWrapper。

  3) 大概的流程如下图,其中xinetd也是一个网络服务。

    

  4)TCPWrapper只是在建立连接的时候起控制作用,连接一旦建立,TCPWrapper不会再进行干涉。

  为什么有了防火墙还要搞这么个东西,功能感觉防火墙都能做啊有木有。原因我不太懂,但是看了hosts.allow和hosts.deny的规则大概就懂了,其实这是一个更高层次访问控制,就是说防火墙控制太细了,同时也比较麻烦,我本人就不太熟悉防火墙的细节,以前看过一点,根本记不住。但是hosts.allow和hosts.deny这个规则分分钟记住啊。先来个例子:

 

  这个是host.allow里面的东西,意思是a) allow 192.168.171.129访问本机的sshd服务,b)deny 192.168.171.1访问本机的sshd服务,c)allow 192.168.171.1访问本机的sshd服务。意思很清晰,语法也很简单是不是?

  相信很多同学也能看出语法规则,就是<服务名>:<主机描述>:allow/deny。本人对这个语法也只是初步了解,可能有更复杂的用法,这个有兴趣的同学可以参考之前给出的官方文档链接。这里给出以下几点说明,希望对新接触的同学有点帮助。

  1) 服务名是/etc/rc.d/init.d/目录下的网络服务名,而且是服务的执行文件的名字,如sshd。

  2) 主机描述可以比较自由,比如192.168.*.*,还有ALL,大家应该懂是什么意思,我就不描述了。其他很灵活的用法请参考官方文档。

  3) 上面c中没有指出是allow/deny,为什么是allow?没有细看说明,根据我的实验,在hosts.allow中不指定就是默认allow,hosts.deny中默认是deny。

  4) 原则上建议hosts.allow中定义allow规则,hosts.deny中定义deny规则,但是这个不是强制的。可以在hosts.allow中定deny规则,也可以在hosts.deny中定义allow规则。

  5) 规则的优先顺序为先hosts.allow再hosts.deny,每个文件中由上至下,一旦匹配一条规则,则停止匹配。上面的例子192.168.171.1就会被sshd deny掉,因为deny规则在前,allow规则在后。有些资料说先allow规则再deny规则是不对的,估计是英文水平一般,直接翻译的,断章取义害死人啊。

  是不是很简单实用?好了,骚年,赶紧动手试一试吧。

hosts.allow和hosts.deny文件的更多相关文章

  1. 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作

    1.登录主机,如果是普通账户先切换至root账号 su root 2.编缉/etc/hosts.allow文件 vi /etc/hosts.allow 允许内容 书写格式(改成自自需要的IP或IP段) ...

  2. Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件【转】

    就像是 限制特定IP来访 想法 看起来通常的做法是利用hosts的拒绝设置,而它的设置是针对某一个具体的进程,具体的服务,在这里就是sshd了 看起来设置一个网段使用的是 x.x.x.0/24 后面加 ...

  3. hosts.allow和hosts.deny

    /etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务. 比如SSH服务,我们通常只对管理 ...

  4. centos 阶段复习 2015-4-6 dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史 /dev/zero 零发生器 /dev/null 黑洞 /dev/random 生成随机数 第十一节课

    centos 阶段复习 2015-4-6  dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史  /dev/zero 零发生器  /dev/nul ...

  5. 使用hosts.allow和hosts.deny实现简单的防火墙

    说明:我建议学习防火墙只单一学习一种就够了,这种方式虽然简单和快速,但也有些不太灵活,所以如果要深入防火墙建议转iptables  一.背景简介 在Linux上多用iptables来限制ssh和tel ...

  6. hosts.allow、hosts.deny无效查看服务是否支持tcp_Wrappers

    通过配置hosts.allow.hosts.deny,控制SSH限制固定IP登陆 按照以往的方法,分别在hosts.allow.hosts.deny加入以下配置 # more /etc/hosts.a ...

  7. hosts.allow和hosts.deny支持哪些服务

    一.背景简介 在linux上多用iptables来限制ssh和telnet,编缉hosts.allow和hosts.deny感觉比较麻烦比较少用. aix没有iptables且和linux有诸多不同, ...

  8. 提高Linux安全性--hosts.allow, hosts.deny 文件修改方法

    有一种办法来提高Linux安全性--修改 hosts.allow , hosts.deny 这2个文件来配置 允许某个ip访问, 或者禁止访问. 可以通过这种方式设置限制 sshd 的远程访问, 只允 ...

  9. 最新hosts,更新hosts,可用

    点击这里,全选后复制,粘贴到C:\Windows\System32\drivers\etc的hosts里面,把原来的置换了

随机推荐

  1. .NET面试题解析(00)-系列文章索引

    .NET面试题解析(01)-值类型与引用类型 .NET面试题解析(02)-拆箱与装箱 .NET面试题解析(03)-string与字符操作 .NET面试题解析(04)-类型.方法与继承 .NET面试题解 ...

  2. AJPFX分析int 和integer的区别

    int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...

  3. [BZOJ1192][HNOI2006]鬼谷子的钱袋 数学

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1192 大水题,把m分成二的幂次方和. #include<cstdio> #in ...

  4. 面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序. 代码 import java.util.ArrayList ...

  5. R in action读书笔记(8)-第八章:回归(上)

    8.1回归的多面性 8.2 OLS回归 OLS回归拟合模型形式: 为了能够恰当地解释oLs模型的系数,数据必须满足以下统计假设. 口正态性对于固定的自变量值,因变量值成正态分布. 口独立性Yi值之间相 ...

  6. SQL SERVER的数据类型

    1.SQL SERVER的数据类型 数据类弄是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或 ...

  7. Swift - 值类型与引用类型的初步探究

    前言 swift中的结构体和类在组成和功能上具有一定的相似性.两者都可以含有成员属性.成员方法用于数据存储和功能性模块封装.往往造成不知如何对二者进行区分和使用 值类型概念和引用类型概念 值类型的概念 ...

  8. discuz 插件核心函数hookscript分析.

    function hookscript($script, $hscript, $type = 'funcs', $param = array(), $func = '', $scriptextra = ...

  9. 两个自动配置IPv4

    今天一早过来发现网络连接不上了,ipconfig一下后,发现ip并不是我固定配置的ip地址,而是变成了一个完全不一样的ip,点击本地连接,点击详细信息,发现有两个自动配置IPv4,原因可能是ip地址冲 ...

  10. 手机端打开调试工具,模拟console.log

    将下列代码考入需要调试页面即可 <script src="//cdn.jsdelivr.net/npm/eruda"></script> <scrip ...