之前想通过外部主机访问自己主机上的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. Kali linux 2016.2(Rolling)里安装中文输入法

    写在前面的话 关于中文输入法,实在是有太多了.当然,你也不可以不安装,(安装了增强工具即可),在windows 里输入中文,复制进去即可. 但是呢,想成为高手,还是要学会安装和使用各版本的中文输入法. ...

  2. SpringBoot 2.x (2):请求和传参

    其实请求和传参这些知识属于SpringMVC 不过这也属于必须掌握的知识,巩固基础吧 GET请求: 以第一篇文章自动的方式创建SpringBoot项目: 然后新建Controller: package ...

  3. WPF 实时绘图的逻辑

    实时绘图实际上是两个线程.外部线程直接用thread,只有到绘图那个逻辑才用绘图控件的mycanvas2.Dispatcher.Invoke. 或者说,INVOKE并不是开线程,只是一个绘图的委托而已 ...

  4. wordpress在撰写新文章界面的显示选项按钮点击无反应的解决办法

    原文链接:wordpress在撰写新文章界面的显示选项按钮点击无反应的解决办法 最近升级wordpress之后,发现在文章编辑界面的添加新媒体和可视化按钮点击无反应,如下:  然后就在网上找解决办法, ...

  5. spring framework 第一章数据库管理(data access)

    spring data access 的网址:https://docs.spring.io/spring/docs/current/spring-framework-reference/index.h ...

  6. PostgreSQL学习手册(五) 函数和操作符

    PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:    常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:    下面是Post ...

  7. bat批处理如何删除本地策略里的用户权限分配中的拒绝从网络访问本机项的guest用户?

    echo [Version]>mm.inf echo signature="$CHICAGO$">>mm.inf echo Revision=1>>m ...

  8. ALTER TRIGGER - 修改一个触发器的定义

    SYNOPSIS ALTER TRIGGER name ON table RENAME TO newname DESCRIPTION 描述 ALTER TRIGGER 改变一个现有触发器的属性. RE ...

  9. 谈谈JVM垃圾回收机制及垃圾回收算法

    一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理.由于有个垃圾回收机制 ...

  10. springboot实现web应用过程中的摸爬打滚(持续更新ing)

    最近在做公司的网站项目,后端用到springboot.怎么说呢,记录总结一下自己开发过程中遇到的坑和一些心得体会,以及一些技巧.方便以后回顾复习,也供同行们参考. 开发环境:eclipse2018-1 ...