之前想通过外部主机访问自己主机上的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. JS-表格数据的添加与删除、搜索

    <!doctype html><html><head><meta charset="utf-8"><title>JS练习 ...

  2. Swift 基础语法入门(一)

    一.变量和常量 1.声明常量和变量 用let来声明常量  let radius = 10 用var来声明变量 var age = 20   或者是var x = 0.0, y = 0.0, z = 0 ...

  3. iOS 蓝牙的GameKit用法

    一.连接蓝牙 显示可以连接的蓝牙设备列表 - (IBAction)buildConnect:(id)sender { // 创建弹窗 GKPeerPickerController *ppc = [[G ...

  4. vba,excel,网址提取名字与链接url

    '宏操作 Sub 复制超级链接() '这里控制读取A列的第1到10行,你根据自已的要求修改一下起始和结束行数 ).Hyperlinks.Count > ).Value = Cells(a, ). ...

  5. C++ 引用、指针

    一.引用 1.引用的作用:给变量起一个别名,是c++对c的扩充.原名和别名有相同的地址,根本上就是同一个东西,只是名字不一样.c++的引用机制主要是为了用作函数参数,增强函数传递数据的能力,比如swa ...

  6. redis-3.0.1 sentinel 主从高可用 详细配置

    最近项目上线部署,要求redis作高可用,由于redis cluster还不是特别成熟,就选择了redis sentinel做高可用.redis本身有replication,实现主从备份.结合sent ...

  7. vuex相关的知识

    vue的核心是store,它可以看作是一个容器,它包含着应用中的状态state(state,mutations,actions,getters, modules).它中的存储是响应式的,当store中 ...

  8. ssh设置免秘钥登录

    系统:CentOS7.2 需求:A服务器的fab用户需要使用www用户免秘钥登录到B服务器 换句话说,就是在A服务器的fab用户下,ssh    www@B服务ip   -p  端口  ,然后登录过去 ...

  9. Java C

    先说一下自己叫什么,免得面试的人张冠李戴. 介绍自己有几个方面:1学什么专业的那方面学的过硬,可以说的具体点. 2以前做过什么.(这家公司要你肯定是和你的经历有关.) 3现在来这家公司的目的是什么(当 ...

  10. mac vim设置python语法高亮

    1 "显示行号  2 set nu  3   4 "设置缩进tabstop  5 set ts=4  6 set shiftwidth=4  7 set expandtab  8 ...