hosts.allow和hosts.deny文件
之前想通过外部主机访问自己主机上的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文件的更多相关文章
- 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作
1.登录主机,如果是普通账户先切换至root账号 su root 2.编缉/etc/hosts.allow文件 vi /etc/hosts.allow 允许内容 书写格式(改成自自需要的IP或IP段) ...
- Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件【转】
就像是 限制特定IP来访 想法 看起来通常的做法是利用hosts的拒绝设置,而它的设置是针对某一个具体的进程,具体的服务,在这里就是sshd了 看起来设置一个网段使用的是 x.x.x.0/24 后面加 ...
- hosts.allow和hosts.deny
/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务. 比如SSH服务,我们通常只对管理 ...
- 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 ...
- 使用hosts.allow和hosts.deny实现简单的防火墙
说明:我建议学习防火墙只单一学习一种就够了,这种方式虽然简单和快速,但也有些不太灵活,所以如果要深入防火墙建议转iptables 一.背景简介 在Linux上多用iptables来限制ssh和tel ...
- hosts.allow、hosts.deny无效查看服务是否支持tcp_Wrappers
通过配置hosts.allow.hosts.deny,控制SSH限制固定IP登陆 按照以往的方法,分别在hosts.allow.hosts.deny加入以下配置 # more /etc/hosts.a ...
- hosts.allow和hosts.deny支持哪些服务
一.背景简介 在linux上多用iptables来限制ssh和telnet,编缉hosts.allow和hosts.deny感觉比较麻烦比较少用. aix没有iptables且和linux有诸多不同, ...
- 提高Linux安全性--hosts.allow, hosts.deny 文件修改方法
有一种办法来提高Linux安全性--修改 hosts.allow , hosts.deny 这2个文件来配置 允许某个ip访问, 或者禁止访问. 可以通过这种方式设置限制 sshd 的远程访问, 只允 ...
- 最新hosts,更新hosts,可用
点击这里,全选后复制,粘贴到C:\Windows\System32\drivers\etc的hosts里面,把原来的置换了
随机推荐
- Spring注解驱动开发之AOP
前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...
- pycharm一些快捷键(不定时添加)
ctrl + shift + - 缩减多级菜单 ctrl + shifit + + 展开多级菜单 ctrl + shift + F8 删除多个断点 两个项目比较 ---选中要比较的项目---右键找 ...
- 短视频SDK超级简单易用
超级简单易用的短视频SDK来自RDSDK.COM.锐动天地为开发者提供短视频编辑.视频直播.特效.录屏.编解码.视频转换,等多种解决方案,涵盖PC.iOS.Android多平台.以市场为导向,不断打磨 ...
- Apache Tomcat 之路(一 基本概念)
关于apache tomcat 基本概念(https://tomcat.apache.org/tomcat-7.0-doc/index.html) 1.tomcat 是servlet/jsp 容器,对 ...
- js 和 java 将时间倒计时显示
需求:用户购买产品,创建了一个订单,但是还么有支付,此时给用户三十分钟剩余支付时间,前台页面做倒计时功能,时间到达时,更改订单状态 ,输出的格式是:29:23 java 实现 package com. ...
- fatal: Authentication failed for 问题解决
执行以下code git config --system --unset credential.helper 参考地址: https://www.jianshu.com/p/8a7f257e07b8
- 【C++】类型转换简述:四种类型转换方式的说明及应用
本文主要简述在C++中四种类型转换的方式:static_cast.reniterpret_cast.const_cast和dynamic_cast. 在介绍C++类型转换方式之前,我们先来看看C语言的 ...
- vue2.0 动态切换组件
组件标签是Vue框架自定义的标签,它的用途就是可以动态绑定我们的组件,根据数据的不同更换不同的组件. <!DOCTYPE html> <html lang="en" ...
- 迅为7寸工业触摸屏嵌入式平台可用于ARM嵌入式一体机
7寸触摸屏介绍产品名称:7寸IPS高清屏幕分辨率:1280*800触摸屏类型:电容屏(五点触摸)接线方式: FPC 可应用于嵌入式一体机.自动售货机.广告机.智能自动终端.零售终端等 ARM平台处理器 ...
- Android(java)学习笔记192:ContentProvider使用之虚拟短信
1.虚拟短信应用场景: 急着脱身?应付老婆(老公.男女朋友查岗)? 使用虚拟通话短信吧.您只需通过简单设置,软件就会在指定时间会模拟一个“真实”来电或短信来迷惑对方,通过“真实”的证据让对方相 ...